build-once run-anywhere c library

Cosmopolitan Honeybadger

Cosmopolitan

Cosmopolitan Libc makes C a build-once run-anywhere language, like Java, except it doesn't need an interpreter or virtual machine. Instead, it reconfigures stock GCC and Clang to output a POSIX-approved polyglot format that runs natively on Linux + Mac + Windows + FreeBSD + OpenBSD + NetBSD + BIOS with the best possible performance and the tiniest footprint imaginable.

Background

For an introduction to this project, please read the αcτµαlly pδrταblε εxεcµταblε blog post and cosmopolitan libc website. We also have API documentation.

Getting Started

If you're doing your development work on Linux or BSD then you need just five files to get started. Here's what you do on Linux:

wget https://justine.lol/cosmopolitan/cosmopolitan-amalgamation-1.0.zip
unzip cosmopolitan-amalgamation-1.0.zip
printf 'main() { printf("hello world\\n"); }\n' >hello.c
gcc -g -Os -static -nostdlib -nostdinc -fno-pie -no-pie -mno-red-zone \
  -fno-omit-frame-pointer -pg -mnop-mcount \
  -o hello.com.dbg hello.c -fuse-ld=bfd -Wl,-T,ape.lds \
  -include cosmopolitan.h crt.o ape.o cosmopolitan.a
objcopy -S -O binary hello.com.dbg hello.com

You now have a portable program. Please note that your APE binary will assimilate itself as a conventional resident of your platform after the first run, so it can be fast and efficient for subsequent executions.

./hello.com
bash -c './hello.com'  # zsh/fish workaround (we upstreamed patches)

So if you intend to copy the binary to Windows or Mac then please do that before you run it, not after.

MacOS

If you're developing on MacOS you can install the GNU compiler collection for x86_64-elf via homebrew:

brew install x86_64-elf-gcc

Then in the above scripts just replace gcc and objcopy with x86_64-elf-gcc and x86_64-elf-objcopy to compile your APE binary.

Windows

If you're developing on Windows then you need to download an x86_64-pc-linux-gnu toolchain beforehand. See the Compiling on Windows tutorial. It's needed because the ELF object format is what makes universal binaries possible.

Source Builds

Cosmopolitan can be compiled from source on any Linux distro. GNU make needs to be installed beforehand. This is a freestanding hermetic repository that bootstraps using a vendored static gcc9 executable. No further dependencies are required.

wget https://justine.lol/cosmopolitan/cosmopolitan-1.0.tar.gz
tar xf cosmopolitan-1.0.tar.gz  # see releases page
cd cosmopolitan
make -j16
o//examples/hello.com
find o -name \*.com | xargs ls -rShal | less

Support Vector

