0.1
版本发布时间: 2021-01-29 08:54:12
jart/cosmopolitan最新发布版本:3.8.0(2024-08-31 11:52:21)
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 to output a POSIX-approved polyglot format that runs natively on Linux + Mac + Windows + FreeBSD + OpenBSD + BIOS with the best possible performance and the tiniest footprint imaginable.
Changes
This is our first official release. You may remember the pre-alpha demo that went viral on Hacker News last month. There's been a considerable number of bug fixes since then. Here's a curated list of what happened:
- Fix Z-shell (pending upstream) https://github.com/jart/zsh/commit/94a4bc14bb2e415ec3d10cf716512bd3e0d99f48
- Fix FreeBSD Almquist Shell #23 in https://github.com/freebsd/freebsd-src/commit/e0f5c1387df23c8c4811f5b24a7ef6ecac51a71a thanks @jillest and Austin Group!
- Fix metal bugs so executables boot in qemu-system-x86_64 #20
- Fix Windows 7 compatibility #19
- Fix memcpy on sandybridge and ivybridge 8fa47ace
- Fix RHEL5 and RHEL7 compatibility 45b72485 565edd05 #24
- Fix link order in cosmopolitan.a 9f68d6eee95f04f0ff146c4214c021beee551e98
- Fix opendir() on XNU and OpenBSD 45b72485ad102206574629cf278199d050fa7bf7
- Fix system() on NT and improve vfork() / execve() implementation 45b72485ad102206574629cf278199d050fa7bf7
- Fix system calls with 7+ arguments 45b72485ad102206574629cf278199d050fa7bf7
- Fix OpenBSD truncate() and ftruncate() thunk typo 45b72485ad102206574629cf278199d050fa7bf7
- Fix Windows when FDs exceeds OPEN_MAX 45b72485ad102206574629cf278199d050fa7bf7
- Make long double long again on Windows 45b72485ad102206574629cf278199d050fa7bf7
- Use copy_file_range on FreeBSD 13+ 45b72485ad102206574629cf278199d050fa7bf7
- Create integrated assembler for chibicc 81ef1627
- Add popen(), pclose(), brk(), sbrk() d7ac16a9ed56ebdc70481f4a802265ea15619894
- Add timingsafe_memcmp #13
Getting Started
Here's how to get started with the freestanding hermetically-sealed monolithic source repository:
tar xf cosmopolitan-0.1.tar.gz
cd cosmo
make -j12
o//examples/hello.com
Here's how to get started with the amalgamated binaries, which let you bring your own build system:
unzip cosmopolitan-amalgamated-0.1.zip
echo 'main() { printf("hello world\n"); }' >hello.c
gcc -g -O -static -fno-pie -no-pie -mno-red-zone -nostdlib -nostdinc \
-o hello.com.dbg hello.c -Wl,--gc-sections -Wl,-z,max-page-size=0x1000 -fuse-ld=bfd \
-Wl,-T,ape.lds -include cosmopolitan.h crt.o ape.o cosmopolitan.a
objcopy -SO binary hello.com.dbg hello.com
./hello.com
Please note we assume that you compile your programs on Linux. If you want to compile your binaries on Windows, then please read our new tutorial on how you can use the x86_64-linux-gnu static exes we created. See https://justine.lol/cosmopolitan/windows-compiling.html and https://justine.lol/cosmopolitan/windows-debugging.html If you use XNU then we'll be sharing a prebuilt Linux toolchain for you too soon.
Quality Assurance
All 196 tests passing on the following systems is confirmed:
- Alpine Linux 5.4.43
- Debian Linux 10 Buster 4.19.0
- Red Hat Enterprise Linux 7 3.10.0
- Red Hat Enterprise Linux 5 2.6.18
- XNU 19.6.0
- Windows 7
- Windows 10
- FreeBSD 12.1
- OpenBSD 6.8
Thanks
Thanks go out to @jillest, @probonopd, @nicholatian, @vshymanskyy, @PerfectProductions, @JesseRMeyer, @nikhedonia, @tpoindex, @maroneze, @zhengshuxin, @Phate6660, @Theldus, @severak, @paususe, @rhdxmr, @tankf33der, @nuclight, @nsauzede, @gavinhoward, and many others who've helped make this release possible.
1、 cosmopolitan-0.1.tar.gz 33.61MB
2、 cosmopolitan-amalgamation-0.1.zip 5.56MB