Platform Min Version Circa
AMD K8 Venus 2005
Intel Core 2006
New Technology Vista 2006
GNU/Systemd 2.6.18 2007
XNU's Not UNIX! 15.6 2018
FreeBSD 12 2018
OpenBSD 6.4 2018
NetBSD 9.1 2020
GNU Make 4.0 2015
Comments
  • Redbean dynamic serving language

    Redbean dynamic serving language

    (Based on the author's note in https://github.com/jart/cosmopolitan/issues/95#issuecomment-788605775, opened a separate ticket)

    • For default index file
    • For some redirection (say, old URL to new URL with 301 or 302)
    • For hiding extension (say, to avoid .html. Preferably GitHub pages approaches for handling static files)
    • For hiding server signature
  • Compiling Lua

    Compiling Lua

    I thought it might be fun to compile a portable version of a language which has C source code.
    I picked Lua, and I eventually got it to compile and run on Windows/Linux.

    I thought some of the compilation errors might be useful info:

    • The following functions/macros in the Lua source clashed names with those in cosmopolitan.h: panic, reverse and isempty.
    • strcoll, tanh, sinh, and cosh are unimplemented (leads to linker error)
    • UCHAR_MAX in limits.h of the C stdlib is not defined even though SCHAR_MAX is
    • Maybe similar to #58, but floats don't print in the portable Lua console
  • Get cosmopolitation working on Vista again

    Get cosmopolitation working on Vista again

    Ideally the fixed size array would be removed on Vista/7 as well but I am not entirely sure how. If it's truly related to older versions of Windows having smaller virtual address spaces then perhaps using a smaller address would be enough.

  • Cannot build it with lots of cores.

    Cannot build it with lots of cores.

    I've been trying and failing to build cosmopolitan under Devuan Chimaera, which is a Debian based Linux distribution without systemd. I do notice that you keep mentioning GNU/systemd instead of Linux, I was thinking that was some sort of joke, but maybe my problem is the lack of systemd?

    I have tried git head, and the source tarball, same result.

    make -j1 -O
    ♥cosmo
    error: clone(0) failed EAGAIN/11/Try again
    
    `make MODE= -j128 o//depend` exited with 1:
    build/bootstrap/mkdeps.com -o o//depend -r o// @o//srcs.txt @o//hdrs.txt @o//incs.txt
    consumed 561µs wall time
    ballooned to 160kb in size
    needed 523us cpu (0% kernel)
    caused 18 page faults (100% memcpy)
    
    x86_64-linux-musl-gcc: fatal error: cannot execute '/media/DATA/home/dvs1/src/APE_Cosmo_STUFFS/cosmopolitan_ORIGINAL_BUILD/o/third_party/gcc/bin/../libexec/gcc/x86_64-linux-musl/9.2.0/cc1': vfork: Resource temporarily unavailable
    compilation terminated.
    
    `make MODE= -j128 o/ape/config.h.ok` exited with 1:
    o/third_party/gcc/bin/x86_64-linux-musl-gcc -S -Wall -Werror -fdebug-prefix-map=/media/DATA/home/dvs1/src/APE_Cosmo_STUFFS/cosmopolitan_ORIGINAL_BUILD= -frecord-gcc-switches -fno-schedule-insns2 -fno-optimize-sibling-calls -mno-omit-leaf-frame-pointer -DSYSDEBUG -Og -DCOSMO -DMODE="" -DIMAGE_BASE_VIRTUAL=0x400000 -nostdinc -iquote. -includelibc/integral/normalize.inc -msse3 -fno-math-errno -fno-trapping-math -fno-fp-int-builtin-inexact -fno-ident -fno-common -fno-gnu-unique -fstrict-aliasing -fstrict-overflow -fno-semantic-interposition -std=gnu2x -xc -g0 -o o/ape/config.h.ok ape/config.h -fdiagnostics-color=always -pg -D__PG__ -mno-red-zone -D__MNO_RED_ZONE__ -fno-omit-frame-pointer -D__FNO_OMIT_FRAME_POINTER__
    consumed 15,001,251µs wall time
    ballooned to 1,148kb in size
    needed 884us cpu (0% kernel)
    caused 49 page faults (100% memcpy)
    5 context switches (100% consensual)
    
    make: *** [build/rules.mk:32: o/ape/config.h.ok] Error 1
    

    The number of "vfork: Resource temporarily unavailable" sections I get depends on how many -jx I use. Despite giving specific -jx, there's always the "make MODE= -j128". Yes I have a Ryzen Threadripper with 64 cores, so CPU counting ends up at 128. Do I have too many cores, and something is tripping up on that? It seems to be running out of cores. lol

    I notice there's no way of building completely from source, otherwise I would hack away at the source code until it worked, but the build system tries to use it's own pre compiled build tools that come with the source code, and it's this build system binary blob that is failing. So I can't fix this myself with out lots of work essentially rebuilding things from the ground up one step at a time.

    Redbean worked fine, which is the thing that attracted me to cosmo in the first place. I want to try redbean out as the basis for my OpenSim rewrite (3D virtual world metaverse that has been around for over a decade).

  • Added _multiprocessing C extension to stdlib

    Added _multiprocessing C extension to stdlib

    Also moved PYTHON_YOINK of email and encodings.idna so that http.server would work in MODE=tiny. (If tree-shaking for Python stdlib is possible, then the above change will be handled during the build process).

    Should the PYTHON_YOINKs be somewhere else than python.c?

    Many stdlib components have X.py and _X.c (locale, multiprocessing, sqlite for example) so it may be better to add PYTHON_YOINK("sqlite.py") to _sqlite.c and then skip adding sqlite3.pyc if _sqlite3 is not compiled.

  • Implemented missing socketpair

    Implemented missing socketpair

    Added the missing implementation of socketpair(). Since Win32 doesn't have socketpair (as far as I know), I have implemented a simple wrapper that creates two individual sockets, set them in non-blocking mode and connects them together. sysv implementation simply calls into sys_socketpair() that was already implemented.

  • Add support for VGA console output in bare metal mode

    Add support for VGA console output in bare metal mode

    I have added (as of https://github.com/tkchia/cosmopolitan/commit/c42c607c80c2920b585ee1a65a9c66ec68acd609) some very rough and preliminary support for console output to the VGA screen — in addition to the serial port — when in bare metal mode.

    I hope to improve on it further, e.g.:

    • [x] ensure that the screen in a known mode (text or graphics), at rlinit time (rather than simply assuming that the screen is in the classical 80 × 25 × 16 text mode, with a text buffer at address 0xb8000); (✓ https://github.com/tkchia/cosmopolitan/pull/588/commits/aeacc4239dc14b9adfaa7be80bde9a6f4711f7f8)
    • [ ] ~~switch to using a font embedded in the program, rather than rely on the BIOS's CP437 font;~~
    • [x] handle UTF-8 multi-byte characters; (✓ https://github.com/tkchia/cosmopolitan/pull/588/commits/d4d24482ce0a7b79a4dc4439024198c323fbb975)
    • [x] handle VT102 escape sequences; (✓ https://github.com/tkchia/cosmopolitan/pull/588/commits/d4d24482ce0a7b79a4dc4439024198c323fbb975)
    • [ ] ~~maybe handle the BEL ('\a') character code.~~
  • binfmt_misc tuning can break ape

    binfmt_misc tuning can break ape

    Hello,

    I'm just trying this on Ubuntu 20.04 and get the following error:

    $ make -j8 -O o//examples/hello.com
    
    MKDEPS         o//depend
    ZIPOBJ         o//libc/stubs/errno.S.zip.o
    run-detectors: unable to find an interpreter for o/build/bootstrap/zipobj.com
    make: *** [build/rules.mk:76: o//libc/stubs/errno.S.zip.o] Error 2
    ZIPOBJ         o//libc/stubs/triplf.S.zip.o
    run-detectors: unable to find an interpreter for o/build/bootstrap/zipobj.com
    ZIPOBJ         o//libc/stubs/asanjmp.greg.S.zip.o
    run-detectors: unable to find an interpreter for o/build/bootstrap/zipobj.com
    ZIPOBJ         o//libc/stubs/subvsi3.S.zip.o
    run-detectors: unable to find an interpreter for o/build/bootstrap/zipobj.com
    ZIPOBJ         o//libc/stubs/mulvdi3.S.zip.o
    run-detectors: unable to find an interpreter for o/build/bootstrap/zipobj.com
    ZIPOBJ         o//libc/stubs/errnolocation.S.zip.o
    run-detectors: unable to find an interpreter for o/build/bootstrap/zipobj.com
    ZIPOBJ         o//libc/stubs/mcount.S.zip.o
    run-detectors: unable to find an interpreter for o/build/bootstrap/zipobj.com
    ZIPOBJ         o//libc/stubs/panic.S.zip.o
    run-detectors: unable to find an interpreter for o/build/bootstrap/zipobj.com
    make: *** [build/rules.mk:76: o//libc/stubs/panic.S.zip.o] Error 2
    

    If I try to run zipobj.com directly, it returns the following:

    $build/bootstrap/zipobj.com
    
    error:tool/build/zipobj.c:93:zipobj.com: check failed
            CHECK_NE(NULL, outpath_);
                     → 0 (outpath_)
                    != 0 (NULL)
            E?/err=0/errno:0/GetLastError:0
            build/bootstrap/zipobj.com
    

    Thanks!

  • Hello.com, redbean.com fail to run on MacOS M1 under Rosetta

    Hello.com, redbean.com fail to run on MacOS M1 under Rosetta

    hello.com is built on linux following instructions published here: https://justine.lol/cosmopolitan/ and then executed on a MacBook Pro with the M1 Max chip (arm64) running macOS Monterey 12.4 under Rosetta translation.

    #To confirm that it's running under Rosetta:
    ❯ arch -arch x86_64 ./[hello.com](http://hello.com/)
    [1]    79473 segmentation fault  arch -arch x86_64 ./[hello.com](http://hello.com/)
    
    ❯ sh ./[hello.com](http://hello.com/)
    [1]    73377 segmentation fault  sh ./[hello.com](http://hello.com/)
    ❯ sh ./[hello.com](http://hello.com/) --assimilate
    ❯ ./[hello.com](http://hello.com/)
    [1]    73395 segmentation fault  ./[hello.com](http://hello.com/)
    ❯ lldb --file ./[hello.com](http://hello.com/)
    (lldb) target create "./[hello.com](http://hello.com/)"
    Current executable set to '/Users/user/cosmo/[hello.com](http://hello.com/)' (x86_64).
    (lldb) r
    Process 73409 launched: '/Users/user/cosmo/[hello.com](http://hello.com/)' (x86_64)
    Process 73409 stopped
    * thread #1, stop reason = EXC_BAD_ACCESS (code=1, address=0x1f)
        frame #0: 0x000000000040239f [hello.com](http://hello.com/)
    ->  0x40239f: movl   (%rsp), %ebx
        0x4023a2: leaq   0x8(%rsp), %rsi
        0x4023a7: leaq   0x10(%rsp,%rbx,8), %rdx
        0x4023ac: movq   %rsp, 0x1e97d(%rip)
    Target 0: ([hello.com](http://hello.com/)) stopped.
    (lldb) bt
    * thread #1, stop reason = EXC_BAD_ACCESS (code=1, address=0x1f)
      * frame #0: 0x000000000040239f [hello.com](http://hello.com/)
    (lldb)
    ❯ file [hello.com](http://hello.com/)
    [hello.com](http://hello.com/): Mach-O 64-bit executable x86_64
    

    Full crash report:

    {"app_name":"[hello.com](http://hello.com/)","timestamp":"2022-06-17 12:25:25.00 -0700","app_version":"","slice_uuid":"45e417b7-2c6d-a6da-45e4-17b72c6da6da","build_version":"","platform":0,"share_with_app_devs":1,"is_first_party":1,"bug_type":"309","os_version":"macOS 12.4 (21F79)","incident_id":"E185D602-4547-4382-874C-6A44AF63AAD3","name":"[hello.com](http://hello.com/)"}
    {
      "uptime" : 2300000,
      "procLaunch" : "2022-06-17 12:25:25.2262 -0700",
      "procRole" : "Unspecified",
      "version" : 2,
      "userID" : 501,
      "deployVersion" : 210,
      "modelCode" : "MacBookPro18,4",
      "procStartAbsTime" : 55200184527962,
      "coalitionID" : 3240,
      "osVersion" : {
        "train" : "macOS 12.4",
        "build" : "21F79",
        "releaseType" : "User"
      },
      "captureTime" : "2022-06-17 12:25:25.4489 -0700",
      "incident" : "E185D602-4547-4382-874C-6A44AF63AAD3",
      "bug_type" : "309",
      "pid" : 73395,
      "procExitAbsTime" : 55200189857901,
      "translated" : true,
      "cpuType" : "X86-64",
      "procName" : "[hello.com](http://hello.com/)",
      "procPath" : "\/Users\/USER\/*\/[hello.com](http://hello.com/)",
      "parentProc" : "zsh",
      "parentPid" : 73319,
      "coalitionName" : "com.googlecode.iterm2",
      "crashReporterKey" : "917168CC-9F91-8E09-0E83-6F8C1759F8E6",
      "responsiblePid" : 10569,
      "responsibleProc" : "iTerm2",
      "wakeTime" : 29832,
      "sleepWakeUUID" : "5126274E-4713-4921-8ECB-404A80F155BC",
      "sip" : "enabled",
      "vmRegionInfo" : "0x1f is not in any region.  Bytes before following region: 140718563835873\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      UNUSED SPACE AT START\n--->  \n      mapped file              7ffb9802c000-7ffbc5b10000 [730.9M] r-x\/r-x SM=COW  ...t_id=a25954a5",
      "isCorpse" : 1,
      "exception" : {"codes":"0x0000000000000001, 0x000000000000001f","rawCodes":[1,31],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_INVALID_ADDRESS at 0x000000000000001f"},
      "termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":73395},
      "vmregioninfo" : "0x1f is not in any region.  Bytes before following region: 140718563835873\n      REGION TYPE                    START - END         [ VSIZE] PRT\/MAX SHRMOD  REGION DETAIL\n      UNUSED SPACE AT START\n--->  \n      mapped file              7ffb9802c000-7ffbc5b10000 [730.9M] r-x\/r-x SM=COW  ...t_id=a25954a5",
      "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":1,"task_for_pid":2},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
      "usedImages" : [
      {
        "size" : 0,
        "source" : "A",
        "base" : 0,
        "uuid" : "00000000-0000-0000-0000-000000000000"
      }
    ],
      "legacyInfo" : {
      "threadHighlighted" : 0
    },
      "trialInfo" : {
      "rollouts" : [
        {
          "rolloutId" : "6112e14f37f5d11121dcd519",
          "factorPackIds" : {
            "SIRI_TEXT_TO_SPEECH" : "629e5353a0d1644ed53959b8"
          },
          "deploymentId" : 240000148
        },
        {
          "rolloutId" : "61301e3a61217b3110231469",
          "factorPackIds" : {
            "SIRI_FIND_MY_CONFIGURATION_FILES" : "6216ae152a40e71046e16225"
          },
          "deploymentId" : 240000016
        }
      ],
      "experiments" : [
    
      ]
    },
      "reportNotes" : [
      "_dyld_process_info_create failed with 5",
      "dyld_process_snapshot_get_shared_cache failed",
      "Failed to create CSSymbolicatorRef - corpse still valid ¯\\_(ツ)_\/¯"
    ]
    }
    

    @jart, is there any additional information I can get to troubleshoot this? --ftrace doesn't show any information at all, so it appears to be crashing before it gets to any of the function frames.

    It may be related to AVX instruction support (even though EXC_BAD_ACCESS seems to indicate a memory issue); Rosetta documentation indicates the following:

    Rosetta translates all x86_64 instructions, but it doesn’t support the execution of some newer instruction sets and processor features, such as AVX, AVX2, and AVX512 vector instructions. If you include these newer instructions in your code, execute them only after verifying that they are available. For example, to determine if AVX512 vector instructions are available, use the sysctlbyname function to check the hw.optional.avx512f attribute.

  • redbean: LaunchBrowser not working on macos

    redbean: LaunchBrowser not working on macos

    redbean 1.5 macos big sur 11.6

    If I add in an index.html file then it works fine and I get the server running, but as soon as I add the command LaunchBrowser() to the .init.lua file, it fails with:

    error: Uncaught SIGSEGV (SEGV_MAPERR) on Mikas-Mac-Pro pid 5793
      ./redbrean.com.zip
      ENOENT[No such file or directory][2]
    

    I've tried with paths "/" and "/index.html" and "index.html" but they all fail with the same issue.

  • Get bare metal code (mostly) working outside of an emulator

    Get bare metal code (mostly) working outside of an emulator

    These patches fix a few issues, which were causing the bare metal code to crash (and reboot) when run on a real machine, outside of an emulator. These have to do with

    • the retrieval of the system memory map (int 0x15, eax = 0xe820), and
    • the initial creation of the page tables for virtual memory operation.

    I have debugged and tested the patched code, by booting it from a USB drive, on a x86-64 PC with a "legacy BIOS".

    Thank you!

  • Upgrade SQLite to 3.40

    Upgrade SQLite to 3.40

    @jart, I upgraded SQLite to 3.40 and merged all the changes you applied on top of the previous version. I marked each version with a reference to its "original" version. There were a couple of changes that I didn't merge, primarily because I wanted to reduce the number of changes to file name to simplify the next upgrade. All the functional changes have been applied.

    I've only renamed geopoly.c to geopoly.inc, but we can also filter it out in the makefile.

    I've tested all the changes with my scripts in redbean and sqlite shell and everything is working so far (including some new functions, like memdb vfs, that were not present in 3.35).

    [update] I relented and renamed several other files, as they had been causing errors for this build, even though sqlite itself compiles without issues. This is mostly related to the fact that those are not standalone .h files and depend on them being included in a certain manner, such that their dependencies are all satisfied. I ended up renaming them to .inc files to avoid this, but I'm hoping there is a better way to deal with that build issue.

  • Modern Protocols: TLS 1.3, QUIC, and IPv6

    Modern Protocols: TLS 1.3, QUIC, and IPv6

    Currently Cosmopolitan includes a modified MbedTLS, and most network functions appear to only readily support IPv4. I propose adding more complete support for IPv6, which would allow network applications such as Redbean to work on systems without any IPv4 interfaces (low-end IPv6-only virtual servers, test networks, other IPv6-only networks, etc.)

    I also propose integrating PicoTLS (https://github.com/h2o/picotls) and PicoQUIC (https://github.com/private-octopus/picoquic), minimal and portable C implementations of TLS 1.3 and QUIC respectively. PicoTLS would likely have to be modified to use cryptographic primitives from MbedTLS/mbedcrypto. As a bonus, PicoTLS will receive support for ECH fairly soon.

  • [metal] Allow programs larger than 440 KiB to run in bare metal mode

    [metal] Allow programs larger than 440 KiB to run in bare metal mode

    This PR tries to address the problem outlined at https://github.com/jart/cosmopolitan/pull/667#issuecomment-1283748049 : the bare metal bootloader only loads the first 440 KiB of the program image into memory, so programs larger than 440 KiB crash.

    To do:

    • [x] Get o//examples/hellolua.com to run correctly under QEMU in legacy BIOS mode
      • [x] Copy first 440 KiB of program pages to extended memory
      • [x] Load program pages beyond first 440 KiB into extended memory as well
      • [x] Reclaim memory pages used at boot time, and make them available for later application use
    • [x] Ensure o//examples/vga2.com ~~(and/or o//examples/hellolua.com)~~ also run correctly when started in UEFI mode (✓ https://github.com/tkchia/cosmopolitan/commit/36b06ab73e107796d93f27e63e17e5a0655170db, https://github.com/tkchia/cosmopolitan/commit/9fe2f551139d08c23d17bc94e1cde45076de4794, https://github.com/tkchia/cosmopolitan/commit/8f698a13f570a2c41e46ea357e3db8b12af02855)
    • [x] Allow munmap to reclaim dynamically allocated pages (✓ https://github.com/tkchia/cosmopolitan/commit/de295966b1f24dc5c2c70d3d36a60af9aab47313)
      • [x] Implement reference counting of physical pages, to decide when to reclaim them
    • [ ] (?) Maybe add integrity checks to guard against corruption in free list of reclaimed pages
  • ape error: phdrs must be 4096-aligned,

    ape error: phdrs must be 4096-aligned,

    I get this error, when running a linked executable, which I don't understand. What are phdrs and how can I influence their makeup ?

    ape error: ./kitchen/cosmopolitan/Debug/xxx1: APE phdrs must be 4096-aligned and 4096-padded
    
  • CVE-2007-4559 Patch

    CVE-2007-4559 Patch

    Patching CVE-2007-4559

    Hi, we are security researchers from the Advanced Research Center at Trellix. We have began a campaign to patch a widespread bug named CVE-2007-4559. CVE-2007-4559 is a 15 year old bug in the Python tarfile package. By using extract() or extractall() on a tarfile object without sanitizing input, a maliciously crafted .tar file could perform a directory path traversal attack. We found at least one unsantized extractall() in your codebase and are providing a patch for you via pull request. The patch essentially checks to see if all tarfile members will be extracted safely and throws an exception otherwise. We encourage you to use this patch or your own solution to secure against CVE-2007-4559. Further technical information about the vulnerability can be found in this blog.

    If you have further questions you may contact us through this projects lead researcher Kasimir Schulz.

sampctl-runner: Easy way to build and run package..

sampctl-runner Easy way to build and run package.. Usage Just enter the name of the repository from pawn.json and let the program do other things.. Ex

Apr 17, 2022
A python library to run metal compute kernels on MacOS

metalcompute for Python A python library to run metal compute kernels on MacOS Usage Example execution from M1-based Mac running MacOS 12.0: > ./build

Nov 7, 2022
A run-time C++ library for working with units of measurement and conversions between them and with string representations of units and measurements

Units What's new Some of the CMake target names have changed in the latest release, please update builds appropriately Documentation A library that pr

Nov 29, 2022
Unity project with an example on how to run the depthai library in Android.
Unity project with an example on how to run the depthai library in Android.

depthai-android-unity-example Unity project (built with Unity 2020.3.25f1) with an example on how to run the depthai library in Android. Important Thi

Mar 13, 2022
Libft is an individual project at 42 that requires us to re-create some standard C library functions including some additional ones that can be used later to build a library of useful functions for the rest of the program.
Libft is an individual project at 42 that requires us to re-create some standard C library functions including some additional ones that can be used later to build a library of useful functions for the rest of the program.

Libft is an individual project at 42 that requires us to re-create some standard C library functions including some additional ones that can be used later to build a library of useful functions for the rest of the program.

Apr 5, 2022
Combining Sealighter with unpatched exploits to run the Threat-Intelligence ETW Provider
Combining Sealighter with unpatched exploits to run the Threat-Intelligence ETW Provider

Sealighter-TI Combining Sealighter with unpatched exploits and PPLDump to run the Microsoft-Windows-Threat-Intelligence ETW Provider without a signed

Nov 17, 2022
An attempt to run fcitx5 on Android

fcitx5-android-poc An attempt to run fcitx5 on Android. Project status It can build, run, and print to stdout. Build Dependencies Android SDK Platform

Nov 27, 2022
Run-time program generator embedded in C++

Run-time program generator embedded in C++

Aug 5, 2022
Nov 19, 2022
Run Linux programs on DOS
Run Linux programs on DOS

A WSL alternative for users who prefer an MS-DOS environment. DOS Subsystem for Linux integrates a real Linux environment into MS-DOS systems, allowing users to make use of both DOS and Linux applications from the DOS command prompt.

Nov 26, 2022
Project #1: Run-length Encoding (Computer Architecture, Fall 2021)

4190.308 Computer Architecture (Fall 2021) Project #1: Run-length Encoding Due: 11:59PM, September 26 (Sunday) Introduction In this project, you need

Sep 19, 2022
Realtime Micro Kernel -- Event-driven Run-to-Completion RTOS with Active Objects, Timed Events, Memory Pools, and Message Queues

Realtime Micro Kernel Features Active Objects Message queues Variable sized, custom messages Periodic and single timed events Memory pools Supported P

Nov 7, 2022
Nov 12, 2022
Patch for Sierra's PowerChess to run on newer Windows Versions >9x

What is it? I recently stumbled upon the following thread: https://sourceforge.net/p/dxwnd/discussion/general/thread/98dd46dfc6/?page=0 Some people we

Mar 27, 2022
A utility to run ELF files in memory.
A utility to run ELF files in memory.

execelf - A utility to execute ELF files in memory. execelf is small utility for running ELF files in memory, without touching the disk! Installation

Nov 21, 2022
Purity toolsHades A HIDS is designed run on Windows
Purity toolsHades A HIDS is designed run on Windows

方案:   x64内核探针粗糙分为两类技术方案:第一种基于Intel-x/d虚拟化技术,绕过PG保护做花式Hook,功能强大-系统无痕,第二种基于微型过滤框架和注册回调,兼容性好/快速开发/接口完善。   该项目采用过滤驱动+注册回调,这种方案中规中矩。后续可能会集成VT接口,但是支持有限,优先支持

Nov 27, 2022
PikaScript is an ultra-lightweight Python engine with zero dependencies and zero-configuration, that can run with 4KB of RAM (such as STM32G030C8 and STM32F103C8), and is very easy to deploy and expand.
PikaScript is an ultra-lightweight Python engine with zero dependencies and zero-configuration, that can run with 4KB of RAM (such as STM32G030C8 and STM32F103C8), and is very easy to deploy and expand.

PikaScript 中文页| Star please~ 1. Abstract PikaScript is an ultra-lightweight Python engine with zero dependencies and zero-configuration, that can run

Nov 24, 2022
Run statically-compiled WebAssembly apps on any embedded platform
Run statically-compiled WebAssembly apps on any embedded platform

embedded-wasm-apps Run native, statically-compiled apps on any platform, using WebAssembly. Examples include AssemblyScript, Rust, C/C++, TinyGo, Zig,

Nov 18, 2022
A Geometry Dash mod that lets you select the screen to run the game on

Screen Selector A mod that lets you select the screen to run Geometry Dash on Fully compatible with Mega Hack v6 (except the "Fullscreen" and "Borderl

Jun 3, 2022