diff --git a/Ports/AvailablePorts.md b/Ports/AvailablePorts.md index e80feaa02d..a42f881411 100644 --- a/Ports/AvailablePorts.md +++ b/Ports/AvailablePorts.md @@ -4,312 +4,312 @@ Please make sure to keep this list up to date when adding and updating ports. :^ This list is also available at [ports.serenityos.net](https://ports.serenityos.net) -| Port | Name | Version | Website | -|-----------------------------------------------------|-----------------------------------------------------------------|--------------------------|--------------------------------------------------------------------------------| -| [`aclock`](aclock/) | aclock | 2.3 | https://github.com/tenox7/aclock | -| [`acpica-tools`](acpica-tools/) | ACPI Component Architecture Project Userspace Utilities | 20220331 | https://acpica.org/downloads | -| [`alpine`](alpine/) | Alpine Email Client | 2.26 | https://alpineapp.email | -| [`angband`](angband/) | Angband | 4.2.4 | https://rephial.org | -| [`Another-World`](Another-World/) | Another World Bytecode Interpreter | | https://github.com/fabiensanglard/Another-World-Bytecode-Interpreter | -| [`aria2`](aria2/) | aria2 | 1.36.0 | https://aria2.github.io | -| [`awk`](awk/) | The One True Awk | 20220122 | https://github.com/onetrueawk/awk | -| [`backward-cpp`](backward-cpp/) | Backward-cpp | 65a769f | https://github.com/bombela/backward-cpp | -| [`bash`](bash/) | GNU Bash | 5.2.15 | https://www.gnu.org/software/bash/ | -| [`bass`](bass/) | Beneath a Steel Sky | cd-1.2 | https://www.scummvm.org/games | -| [`bc`](bc/) | bc | 6.5.0 | https://github.com/gavinhoward/bc | -| [`bdwgc`](bdwgc/) | Boehm-Demers-Weiser Garbage Collector (libgc) | 8.2.2 | https://github.com/ivmai/bdwgc | -| [`binutils`](binutils/) | GNU Binutils | 2.40 | https://www.gnu.org/software/binutils/ | -| [`bison`](bison/) | GNU Bison | 3.8 | https://www.gnu.org/software/bison/ | -| [`bochs`](bochs/) | Bochs x86 PC emulator | 2.7 | https://sourceforge.net/projects/bochs/ | -| [`boost`](boost/) | Boost C++ libraries | 1.80.0 | https://www.boost.org/ | -| [`brogue`](brogue/) | BrogueCE | 1.11.1 | https://github.com/tmewett/BrogueCE | -| [`brotli`](brotli/) | Brotli | 1.0.9 | https://github.com/google/brotli | -| [`byacc`](byacc/) | Berkeley Yacc | 20220128 | https://invisible-island.net/byacc/byacc.html | -| [`bzip2`](bzip2/) | bzip2 | 1.0.8 | https://sourceware.org/bzip2/ | -| [`bzip3`](bzip3/) | bzip3 | 1.2.2 | https://github.com/kspalaiologos/bzip3 | -| [`c-ares`](c-ares/) | c-ares | 1.19.0 | https://c-ares.org | -| [`c-ray`](c-ray/) | C-Ray | 8f30eb9 | https://github.com/vkoskiv/c-ray | -| [`ca-certificates`](ca-certificates/) | Mozilla CA certificate store | 2022-04-26 | https://curl.se/docs/caextract.html | -| [`carl`](carl/) | Crypto Ancienne Resource Loader | 1.5 | https://github.com/classilla/cryanc | -| [`cavestory`](cavestory/) | Cave Story | 2.6.5-1 | https://github.com/nxengine/nxengine-evo | -| [`cbonsai`](cbonsai/) | cbonsai | 1.3.1 | https://gitlab.com/jallbrit/cbonsai | -| [`ccache`](ccache/) | ccache | 4.6.3 | https://ccache.dev/ | -| [`cfunge`](cfunge/) | cfunge | 2bc4fb2 | https://github.com/VorpalBlade/cfunge/ | -| [`chester`](chester/) | Chester Gameboy Emulator | | https://github.com/veikkos/chester | -| [`chocolate-doom`](chocolate-doom/) | Chocolate Doom | 3.0.1 | https://www.chocolate-doom.org/ | -| [`citron`](citron/) | Citron Programming Language | 0.0.9.3 | https://github.com/alimpfard/citron | -| [`ClassiCube`](ClassiCube/) | ClassiCube | 1.3.3 | https://github.com/UnknownShadow200/ClassiCube | -| [`cmake`](cmake/) | CMake | 3.26.4 | https://cmake.org/ | -| [`cmatrix`](cmatrix/) | cmatrix | 3112b12 | https://github.com/abishekvashok/cmatrix | -| [`composer`](composer/) | Composer | 2.4.3 | https://getcomposer.org/ | -| [`coreutils`](coreutils/) | GNU core utilities | 9.1 | https://www.gnu.org/software/coreutils/ | -| [`cpio`](cpio/) | GNU cpio archive utility | 2.13 | https://www.gnu.org/software/cpio/ | -| [`curl`](curl/) | curl | 8.0.1 | https://curl.se/ | -| [`dash`](dash/) | DASH | 0.5.10.2 | http://gondor.apana.org.au/~herbert/dash | -| [`deutex`](deutex/) | DeuTex | 5.2.2 | https://github.com/Doom-Utils/deutex | -| [`dialog`](dialog/) | Dialog | 1.3-20220526 | https://invisible-island.net/dialog/ | -| [`diffutils`](diffutils/) | GNU Diffutils | 3.8 | https://www.gnu.org/software/diffutils/ | -| [`dmidecode`](dmidecode/) | dmidecode | 3.5 | https://github.com/mirror/dmidecode | -| [`doom`](doom/) | DOOM | | https://github.com/SerenityOS/SerenityDOOM | -| [`dos2unix`](dos2unix/) | dos2unix | 7.5.0 | https://waterlan.home.xs4all.nl/dos2unix.html | -| [`dosbox-staging`](dosbox-staging/) | DOSBox Staging | 0.77.1 | https://dosbox-staging.github.io/ | -| [`dosfstools`](dosfstools/) | dosfstools utility suite | 4.2 | https://github.com/dosfstools/dosfstools/ | -| [`double-conversion`](double-conversion/) | double-conversion | 3.2.1 | https://github.com/google/double-conversion | -| [`drascula`](drascula/) | DrĂ¡scula: The Vampire Strikes Back | 1.0 | https://www.scummvm.org/games/#games-drascula | -| [`dreamweb`](dreamweb/) | DreamWeb | 1.1 | https://www.scummvm.org/games/#games-dreamweb | -| [`dropbear`](dropbear/) | Dropbear SSH | 2022.82 | https://dropbear.nl/mirror/dropbear.html | -| [`dtc`](dtc/) | Device Tree Compiler | 1.7.0 | https://github.com/dgibson/dtc | -| [`dungeonrush`](dungeonrush/) | DungeonRush | 1.1-beta | https://github.com/Rapiz1/DungeonRush | -| [`e2fsprogs`](e2fsprogs/) | e2fsprogs | 1.46.5 | http://e2fsprogs.sourceforge.net/ | -| [`ed`](ed/) | GNU ed | 1.18 | https://www.gnu.org/software/ed/ | -| [`edid-decode`](edid-decode/) | edid-decode | 20220315.cb74358c2896 | https://git.linuxtv.org/edid-decode | -| [`editline`](editline/) | editline | 1.17.1 | https://github.com/troglobit/editline | -| [`emu2`](emu2/) | emu2 DOS emulator | 2021.01 | https://github.com/dmsc/emu2 | -| [`epsilon`](epsilon/) | graphical calculator simulator | 15.5.0 | https://github.com/numworks/epsilon | -| [`expat`](expat/) | Expat XML parser | 2.5.0 | https://libexpat.github.io/ | -| [`ffmpeg`](ffmpeg/) | ffmpeg | 5.0 | https://ffmpeg.org | -| [`figlet`](figlet/) | FIGlet | 2.2.5 | http://www.figlet.org/ | -| [`file`](file/) | file (determine file type) | 5.44 | https://www.darwinsys.com/file/ | -| [`findutils`](findutils/) | GNU findutils | 4.9.0 | https://www.gnu.org/software/findutils/ | -| [`fio`](fio/) | fio - Flexible I/O tester | 3.33 | https://fio.readthedocs.io/en/latest/ | -| [`flac`](flac/) | Free Lossless Audio Codec | 1.4.2 | https://xiph.org/flac/ | -| [`flatbuffers`](flatbuffers/) | Flatbuffers | 2.0.0 | https://github.com/google/flatbuffers | -| [`flex`](flex/) | flex | 2.6.4 | https://github.com/westes/flex | -| [`fontconfig`](fontconfig/) | Fontconfig | 2.14.0 | https://www.freedesktop.org/wiki/Software/fontconfig/ | -| [`fotaq`](fotaq/) | Flight of the Amazon Queen | 1.0 | https://www.scummvm.org/games/#games-queen | -| [`freeciv`](freeciv/) | Freeciv | 3.0.0-beta2 | http://freeciv.org/ | -| [`freedink`](freedink/) | FreeDink | 109.6 | https://www.gnu.org/software/freedink/ | -| [`freetype`](freetype/) | FreeType | 2.13.0 | https://www.freetype.org/ | -| [`frotz`](frotz/) | Frotz | 2.54 | https://gitlab.com/DavidGriffith/frotz | -| [`gawk`](gawk/) | GNU awk | 5.2.1 | https://www.gnu.org/software/gawk/ | -| [`gcc`](gcc/) | GNU Compiler Collection | 13.1.0 | https://gcc.gnu.org/ | -| [`gdb`](gdb/) | GNU Project Debugger | 11.2 | https://sourceware.org/gdb | -| [`gemrb`](gemrb/) | GemRB | 0.9.1 | https://gemrb.org/ | -| [`genemu`](genemu/) | Genesis / MegaDrive Emulator | e39f690 | https://github.com/rasky/genemu | -| [`genext2fs`](genext2fs/) | genext2fs | 1.5.0 | https://github.com/bestouff/genext2fs | -| [`gettext`](gettext/) | GNU gettext | 0.21.1 | https://www.gnu.org/software/gettext/ | -| [`git`](git/) | Git | 2.40.0 | https://git-scm.com/ | -| [`glib`](glib/) | GLib | 2.76.1 | https://wiki.gnome.org/Projects/GLib | -| [`glm`](glm/) | OpenGL Mathematics (GLM) | 0.9.9.8 | https://github.com/g-truc/glm | -| [`gltron`](gltron/) | GLTron | 0.70 | http://gltron.org | -| [`glu`](glu/) | Mesa GLU | 9.0.2 | https://gitlab.freedesktop.org/mesa/glu | -| [`gmp`](gmp/) | GNU Multiple Precision Arithmetic Library (GMP) | 6.2.1 | https://gmplib.org/ | -| [`gnuapl`](gnuapl/) | GNU APL | 1.8 | https://www.gnu.org/software/apl/ | -| [`gnucobol`](gnucobol/) | GnuCOBOL | 3.1.2 | https://gnucobol.sourceforge.io/ | -| [`gnupg`](gnupg/) | GnuPG | 2.3.0 | https://gnupg.org/software/index.html | -| [`gnuplot`](gnuplot/) | Gnuplot | 5.2.8 | http://www.gnuplot.info/ | -| [`gperf`](gperf/) | GNU gperf | 3.1 | https://www.gnu.org/software/gperf/ | -| [`grep`](grep/) | GNU Grep | 3.10 | https://www.gnu.org/software/grep/ | -| [`grepcidr`](grepcidr/) | grepcidr | 2.0 | http://www.pc-tools.net/unix/grepcidr/ | -| [`griffon`](griffon/) | The Griffon Legend | 1.0 | https://www.scummvm.org/games/#games-griffon | -| [`gsl`](gsl/) | GNU Scientific Library | 2.7.1 | https://www.gnu.org/software/gsl/ | -| [`guile`](guile/) | The GNU guile programming language | 3.0.8 | https://www.gnu.org/software/guile/ | -| [`gzip`](gzip/) | GNU gzip | 1.12 | https://www.gnu.org/software/gzip/ | -| [`halflife`](halflife/) | Half-Life | 2022.12.26 | https://github.com/FWGS/hlsdk-portable | -| [`harfbuzz`](harfbuzz/) | HarfBuzz | 4.3.0 | https://github.com/harfbuzz/harfbuzz | -| [`hatari`](hatari/) | Atari ST/STE/TT/Falcon emulator | 2.4.0-devel | https://hatari.tuxfamily.org/ | -| [`hexedit`](hexedit/) | A console-based hex editor | 1.6 | https://github.com/pixel/hexedit | -| [`imagemagick`](imagemagick/) | ImageMagick | 7.1.1-5 | https://imagemagick.org | -| [`imgcat`](imgcat/) | imgcat | 2.5.1 | https://github.com/eddieantonio/imgcat | -| [`indent`](indent/) | GNU indent | 2.2.11 | https://www.gnu.org/software/indent/ | -| [`isl`](isl/) | Integer Set Library | 0.24 | https://libisl.sourceforge.io/ | -| [`ja2`](ja2/) | Jagged Alliance 2 Stracciatella | 0.15.x | https://github.com/safarp/ja2-stracciatella/tree/0.15.x | -| [`jakt`](jakt/) | Jakt Programming Language | | https://github.com/SerenityOS/jakt | -| [`jdupes`](jdupes/) | jdupes, an enhanced fork of 'fdupes' | 1.26.1 | https://github.com/jbruchon/jdupes | -| [`jfduke3d`](jfduke3d/) | JonoF's Duke Nukem 3D Port | 41cd46b | https://github.com/jonof/jfduke3d | -| [`joe`](joe/) | joe's own editor | 4.6 | https://joe-editor.sourceforge.io/ | -| [`jot`](jot/) | jot (OpenBSD) | 6.6 | https://github.com/ibara/libpuffy | -| [`jq`](jq/) | jq | 1.6 | https://stedolan.github.io/jq/ | -| [`kakoune`](kakoune/) | Modal text editor | 24d6072 | https://github.com/mawww/kakoune | -| [`klong`](klong/) | Klong | 20220315 | https://t3x.org/klong/ | -| [`less`](less/) | less | 590 | https://www.greenwoodsoftware.com/less/ | -| [`libarchive`](libarchive/) | libarchive | 3.6.1 | https://libarchive.org/ | -| [`libassuan`](libassuan/) | libassuan | 2.5.5 | https://gnupg.org/software/libassuan/index.html | -| [`libatomic_ops`](libatomic_ops/) | libatomic\_ops | 7.6.12 | https://www.hboehm.info/gc/ | -| [`libexpat`](libexpat/) | Expat | 2.4.8 | https://libexpat.github.io/ | -| [`libffi`](libffi/) | libffi | 3.4.2 | https://www.sourceware.org/libffi/ | -| [`libfftw3f`](libfftw3f/) | Fastest Fourier Transform in the West (single precision) | 3.3.10 | https://www.fftw.org/ | -| [`libgcrypt`](libgcrypt/) | libgcrypt | 1.10.1 | https://gnupg.org/software/libgcrypt/index.html | -| [`libgd`](libgd/) | libgd | 2.3.3 | https://libgd.github.io/ | -| [`libgpg-error`](libgpg-error/) | libgpg-error | 1.45 | https://gnupg.org/software/libgpg-error/index.html | -| [`libiconv`](libiconv/) | GNU libiconv | 1.17 | https://www.gnu.org/software/libiconv/ | -| [`libicu`](libicu/) | ICU | 69.1 | http://site.icu-project.org/ | -| [`libjodycode`](libjodycode/) | libjodycode | 3.1 | https://github.com/jbruchon/libjodycode | -| [`libjpeg`](libjpeg/) | libjpeg | 9e | https://ijg.org/ | -| [`libksba`](libksba/) | libksba | 1.5.1 | https://gnupg.org/software/libksba/index.html | -| [`libmad`](libmad/) | libmad | 0.15.1b | https://www.underbit.com/products/mad/ | -| [`libmikmod`](libmikmod/) | libmikmod | 3.3.11.1 | http://mikmod.sourceforge.net/ | -| [`libmodplug`](libmodplug/) | libmodplug | 0.8.9.0 | http://modplug-xmms.sourceforge.net/ | -| [`libmpeg2`](libmpeg2/) | libmpeg2 | 0.5.1 | https://libmpeg2.sourceforge.io/ | -| [`libmpg123`](libmpg123/) | libmpg123 | 1.29.3 | https://www.mpg123.de/ | -| [`libogg`](libogg/) | libogg | 1.3.5 | https://github.com/xiph/ogg | -| [`liboggz`](liboggz/) | liboggz | 1.1.1 | https://www.xiph.org/oggz/ | -| [`libopenal`](libopenal/) | OpenAL soft | 1.21.1 | https://openal-soft.org/ | -| [`libopus`](libopus/) | libopus | 1.3.1 | hhttps://opus-codec.org/ | -| [`libphysfs`](libphysfs/) | PhysicsFS | 3.0.2 | https://icculus.org/physfs/ | -| [`libpng`](libpng/) | libpng | 1.6.39 | https://libpng.org/ | -| [`libpuffy`](libpuffy/) | libpuffy | 1.0 | https://github.com/ibara/libpuffy | -| [`libsamplerate`](libsamplerate/) | libsamplerate | 0.2.2 | https://libsndfile.github.io/libsamplerate/ | -| [`libsixel`](libsixel/) | libsixel | 1.8.6 | https://github.com/saitoha/libsixel | -| [`libslirp`](libslirp/) | libslirp | 4.7.0 | https://gitlab.freedesktop.org/slirp/libslirp | -| [`libsodium`](libsodium/) | libsodium | 1.0.18 | https://doc.libsodium.org/ | -| [`libssh2`](libssh2/) | libssh2 | 1.10.0 | https://www.libssh2.org/ | -| [`libtheora`](libtheora/) | libtheora | 1.1.1 | https://www.theora.org/ | -| [`libtiff`](libtiff/) | libtiff | 4.5.0 | http://www.libtiff.org/ | -| [`libtool`](libtool/) | libtool | 2.4.7 | https://www.gnu.org/software/libtool/ | -| [`libunistring`](libunistring/) | libunistring | 1.0 | https://www.gnu.org/software/libunistring/ | -| [`libuuid`](libuuid/) | libuuid (from util-linux) | 2.38 | https://github.com/karelzak/util-linux/tree/master/libuuid | -| [`libuv`](libuv/) | libuv | 1.44.1 | https://github.com/libuv/libuv | -| [`libvorbis`](libvorbis/) | libvorbis | 1.3.7 | https://github.com/xiph/vorbis | -| [`libxml2`](libxml2/) | libxml2 | 2.9.14 | http://www.xmlsoft.org/ | -| [`libyaml`](libyaml/) | libyaml | 0.2.5 | https://pyyaml.org/wiki/LibYAML | -| [`libzip`](libzip/) | libzip | 1.8.0 | https://libzip.org/ | -| [`links`](links/) | Links web browser | 2.26 | http://links.twibright.com/ | -| [`lite-xl`](lite-xl/) | Lite-XL | 2.1.0 | https://lite-xl.com/ | -| [`llvm`](llvm/) | LLVM | 16.0.6 | https://llvm.org/ | -| [`lowdown`](lowdown/) | lowdown | 1.0.2 | https://kristaps.bsd.lv/lowdown/ | -| [`lrzip`](lrzip/) | lrzip | 0.651 | https://github.com/ckolivas/lrzip | -| [`lua`](lua/) | Lua | 5.4.4 | https://www.lua.org/ | -| [`luajit`](luajit/) | LuaJIT | 2.1.0-beta3 | https://luajit.org/luajit.html | -| [`luarocks`](luarocks/) | LuaRocks | 3.8.0 | https://luarocks.org/ | -| [`lure`](lure/) | Lure of the Temptress | 1.1 | https://www.scummvm.org/games/#games-lure | -| [`lynx`](lynx/) | Lynx web browser | 2.8.9rel.1 | https://lynx.invisible-island.net/ | -| [`lz4`](lz4/) | lz4 - Extremely Fast Compression algorithm | 1.9.4 | https://github.com/lz4/lz4 | -| [`lzo`](lzo/) | LZO lossless data compression algorithm | 2.10 | https://www.oberhumer.com/opensource/lzo/ | -| [`lzop`](lzop/) | LZO lossless data compression utility | 1.04 | https://www.lzop.org/ | -| [`m4`](m4/) | GNU M4 | 1.4.19 | https://www.gnu.org/software/m4/ | -| [`make`](make/) | GNU make | 4.4.1 | https://www.gnu.org/software/make/ | -| [`mandoc`](mandoc/) | mandoc | 1.14.5 | https://mandoc.bsd.lv/ | -| [`mawk`](mawk/) | mawk | 1.3.4-20200120 | https://invisible-island.net/mawk/ | -| [`mbedtls`](mbedtls/) | Mbed TLS | 3.1.0 | https://tls.mbed.org/ | -| [`mc`](mc/) | Midnight Commander | 4.8.29 | https://midnight-commander.org/ | -| [`md4c`](md4c/) | Markdown for C | 0.4.8 | https://github.com/mity/md4c | -| [`mednafen`](mednafen/) | Mednafen (My Emulator Doesn't Need A Frickin' Excellent Name) | 1.31.0-UNSTABLE | https://mednafen.github.io/ | -| [`mgba`](mgba/) | Game Boy, Game Boy Color and Game Boy Advance emulator | 0.9.3 | https://mgba.io/ | -| [`milkytracker`](milkytracker/) | milkytracker | 1.03.00 | https://github.com/milkytracker/MilkyTracker | -| [`mold`](mold/) | A Modern Linker | 1.5.1 | https://github.com/rui314/mold | -| [`mpc`](mpc/) | GNU Multiple Precision Complex Library (MPC) | 1.2.1 | http://www.multiprecision.org/mpc/ | -| [`mpfr`](mpfr/) | GNU Multiple Precision Floating-Point Reliable Library (MPFR) | 4.1.0 | https://www.mpfr.org/ | -| [`mrsh`](mrsh/) | mrsh | cd3c3a4 | https://mrsh.sh/ | -| [`mruby`](mruby/) | mruby | 3.0.0 | https://mruby.org/ | -| [`mysthous`](mysthous/) | Hi-Res Adventure #1: Mystery House | 1.0 | https://www.scummvm.org/games/#games-hires1 | -| [`nano`](nano/) | GNU nano | 7.2 | https://www.nano-editor.org/ | -| [`nasm`](nasm/) | Netwide Assembler (NASM) | 2.16.01 | https://www.nasm.us/ | -| [`ncdu`](ncdu/) | Ncdu | 1.18.1 | https://dev.yorhel.nl/ncdu | -| [`ncurses`](ncurses/) | ncurses | 6.3 | https://invisible-island.net/ncurses/announce.html | -| [`neofetch`](neofetch/) | neofetch | 7.1.0 | https://github.com/dylanaraps/neofetch | -| [`nesalizer`](nesalizer/) | Nesalizer | 5bb0458 | https://github.com/ulfalizer/nesalizer | -| [`nethack`](nethack/) | nethack | 3.6.7 | https://www.nethack.org/ | -| [`ninja`](ninja/) | Ninja | 1.11.0 | https://ninja-build.org/ | -| [`nippon`](nippon/) | Nippon Safes Inc. | 1.0 | https://www.scummvm.org/games/#games-nippon | -| [`nlohmann-json`](nlohmann-json/) | JSON for Modern C++ | 3.11.2 | https://json.nlohmann.me/ | -| [`npiet`](npiet/) | Piet language interpreter | 1.3f | https://www.bertnase.de/npiet/ | -| [`npth`](npth/) | New GNU Portable Threads Library | 1.6 | https://gnupg.org/software/npth/index.html | -| [`ntbtls`](ntbtls/) | The Not Too Bad TLS Library | 0.2.0 | https://gnupg.org/software/ntbtls/index.html | -| [`nyancat`](nyancat/) | Nyancat | | https://github.com/klange/nyancat | -| [`oksh`](oksh/) | oksh | 7.1 | https://github.com/ibara/oksh | -| [`OpenJDK`](OpenJDK/) | OpenJDK | 17.0.6 | https://openjdk.java.net/ | -| [`openrct2`](openrct2/) | OpenRCT2 | 0.4.4 | https://openrct2.org/ | -| [`openssh`](openssh/) | OpenSSH | 9.0-94eb685 | https://github.com/openssh/openssh-portable | -| [`openssl`](openssl/) | OpenSSL | 1.1.1s | https://www.openssl.org/ | -| [`openttd`](openttd/) | OpenTTD | 12.2 | https://www.openttd.org/ | -| [`openttd-opengfx`](openttd-opengfx/) | OpenGFX graphics for OpenTTD | 7.1 | https://www.openttd.org/ | -| [`openttd-opensfx`](openttd-opensfx/) | OpenSFX audio files for OpenTTD | 1.0.3 | https://www.openttd.org/ | -| [`opentyrian`](opentyrian/) | OpenTyrian | 84b820f | https://github.com/opentyrian/opentyrian | -| [`opentyrian-data`](opentyrian-data/) | OpenTyrian graphics and audio | 1.0.0 | https://camanis.net/tyrian/tyrian21.zip | -| [`opfor`](opfor/) | Half-Life: Opposing Force | 2022.12.26 | https://github.com/FWGS/hlsdk-portable | -| [`optipng`](optipng/) | OptiPNG | 0.7.7 | http://optipng.sourceforge.net/ | -| [`opusfile`](opusfile/) | opusfile | 0.12 | https://opus-codec.org/ | -| [`p7zip`](p7zip/) | p7zip | 17.04 | https://github.com/jinfeihan57/p7zip | -| [`pacman`](pacman/) | Pacman | b6241a3 | https://github.com/ebuc99/pacman | -| [`patch`](patch/) | patch (GNU) | 2.7.6 | https://savannah.gnu.org/projects/patch/ | -| [`pcre`](pcre/) | Perl-compatible Regular Expressions (PCRE) | 8.45 | https://www.pcre.org/ | -| [`pcre2`](pcre2/) | Perl-compatible Regular Expressions (PCRE2) | 10.40 | https://www.pcre.org/ | -| [`pfetch`](pfetch/) | pfetch | a906ff8 | https://github.com/dylanaraps/pfetch/ | -| [`php`](php/) | PHP | 8.1.12 | https://www.php.net/ | -| [`pixman`](pixman/) | pixman | 0.40.0 | http://pixman.org | -| [`pkgconf`](pkgconf/) | pkgconf | 1.8.0 | https://github.com/pkgconf/pkgconf | -| [`poppler`](poppler/) | Poppler is a PDF rendering library | 23.07.0 | https://poppler.freedesktop.org/ | -| [`potrace`](potrace/) | Bitmap tracing utility | 1.16 | https://potrace.sourceforge.net/ | -| [`powdertoy`](powdertoy/) | The Powder Toy | 96.2.350 | https://powdertoy.co.uk/ | -| [`prboom-plus`](prboom-plus/) | PrBoom+ | 2.6.2 | https://prboom-plus.sourceforge.io/ | -| [`printf`](printf/) | printf (OpenBSD) | 6.6 | https://github.com/ibara/libpuffy | -| [`pt2-clone`](pt2-clone/) | ProTracker 2 clone | 1.49 | https://github.com/8bitbubsy/pt2-clone | -| [`pv`](pv/) | Pipe Viewer | 1.6.20 | http://www.ivarch.com/programs/pv.shtml | -| [`python3`](python3/) | Python | 3.11.3 | https://www.python.org/ | -| [`qemu`](qemu/) | QEMU | 8.0.0 | https://qemu.org | -| [`qoi`](qoi/) | Quite OK Image Format for fast, lossless image compression | edb8d7b | https://github.com/phoboslab/qoi | -| [`qt6-qt5compat`](qt6-qt5compat/) | Qt6 Qt5Compat | 6.4.0 | https://doc.qt.io/qt-6/qtcore5-index.html | -| [`qt6-qtbase`](qt6-qtbase/) | Qt6 QtBase | 6.4.0 | https://qt.io | -| [`qt6-serenity`](qt6-serenity/) | QSerenityPlatform | | https://github.com/SerenityPorts/QSerenityPlatform | -| [`quake`](quake/) | Quake | 0.65 | https://github.com/SerenityOS/SerenityQuake | -| [`quake2`](quake2/) | QuakeII | 0.1 | https://github.com/shamazmazum/quake2sdl | -| [`quake3`](quake3/) | QuakeIII | 1.34 | https://github.com/ioquake/ioq3 | -| [`r0`](r0/) | r0 (minimalistic commandline hexadecimal editor) | 0.8 | https://github.com/radareorg/r0 | -| [`radare2`](radare2/) | radare2 reverse engineering framework | 5.7.6 | https://github.com/radareorg/radare2 | -| [`readline`](readline/) | GNU Readline Library | 8.1.2 | https://tiswww.case.edu/php/chet/readline/rltop.html | -| [`RetroArch`](RetroArch/) | RetroArch | 1.12.0 | https://www.retroarch.com | -| [`RISCVEmu`](RISCVEmu/) | A Basic C++ RISC-V Emulator | ad8ad6a | https://github.com/IdanHo/RISCVEmu | -| [`rsync`](rsync/) | rsync | 3.1.3 | https://rsync.samba.org/ | -| [`ruby`](ruby/) | Ruby | 3.2.2 | https://www.ruby-lang.org/ | -| [`rvvm`](rvvm/) | RVVM - The RISC-V Virtual Machine | 0.5 | https://github.com/LekKit/RVVM | -| [`sam`](sam/) | Software Automatic Mouth (SAM) | c86ea39 | https://github.com/vidarh/SAM | -| [`scummvm`](scummvm/) | ScummVM | 2.7.0 | https://www.scummvm.org/ | -| [`sdl12-compat`](sdl12-compat/) | SDL2 compatibility layer for SDL 1.2 games | 1.2.56 | https://github.com/libsdl-org/sdl12-compat/ | -| [`SDL2`](SDL2/) | Simple DirectMedia Layer (SDL2) | 2.24.0 | https://github.com/libsdl-org/SDL | -| [`SDL2-GNUBoy`](SDL2-GNUBoy/) | SDL2 GNUBoy | 1.2.1 | https://github.com/AlexOberhofer/SDL2-GNUBoy | -| [`SDL2_gfx`](SDL2_gfx/) | SDL2\_gfx (Graphics primitives add-on for SDL2) | 1.0.4 | https://sourceforge.net/projects/sdl2gfx/ | -| [`SDL2_image`](SDL2_image/) | SDL2\_image (Image loading add-on for SDL2) | 2.6.2 | https://github.com/libsdl-org/SDL_image | -| [`SDL2_mixer`](SDL2_mixer/) | SDL2\_mixer (Audio mixer add-on for SDL2) | 2.6.2 | https://github.com/libsdl-org/SDL_mixer | -| [`SDL2_net`](SDL2_net/) | SDL2\_net (Network add-on for SDL2) | 2.2.0 | https://github.com/libsdl-org/SDL_net | -| [`SDL2_sound`](SDL2_sound/) | SDL2\_sound (Abstract soundfile decoder add-on for SDL2) | | https://github.com/icculus/SDL_sound | -| [`SDL2_ttf`](SDL2_ttf/) | SDL2\_ttf (TrueType Font add-on for SDL2) | 2.20.1 | https://github.com/libsdl-org/SDL_ttf | -| [`SDL_mixer`](SDL_mixer/) | SDL\_mixer (Audio mixer add-on for SDL 1.2) | 1.2.12 | https://www.libsdl.org/projects/SDL_mixer/release-1.2.html | -| [`SDL_sound`](SDL_sound/) | SDL\_sound (Abstract soundfile decoder add-on for SDL 1.2) | 1.0.3 | https://www.icculus.org/SDL_sound/ | -| [`SDLPoP`](SDLPoP/) | Prince of Persia game | | https://github.com/NagyD/SDLPoP | -| [`sed`](sed/) | GNU sed | 4.9 | https://www.gnu.org/software/sed/ | -| [`serenity-theming`](serenity-theming/) | SerenityOS theming | 103b0ad | https://github.com/SerenityOS/theming | -| [`serious-sam-classic`](serious-sam-classic/) | Serious Sam - The First Encounter | 1.10.4 | https://github.com/tx00100xt/SeriousSamClassic | -| [`sfinx`](sfinx/) | Sfinx | 1.1 | https://www.scummvm.org/games/#games-sfinx | -| [`sl`](sl/) | Steam Locomotive (SL) | | https://github.com/mtoyoda/sl | -| [`soltys`](soltys/) | Soltys | 1.0 | https://www.scummvm.org/games/#games-soltys | -| [`sparsehash`](sparsehash/) | Google's C++ associative containers | 2.0.4 | https://github.com/sparsehash/sparsehash | -| [`speexdsp`](speexdsp/) | Speex audio processing library | 1.2.1 | https://www.speex.org/ | -| [`sqlite`](sqlite/) | SQLite | 3410200 | https://www.sqlite.org/ | -| [`ssmtp`](ssmtp/) | sSMTP is a simple MTA | 2.64-11 | https://wiki.debian.org/sSMTP | -| [`stb`](stb/) | stb single-file public domain libraries for C/C++ | af1a5bc | https://github.com/nothings/stb | -| [`stockfish`](stockfish/) | Stockfish: A free and strong UCI chess engine | 16 | https://github.com/official-stockfish/Stockfish | -| [`stpuzzles`](stpuzzles/) | Simon Tatham's Portable Puzzle Collection | | https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ | -| [`stress-ng`](stress-ng/) | stress-ng | 0.14.03 | https://github.com/ColinIanKing/stress-ng | -| [`Super-Mario`](Super-Mario/) | Super-Mario Clone | | https://github.com/Bennyhwanggggg/Super-Mario-Clone-Cpp | -| [`SuperTuxKart`](SuperTuxKart/) | Super Tux Kart | 1.4 | https://supertuxkart.net/ | -| [`tar`](tar/) | GNU tar | 1.34 | https://www.gnu.org/software/tar/ | -| [`taskwarrior`](taskwarrior/) | TODO list manager | 2.6.2 | https://taskwarrior.org/ | -| [`tcl`](tcl/) | Tcl | 8.6.12 | https://www.tcl-lang.org/ | -| [`termcap`](termcap/) | GNU termcap | 1.3.1 | https://www.gnu.org/software/termutils/ | -| [`thesilversearcher`](thesilversearcher/) | The Silver Searcher: A fast code-searching tool | 2.2.0 | https://github.com/ggreer/the_silver_searcher | -| [`tig`](tig/) | Tig: text-mode interface for Git | 2.5.5 | https://jonas.github.io/tig/ | -| [`timidity`](timidity/) | TiMidity++ | 2.15.0 | http://timidity.sourceforge.net | -| [`tinycc`](tinycc/) | Tiny C Compiler (TinyCC) | dev | https://github.com/TinyCC/tinycc | -| [`tinyscheme`](tinyscheme/) | TinyScheme Interpreter | 1.42 | https://sourceforge.net/projects/tinyscheme/ | -| [`tr`](tr/) | tr (OpenBSD) | 6.7 | https://github.com/ibara/libpuffy | -| [`tree`](tree/) | tree | 2.0.4 | https://github.com/Old-Man-Programmer/tree | -| [`tuxracer`](tuxracer/) | Tux Racer | 0.61 | http://tuxracer.sourceforge.net/ | -| [`vim`](vim/) | Vim | 8.2.4554 | https://www.vim.org/ | -| [`vitetris`](vitetris/) | vitetris | 0.59.1 | https://github.com/vicgeralds/vitetris | -| [`vlang`](vlang/) | V programming language | weekly.2021.31 | https://github.com/vlang/v | -| [`vttest`](vttest/) | vttest | 20220215 | https://invisible-island.net/vttest/ | -| [`VVVVVV`](VVVVVV/) | Terry Cavanagh's VVVVVV | 2.3.6 | https://github.com/TerryCavanagh/VVVVVV/ | -| [`wayland`](wayland/) | Wayland client libraries | 1.21.0 | https://wayland.freedesktop.org/ | -| [`wget`](wget/) | GNU Wget | 1.21.3 | https://www.gnu.org/software/wget/ | -| [`which`](which/) | GNU which | 2.21 | https://www.gnu.org/software/which/ | -| [`wireguard-tools`](wireguard-tools/) | WireGuard Tools | 1.0.20210914 | https://www.wireguard.com/ | -| [`x264`](x264/) | x264 | baee400 | https://www.videolan.org/developers/x264.html | -| [`x265`](x265/) | x265 | 3.5 | https://bitbucket.org/multicoreware/x265_git/wiki/Home | -| [`xash3d-fwgs`](xash3d-fwgs/) | Xash3D FWGS game engine | 2022.12.26 | https://github.com/FWGS/xash3d-fwgs | -| [`xz`](xz/) | xz | 5.2.5 | https://tukaani.org/xz/ | -| [`yasm`](yasm/) | Yasm Modular Assembler | 1.3.0 | https://yasm.tortall.net/ | -| [`zig`](zig/) | Zig programming language | 0.11.0-dev.670+f7fea080b | https://ziglang.org/ | -| [`zlib`](zlib/) | zlib | 1.2.13 | https://www.zlib.net/ | -| [`zsh`](zsh/) | Z Shell (Zsh) | 5.9 | https://www.zsh.org | -| [`zstd`](zstd/) | Zstandard | 1.5.2 | https://facebook.github.io/zstd/ | +| Port | Name | Version | Website | +|-----------------------------------------------------|-----------------------------------------------------------------|---------------------------|--------------------------------------------------------------------------------| +| [`aclock`](aclock/) | aclock | 2.3 | https://github.com/tenox7/aclock | +| [`acpica-tools`](acpica-tools/) | ACPI Component Architecture Project Userspace Utilities | 20220331 | https://acpica.org/downloads | +| [`alpine`](alpine/) | Alpine Email Client | 2.26 | https://alpineapp.email | +| [`angband`](angband/) | Angband | 4.2.4 | https://rephial.org | +| [`Another-World`](Another-World/) | Another World Bytecode Interpreter | | https://github.com/fabiensanglard/Another-World-Bytecode-Interpreter | +| [`aria2`](aria2/) | aria2 | 1.36.0 | https://aria2.github.io | +| [`awk`](awk/) | The One True Awk | 20220122 | https://github.com/onetrueawk/awk | +| [`backward-cpp`](backward-cpp/) | Backward-cpp | 65a769f | https://github.com/bombela/backward-cpp | +| [`bash`](bash/) | GNU Bash | 5.2.15 | https://www.gnu.org/software/bash/ | +| [`bass`](bass/) | Beneath a Steel Sky | cd-1.2 | https://www.scummvm.org/games | +| [`bc`](bc/) | bc | 6.5.0 | https://github.com/gavinhoward/bc | +| [`bdwgc`](bdwgc/) | Boehm-Demers-Weiser Garbage Collector (libgc) | 8.2.2 | https://github.com/ivmai/bdwgc | +| [`binutils`](binutils/) | GNU Binutils | 2.40 | https://www.gnu.org/software/binutils/ | +| [`bison`](bison/) | GNU Bison | 3.8 | https://www.gnu.org/software/bison/ | +| [`bochs`](bochs/) | Bochs x86 PC emulator | 2.7 | https://sourceforge.net/projects/bochs/ | +| [`boost`](boost/) | Boost C++ libraries | 1.80.0 | https://www.boost.org/ | +| [`brogue`](brogue/) | BrogueCE | 1.11.1 | https://github.com/tmewett/BrogueCE | +| [`brotli`](brotli/) | Brotli | 1.0.9 | https://github.com/google/brotli | +| [`byacc`](byacc/) | Berkeley Yacc | 20220128 | https://invisible-island.net/byacc/byacc.html | +| [`bzip2`](bzip2/) | bzip2 | 1.0.8 | https://sourceware.org/bzip2/ | +| [`bzip3`](bzip3/) | bzip3 | 1.2.2 | https://github.com/kspalaiologos/bzip3 | +| [`c-ares`](c-ares/) | c-ares | 1.19.0 | https://c-ares.org | +| [`c-ray`](c-ray/) | C-Ray | 8f30eb9 | https://github.com/vkoskiv/c-ray | +| [`ca-certificates`](ca-certificates/) | Mozilla CA certificate store | 2022-04-26 | https://curl.se/docs/caextract.html | +| [`carl`](carl/) | Crypto Ancienne Resource Loader | 1.5 | https://github.com/classilla/cryanc | +| [`cavestory`](cavestory/) | Cave Story | 2.6.5-1 | https://github.com/nxengine/nxengine-evo | +| [`cbonsai`](cbonsai/) | cbonsai | 1.3.1 | https://gitlab.com/jallbrit/cbonsai | +| [`ccache`](ccache/) | ccache | 4.6.3 | https://ccache.dev/ | +| [`cfunge`](cfunge/) | cfunge | 2bc4fb2 | https://github.com/VorpalBlade/cfunge/ | +| [`chester`](chester/) | Chester Gameboy Emulator | | https://github.com/veikkos/chester | +| [`chocolate-doom`](chocolate-doom/) | Chocolate Doom | 3.0.1 | https://www.chocolate-doom.org/ | +| [`citron`](citron/) | Citron Programming Language | 0.0.9.3 | https://github.com/alimpfard/citron | +| [`ClassiCube`](ClassiCube/) | ClassiCube | 1.3.3 | https://github.com/UnknownShadow200/ClassiCube | +| [`cmake`](cmake/) | CMake | 3.26.4 | https://cmake.org/ | +| [`cmatrix`](cmatrix/) | cmatrix | 3112b12 | https://github.com/abishekvashok/cmatrix | +| [`composer`](composer/) | Composer | 2.4.3 | https://getcomposer.org/ | +| [`coreutils`](coreutils/) | GNU core utilities | 9.1 | https://www.gnu.org/software/coreutils/ | +| [`cpio`](cpio/) | GNU cpio archive utility | 2.13 | https://www.gnu.org/software/cpio/ | +| [`curl`](curl/) | curl | 8.0.1 | https://curl.se/ | +| [`dash`](dash/) | DASH | 0.5.10.2 | http://gondor.apana.org.au/~herbert/dash | +| [`deutex`](deutex/) | DeuTex | 5.2.2 | https://github.com/Doom-Utils/deutex | +| [`dialog`](dialog/) | Dialog | 1.3-20220526 | https://invisible-island.net/dialog/ | +| [`diffutils`](diffutils/) | GNU Diffutils | 3.8 | https://www.gnu.org/software/diffutils/ | +| [`dmidecode`](dmidecode/) | dmidecode | 3.5 | https://github.com/mirror/dmidecode | +| [`doom`](doom/) | DOOM | | https://github.com/SerenityOS/SerenityDOOM | +| [`dos2unix`](dos2unix/) | dos2unix | 7.5.0 | https://waterlan.home.xs4all.nl/dos2unix.html | +| [`dosbox-staging`](dosbox-staging/) | DOSBox Staging | 0.77.1 | https://dosbox-staging.github.io/ | +| [`dosfstools`](dosfstools/) | dosfstools utility suite | 4.2 | https://github.com/dosfstools/dosfstools/ | +| [`double-conversion`](double-conversion/) | double-conversion | 3.2.1 | https://github.com/google/double-conversion | +| [`drascula`](drascula/) | DrĂ¡scula: The Vampire Strikes Back | 1.0 | https://www.scummvm.org/games/#games-drascula | +| [`dreamweb`](dreamweb/) | DreamWeb | 1.1 | https://www.scummvm.org/games/#games-dreamweb | +| [`dropbear`](dropbear/) | Dropbear SSH | 2022.82 | https://dropbear.nl/mirror/dropbear.html | +| [`dtc`](dtc/) | Device Tree Compiler | 1.7.0 | https://github.com/dgibson/dtc | +| [`dungeonrush`](dungeonrush/) | DungeonRush | 1.1-beta | https://github.com/Rapiz1/DungeonRush | +| [`e2fsprogs`](e2fsprogs/) | e2fsprogs | 1.46.5 | http://e2fsprogs.sourceforge.net/ | +| [`ed`](ed/) | GNU ed | 1.18 | https://www.gnu.org/software/ed/ | +| [`edid-decode`](edid-decode/) | edid-decode | 20220315.cb74358c2896 | https://git.linuxtv.org/edid-decode | +| [`editline`](editline/) | editline | 1.17.1 | https://github.com/troglobit/editline | +| [`emu2`](emu2/) | emu2 DOS emulator | 2021.01 | https://github.com/dmsc/emu2 | +| [`epsilon`](epsilon/) | graphical calculator simulator | 15.5.0 | https://github.com/numworks/epsilon | +| [`expat`](expat/) | Expat XML parser | 2.5.0 | https://libexpat.github.io/ | +| [`ffmpeg`](ffmpeg/) | ffmpeg | 5.0 | https://ffmpeg.org | +| [`figlet`](figlet/) | FIGlet | 2.2.5 | http://www.figlet.org/ | +| [`file`](file/) | file (determine file type) | 5.44 | https://www.darwinsys.com/file/ | +| [`findutils`](findutils/) | GNU findutils | 4.9.0 | https://www.gnu.org/software/findutils/ | +| [`fio`](fio/) | fio - Flexible I/O tester | 3.33 | https://fio.readthedocs.io/en/latest/ | +| [`flac`](flac/) | Free Lossless Audio Codec | 1.4.2 | https://xiph.org/flac/ | +| [`flatbuffers`](flatbuffers/) | Flatbuffers | 2.0.0 | https://github.com/google/flatbuffers | +| [`flex`](flex/) | flex | 2.6.4 | https://github.com/westes/flex | +| [`fontconfig`](fontconfig/) | Fontconfig | 2.14.0 | https://www.freedesktop.org/wiki/Software/fontconfig/ | +| [`fotaq`](fotaq/) | Flight of the Amazon Queen | 1.0 | https://www.scummvm.org/games/#games-queen | +| [`freeciv`](freeciv/) | Freeciv | 3.0.0-beta2 | http://freeciv.org/ | +| [`freedink`](freedink/) | FreeDink | 109.6 | https://www.gnu.org/software/freedink/ | +| [`freetype`](freetype/) | FreeType | 2.13.0 | https://www.freetype.org/ | +| [`frotz`](frotz/) | Frotz | 2.54 | https://gitlab.com/DavidGriffith/frotz | +| [`gawk`](gawk/) | GNU awk | 5.2.1 | https://www.gnu.org/software/gawk/ | +| [`gcc`](gcc/) | GNU Compiler Collection | 13.1.0 | https://gcc.gnu.org/ | +| [`gdb`](gdb/) | GNU Project Debugger | 11.2 | https://sourceware.org/gdb | +| [`gemrb`](gemrb/) | GemRB | 0.9.1 | https://gemrb.org/ | +| [`genemu`](genemu/) | Genesis / MegaDrive Emulator | e39f690 | https://github.com/rasky/genemu | +| [`genext2fs`](genext2fs/) | genext2fs | 1.5.0 | https://github.com/bestouff/genext2fs | +| [`gettext`](gettext/) | GNU gettext | 0.21.1 | https://www.gnu.org/software/gettext/ | +| [`git`](git/) | Git | 2.40.0 | https://git-scm.com/ | +| [`glib`](glib/) | GLib | 2.76.1 | https://wiki.gnome.org/Projects/GLib | +| [`glm`](glm/) | OpenGL Mathematics (GLM) | 0.9.9.8 | https://github.com/g-truc/glm | +| [`gltron`](gltron/) | GLTron | 0.70 | http://gltron.org | +| [`glu`](glu/) | Mesa GLU | 9.0.2 | https://gitlab.freedesktop.org/mesa/glu | +| [`gmp`](gmp/) | GNU Multiple Precision Arithmetic Library (GMP) | 6.2.1 | https://gmplib.org/ | +| [`gnuapl`](gnuapl/) | GNU APL | 1.8 | https://www.gnu.org/software/apl/ | +| [`gnucobol`](gnucobol/) | GnuCOBOL | 3.1.2 | https://gnucobol.sourceforge.io/ | +| [`gnupg`](gnupg/) | GnuPG | 2.3.0 | https://gnupg.org/software/index.html | +| [`gnuplot`](gnuplot/) | Gnuplot | 5.2.8 | http://www.gnuplot.info/ | +| [`gperf`](gperf/) | GNU gperf | 3.1 | https://www.gnu.org/software/gperf/ | +| [`grep`](grep/) | GNU Grep | 3.10 | https://www.gnu.org/software/grep/ | +| [`grepcidr`](grepcidr/) | grepcidr | 2.0 | http://www.pc-tools.net/unix/grepcidr/ | +| [`griffon`](griffon/) | The Griffon Legend | 1.0 | https://www.scummvm.org/games/#games-griffon | +| [`gsl`](gsl/) | GNU Scientific Library | 2.7.1 | https://www.gnu.org/software/gsl/ | +| [`guile`](guile/) | The GNU guile programming language | 3.0.8 | https://www.gnu.org/software/guile/ | +| [`gzip`](gzip/) | GNU gzip | 1.12 | https://www.gnu.org/software/gzip/ | +| [`halflife`](halflife/) | Half-Life | 2022.12.26 | https://github.com/FWGS/hlsdk-portable | +| [`harfbuzz`](harfbuzz/) | HarfBuzz | 4.3.0 | https://github.com/harfbuzz/harfbuzz | +| [`hatari`](hatari/) | Atari ST/STE/TT/Falcon emulator | 2.4.0-devel | https://hatari.tuxfamily.org/ | +| [`hexedit`](hexedit/) | A console-based hex editor | 1.6 | https://github.com/pixel/hexedit | +| [`imagemagick`](imagemagick/) | ImageMagick | 7.1.1-5 | https://imagemagick.org | +| [`imgcat`](imgcat/) | imgcat | 2.5.1 | https://github.com/eddieantonio/imgcat | +| [`indent`](indent/) | GNU indent | 2.2.11 | https://www.gnu.org/software/indent/ | +| [`isl`](isl/) | Integer Set Library | 0.24 | https://libisl.sourceforge.io/ | +| [`ja2`](ja2/) | Jagged Alliance 2 Stracciatella | 0.15.x | https://github.com/safarp/ja2-stracciatella/tree/0.15.x | +| [`jakt`](jakt/) | Jakt Programming Language | | https://github.com/SerenityOS/jakt | +| [`jdupes`](jdupes/) | jdupes, an enhanced fork of 'fdupes' | 1.26.1 | https://github.com/jbruchon/jdupes | +| [`jfduke3d`](jfduke3d/) | JonoF's Duke Nukem 3D Port | 41cd46b | https://github.com/jonof/jfduke3d | +| [`joe`](joe/) | joe's own editor | 4.6 | https://joe-editor.sourceforge.io/ | +| [`jot`](jot/) | jot (OpenBSD) | 6.6 | https://github.com/ibara/libpuffy | +| [`jq`](jq/) | jq | 1.6 | https://stedolan.github.io/jq/ | +| [`kakoune`](kakoune/) | Modal text editor | 24d6072 | https://github.com/mawww/kakoune | +| [`klong`](klong/) | Klong | 20220315 | https://t3x.org/klong/ | +| [`less`](less/) | less | 590 | https://www.greenwoodsoftware.com/less/ | +| [`libarchive`](libarchive/) | libarchive | 3.6.1 | https://libarchive.org/ | +| [`libassuan`](libassuan/) | libassuan | 2.5.5 | https://gnupg.org/software/libassuan/index.html | +| [`libatomic_ops`](libatomic_ops/) | libatomic\_ops | 7.6.12 | https://www.hboehm.info/gc/ | +| [`libexpat`](libexpat/) | Expat | 2.4.8 | https://libexpat.github.io/ | +| [`libffi`](libffi/) | libffi | 3.4.2 | https://www.sourceware.org/libffi/ | +| [`libfftw3f`](libfftw3f/) | Fastest Fourier Transform in the West (single precision) | 3.3.10 | https://www.fftw.org/ | +| [`libgcrypt`](libgcrypt/) | libgcrypt | 1.10.1 | https://gnupg.org/software/libgcrypt/index.html | +| [`libgd`](libgd/) | libgd | 2.3.3 | https://libgd.github.io/ | +| [`libgpg-error`](libgpg-error/) | libgpg-error | 1.45 | https://gnupg.org/software/libgpg-error/index.html | +| [`libiconv`](libiconv/) | GNU libiconv | 1.17 | https://www.gnu.org/software/libiconv/ | +| [`libicu`](libicu/) | ICU | 69.1 | http://site.icu-project.org/ | +| [`libjodycode`](libjodycode/) | libjodycode | 3.1 | https://github.com/jbruchon/libjodycode | +| [`libjpeg`](libjpeg/) | libjpeg | 9e | https://ijg.org/ | +| [`libksba`](libksba/) | libksba | 1.5.1 | https://gnupg.org/software/libksba/index.html | +| [`libmad`](libmad/) | libmad | 0.15.1b | https://www.underbit.com/products/mad/ | +| [`libmikmod`](libmikmod/) | libmikmod | 3.3.11.1 | http://mikmod.sourceforge.net/ | +| [`libmodplug`](libmodplug/) | libmodplug | 0.8.9.0 | http://modplug-xmms.sourceforge.net/ | +| [`libmpeg2`](libmpeg2/) | libmpeg2 | 0.5.1 | https://libmpeg2.sourceforge.io/ | +| [`libmpg123`](libmpg123/) | libmpg123 | 1.29.3 | https://www.mpg123.de/ | +| [`libogg`](libogg/) | libogg | 1.3.5 | https://github.com/xiph/ogg | +| [`liboggz`](liboggz/) | liboggz | 1.1.1 | https://www.xiph.org/oggz/ | +| [`libopenal`](libopenal/) | OpenAL soft | 1.21.1 | https://openal-soft.org/ | +| [`libopus`](libopus/) | libopus | 1.3.1 | hhttps://opus-codec.org/ | +| [`libphysfs`](libphysfs/) | PhysicsFS | 3.0.2 | https://icculus.org/physfs/ | +| [`libpng`](libpng/) | libpng | 1.6.39 | https://libpng.org/ | +| [`libpuffy`](libpuffy/) | libpuffy | 1.0 | https://github.com/ibara/libpuffy | +| [`libsamplerate`](libsamplerate/) | libsamplerate | 0.2.2 | https://libsndfile.github.io/libsamplerate/ | +| [`libsixel`](libsixel/) | libsixel | 1.8.6 | https://github.com/saitoha/libsixel | +| [`libslirp`](libslirp/) | libslirp | 4.7.0 | https://gitlab.freedesktop.org/slirp/libslirp | +| [`libsodium`](libsodium/) | libsodium | 1.0.18 | https://doc.libsodium.org/ | +| [`libssh2`](libssh2/) | libssh2 | 1.10.0 | https://www.libssh2.org/ | +| [`libtheora`](libtheora/) | libtheora | 1.1.1 | https://www.theora.org/ | +| [`libtiff`](libtiff/) | libtiff | 4.5.0 | http://www.libtiff.org/ | +| [`libtool`](libtool/) | libtool | 2.4.7 | https://www.gnu.org/software/libtool/ | +| [`libunistring`](libunistring/) | libunistring | 1.0 | https://www.gnu.org/software/libunistring/ | +| [`libuuid`](libuuid/) | libuuid (from util-linux) | 2.38 | https://github.com/karelzak/util-linux/tree/master/libuuid | +| [`libuv`](libuv/) | libuv | 1.44.1 | https://github.com/libuv/libuv | +| [`libvorbis`](libvorbis/) | libvorbis | 1.3.7 | https://github.com/xiph/vorbis | +| [`libxml2`](libxml2/) | libxml2 | 2.9.14 | http://www.xmlsoft.org/ | +| [`libyaml`](libyaml/) | libyaml | 0.2.5 | https://pyyaml.org/wiki/LibYAML | +| [`libzip`](libzip/) | libzip | 1.8.0 | https://libzip.org/ | +| [`links`](links/) | Links web browser | 2.26 | http://links.twibright.com/ | +| [`lite-xl`](lite-xl/) | Lite-XL | 2.1.0 | https://lite-xl.com/ | +| [`llvm`](llvm/) | LLVM | 16.0.6 | https://llvm.org/ | +| [`lowdown`](lowdown/) | lowdown | 1.0.2 | https://kristaps.bsd.lv/lowdown/ | +| [`lrzip`](lrzip/) | lrzip | 0.651 | https://github.com/ckolivas/lrzip | +| [`lua`](lua/) | Lua | 5.4.4 | https://www.lua.org/ | +| [`luajit`](luajit/) | LuaJIT | 2.1.0-beta3 | https://luajit.org/luajit.html | +| [`luarocks`](luarocks/) | LuaRocks | 3.8.0 | https://luarocks.org/ | +| [`lure`](lure/) | Lure of the Temptress | 1.1 | https://www.scummvm.org/games/#games-lure | +| [`lynx`](lynx/) | Lynx web browser | 2.8.9rel.1 | https://lynx.invisible-island.net/ | +| [`lz4`](lz4/) | lz4 - Extremely Fast Compression algorithm | 1.9.4 | https://github.com/lz4/lz4 | +| [`lzo`](lzo/) | LZO lossless data compression algorithm | 2.10 | https://www.oberhumer.com/opensource/lzo/ | +| [`lzop`](lzop/) | LZO lossless data compression utility | 1.04 | https://www.lzop.org/ | +| [`m4`](m4/) | GNU M4 | 1.4.19 | https://www.gnu.org/software/m4/ | +| [`make`](make/) | GNU make | 4.4.1 | https://www.gnu.org/software/make/ | +| [`mandoc`](mandoc/) | mandoc | 1.14.5 | https://mandoc.bsd.lv/ | +| [`mawk`](mawk/) | mawk | 1.3.4-20200120 | https://invisible-island.net/mawk/ | +| [`mbedtls`](mbedtls/) | Mbed TLS | 3.1.0 | https://tls.mbed.org/ | +| [`mc`](mc/) | Midnight Commander | 4.8.29 | https://midnight-commander.org/ | +| [`md4c`](md4c/) | Markdown for C | 0.4.8 | https://github.com/mity/md4c | +| [`mednafen`](mednafen/) | Mednafen (My Emulator Doesn't Need A Frickin' Excellent Name) | 1.31.0-UNSTABLE | https://mednafen.github.io/ | +| [`mgba`](mgba/) | Game Boy, Game Boy Color and Game Boy Advance emulator | 0.9.3 | https://mgba.io/ | +| [`milkytracker`](milkytracker/) | milkytracker | 1.03.00 | https://github.com/milkytracker/MilkyTracker | +| [`mold`](mold/) | A Modern Linker | 1.5.1 | https://github.com/rui314/mold | +| [`mpc`](mpc/) | GNU Multiple Precision Complex Library (MPC) | 1.2.1 | http://www.multiprecision.org/mpc/ | +| [`mpfr`](mpfr/) | GNU Multiple Precision Floating-Point Reliable Library (MPFR) | 4.1.0 | https://www.mpfr.org/ | +| [`mrsh`](mrsh/) | mrsh | cd3c3a4 | https://mrsh.sh/ | +| [`mruby`](mruby/) | mruby | 3.0.0 | https://mruby.org/ | +| [`mysthous`](mysthous/) | Hi-Res Adventure #1: Mystery House | 1.0 | https://www.scummvm.org/games/#games-hires1 | +| [`nano`](nano/) | GNU nano | 7.2 | https://www.nano-editor.org/ | +| [`nasm`](nasm/) | Netwide Assembler (NASM) | 2.16.01 | https://www.nasm.us/ | +| [`ncdu`](ncdu/) | Ncdu | 1.18.1 | https://dev.yorhel.nl/ncdu | +| [`ncurses`](ncurses/) | ncurses | 6.3 | https://invisible-island.net/ncurses/announce.html | +| [`neofetch`](neofetch/) | neofetch | 7.1.0 | https://github.com/dylanaraps/neofetch | +| [`nesalizer`](nesalizer/) | Nesalizer | 5bb0458 | https://github.com/ulfalizer/nesalizer | +| [`nethack`](nethack/) | nethack | 3.6.7 | https://www.nethack.org/ | +| [`ninja`](ninja/) | Ninja | 1.11.0 | https://ninja-build.org/ | +| [`nippon`](nippon/) | Nippon Safes Inc. | 1.0 | https://www.scummvm.org/games/#games-nippon | +| [`nlohmann-json`](nlohmann-json/) | JSON for Modern C++ | 3.11.2 | https://json.nlohmann.me/ | +| [`npiet`](npiet/) | Piet language interpreter | 1.3f | https://www.bertnase.de/npiet/ | +| [`npth`](npth/) | New GNU Portable Threads Library | 1.6 | https://gnupg.org/software/npth/index.html | +| [`ntbtls`](ntbtls/) | The Not Too Bad TLS Library | 0.2.0 | https://gnupg.org/software/ntbtls/index.html | +| [`nyancat`](nyancat/) | Nyancat | | https://github.com/klange/nyancat | +| [`oksh`](oksh/) | oksh | 7.1 | https://github.com/ibara/oksh | +| [`OpenJDK`](OpenJDK/) | OpenJDK | 17.0.6 | https://openjdk.java.net/ | +| [`openrct2`](openrct2/) | OpenRCT2 | 0.4.4 | https://openrct2.org/ | +| [`openssh`](openssh/) | OpenSSH | 9.0-94eb685 | https://github.com/openssh/openssh-portable | +| [`openssl`](openssl/) | OpenSSL | 1.1.1s | https://www.openssl.org/ | +| [`openttd`](openttd/) | OpenTTD | 12.2 | https://www.openttd.org/ | +| [`openttd-opengfx`](openttd-opengfx/) | OpenGFX graphics for OpenTTD | 7.1 | https://www.openttd.org/ | +| [`openttd-opensfx`](openttd-opensfx/) | OpenSFX audio files for OpenTTD | 1.0.3 | https://www.openttd.org/ | +| [`opentyrian`](opentyrian/) | OpenTyrian | 84b820f | https://github.com/opentyrian/opentyrian | +| [`opentyrian-data`](opentyrian-data/) | OpenTyrian graphics and audio | 1.0.0 | https://camanis.net/tyrian/tyrian21.zip | +| [`opfor`](opfor/) | Half-Life: Opposing Force | 2022.12.26 | https://github.com/FWGS/hlsdk-portable | +| [`optipng`](optipng/) | OptiPNG | 0.7.7 | http://optipng.sourceforge.net/ | +| [`opusfile`](opusfile/) | opusfile | 0.12 | https://opus-codec.org/ | +| [`p7zip`](p7zip/) | p7zip | 17.04 | https://github.com/jinfeihan57/p7zip | +| [`pacman`](pacman/) | Pacman | b6241a3 | https://github.com/ebuc99/pacman | +| [`patch`](patch/) | patch (GNU) | 2.7.6 | https://savannah.gnu.org/projects/patch/ | +| [`pcre`](pcre/) | Perl-compatible Regular Expressions (PCRE) | 8.45 | https://www.pcre.org/ | +| [`pcre2`](pcre2/) | Perl-compatible Regular Expressions (PCRE2) | 10.40 | https://www.pcre.org/ | +| [`pfetch`](pfetch/) | pfetch | a906ff8 | https://github.com/dylanaraps/pfetch/ | +| [`php`](php/) | PHP | 8.1.12 | https://www.php.net/ | +| [`pixman`](pixman/) | pixman | 0.40.0 | http://pixman.org | +| [`pkgconf`](pkgconf/) | pkgconf | 1.8.0 | https://github.com/pkgconf/pkgconf | +| [`poppler`](poppler/) | Poppler is a PDF rendering library | 23.07.0 | https://poppler.freedesktop.org/ | +| [`potrace`](potrace/) | Bitmap tracing utility | 1.16 | https://potrace.sourceforge.net/ | +| [`powdertoy`](powdertoy/) | The Powder Toy | 96.2.350 | https://powdertoy.co.uk/ | +| [`prboom-plus`](prboom-plus/) | PrBoom+ | 2.6.2 | https://prboom-plus.sourceforge.io/ | +| [`printf`](printf/) | printf (OpenBSD) | 6.6 | https://github.com/ibara/libpuffy | +| [`pt2-clone`](pt2-clone/) | ProTracker 2 clone | 1.49 | https://github.com/8bitbubsy/pt2-clone | +| [`pv`](pv/) | Pipe Viewer | 1.6.20 | http://www.ivarch.com/programs/pv.shtml | +| [`python3`](python3/) | Python | 3.11.3 | https://www.python.org/ | +| [`qemu`](qemu/) | QEMU | 8.0.0 | https://qemu.org | +| [`qoi`](qoi/) | Quite OK Image Format for fast, lossless image compression | edb8d7b | https://github.com/phoboslab/qoi | +| [`qt6-qt5compat`](qt6-qt5compat/) | Qt6 Qt5Compat | 6.4.0 | https://doc.qt.io/qt-6/qtcore5-index.html | +| [`qt6-qtbase`](qt6-qtbase/) | Qt6 QtBase | 6.4.0 | https://qt.io | +| [`qt6-serenity`](qt6-serenity/) | QSerenityPlatform | | https://github.com/SerenityPorts/QSerenityPlatform | +| [`quake`](quake/) | Quake | 0.65 | https://github.com/SerenityOS/SerenityQuake | +| [`quake2`](quake2/) | QuakeII | 0.1 | https://github.com/shamazmazum/quake2sdl | +| [`quake3`](quake3/) | QuakeIII | 1.34 | https://github.com/ioquake/ioq3 | +| [`r0`](r0/) | r0 (minimalistic commandline hexadecimal editor) | 0.8 | https://github.com/radareorg/r0 | +| [`radare2`](radare2/) | radare2 reverse engineering framework | 5.7.6 | https://github.com/radareorg/radare2 | +| [`readline`](readline/) | GNU Readline Library | 8.1.2 | https://tiswww.case.edu/php/chet/readline/rltop.html | +| [`RetroArch`](RetroArch/) | RetroArch | 1.12.0 | https://www.retroarch.com | +| [`RISCVEmu`](RISCVEmu/) | A Basic C++ RISC-V Emulator | ad8ad6a | https://github.com/IdanHo/RISCVEmu | +| [`rsync`](rsync/) | rsync | 3.1.3 | https://rsync.samba.org/ | +| [`ruby`](ruby/) | Ruby | 3.2.2 | https://www.ruby-lang.org/ | +| [`rvvm`](rvvm/) | RVVM - The RISC-V Virtual Machine | 0.5 | https://github.com/LekKit/RVVM | +| [`sam`](sam/) | Software Automatic Mouth (SAM) | c86ea39 | https://github.com/vidarh/SAM | +| [`scummvm`](scummvm/) | ScummVM | 2.7.0 | https://www.scummvm.org/ | +| [`sdl12-compat`](sdl12-compat/) | SDL2 compatibility layer for SDL 1.2 games | 1.2.56 | https://github.com/libsdl-org/sdl12-compat/ | +| [`SDL2`](SDL2/) | Simple DirectMedia Layer (SDL2) | 2.24.0 | https://github.com/libsdl-org/SDL | +| [`SDL2-GNUBoy`](SDL2-GNUBoy/) | SDL2 GNUBoy | 1.2.1 | https://github.com/AlexOberhofer/SDL2-GNUBoy | +| [`SDL2_gfx`](SDL2_gfx/) | SDL2\_gfx (Graphics primitives add-on for SDL2) | 1.0.4 | https://sourceforge.net/projects/sdl2gfx/ | +| [`SDL2_image`](SDL2_image/) | SDL2\_image (Image loading add-on for SDL2) | 2.6.2 | https://github.com/libsdl-org/SDL_image | +| [`SDL2_mixer`](SDL2_mixer/) | SDL2\_mixer (Audio mixer add-on for SDL2) | 2.6.2 | https://github.com/libsdl-org/SDL_mixer | +| [`SDL2_net`](SDL2_net/) | SDL2\_net (Network add-on for SDL2) | 2.2.0 | https://github.com/libsdl-org/SDL_net | +| [`SDL2_sound`](SDL2_sound/) | SDL2\_sound (Abstract soundfile decoder add-on for SDL2) | | https://github.com/icculus/SDL_sound | +| [`SDL2_ttf`](SDL2_ttf/) | SDL2\_ttf (TrueType Font add-on for SDL2) | 2.20.1 | https://github.com/libsdl-org/SDL_ttf | +| [`SDL_mixer`](SDL_mixer/) | SDL\_mixer (Audio mixer add-on for SDL 1.2) | 1.2.12 | https://www.libsdl.org/projects/SDL_mixer/release-1.2.html | +| [`SDL_sound`](SDL_sound/) | SDL\_sound (Abstract soundfile decoder add-on for SDL 1.2) | 1.0.3 | https://www.icculus.org/SDL_sound/ | +| [`SDLPoP`](SDLPoP/) | Prince of Persia game | | https://github.com/NagyD/SDLPoP | +| [`sed`](sed/) | GNU sed | 4.9 | https://www.gnu.org/software/sed/ | +| [`serenity-theming`](serenity-theming/) | SerenityOS theming | 103b0ad | https://github.com/SerenityOS/theming | +| [`serious-sam-classic`](serious-sam-classic/) | Serious Sam - The First Encounter | 1.10.4 | https://github.com/tx00100xt/SeriousSamClassic | +| [`sfinx`](sfinx/) | Sfinx | 1.1 | https://www.scummvm.org/games/#games-sfinx | +| [`sl`](sl/) | Steam Locomotive (SL) | | https://github.com/mtoyoda/sl | +| [`soltys`](soltys/) | Soltys | 1.0 | https://www.scummvm.org/games/#games-soltys | +| [`sparsehash`](sparsehash/) | Google's C++ associative containers | 2.0.4 | https://github.com/sparsehash/sparsehash | +| [`speexdsp`](speexdsp/) | Speex audio processing library | 1.2.1 | https://www.speex.org/ | +| [`sqlite`](sqlite/) | SQLite | 3410200 | https://www.sqlite.org/ | +| [`ssmtp`](ssmtp/) | sSMTP is a simple MTA | 2.64-11 | https://wiki.debian.org/sSMTP | +| [`stb`](stb/) | stb single-file public domain libraries for C/C++ | af1a5bc | https://github.com/nothings/stb | +| [`stockfish`](stockfish/) | Stockfish: A free and strong UCI chess engine | 16 | https://github.com/official-stockfish/Stockfish | +| [`stpuzzles`](stpuzzles/) | Simon Tatham's Portable Puzzle Collection | | https://www.chiark.greenend.org.uk/~sgtatham/puzzles/ | +| [`stress-ng`](stress-ng/) | stress-ng | 0.14.03 | https://github.com/ColinIanKing/stress-ng | +| [`Super-Mario`](Super-Mario/) | Super-Mario Clone | | https://github.com/Bennyhwanggggg/Super-Mario-Clone-Cpp | +| [`SuperTuxKart`](SuperTuxKart/) | Super Tux Kart | 1.4 | https://supertuxkart.net/ | +| [`tar`](tar/) | GNU tar | 1.34 | https://www.gnu.org/software/tar/ | +| [`taskwarrior`](taskwarrior/) | TODO list manager | 2.6.2 | https://taskwarrior.org/ | +| [`tcl`](tcl/) | Tcl | 8.6.12 | https://www.tcl-lang.org/ | +| [`termcap`](termcap/) | GNU termcap | 1.3.1 | https://www.gnu.org/software/termutils/ | +| [`thesilversearcher`](thesilversearcher/) | The Silver Searcher: A fast code-searching tool | 2.2.0 | https://github.com/ggreer/the_silver_searcher | +| [`tig`](tig/) | Tig: text-mode interface for Git | 2.5.5 | https://jonas.github.io/tig/ | +| [`timidity`](timidity/) | TiMidity++ | 2.15.0 | http://timidity.sourceforge.net | +| [`tinycc`](tinycc/) | Tiny C Compiler (TinyCC) | dev | https://github.com/TinyCC/tinycc | +| [`tinyscheme`](tinyscheme/) | TinyScheme Interpreter | 1.42 | https://sourceforge.net/projects/tinyscheme/ | +| [`tr`](tr/) | tr (OpenBSD) | 6.7 | https://github.com/ibara/libpuffy | +| [`tree`](tree/) | tree | 2.0.4 | https://github.com/Old-Man-Programmer/tree | +| [`tuxracer`](tuxracer/) | Tux Racer | 0.61 | http://tuxracer.sourceforge.net/ | +| [`vim`](vim/) | Vim | 8.2.4554 | https://www.vim.org/ | +| [`vitetris`](vitetris/) | vitetris | 0.59.1 | https://github.com/vicgeralds/vitetris | +| [`vlang`](vlang/) | V programming language | weekly.2021.31 | https://github.com/vlang/v | +| [`vttest`](vttest/) | vttest | 20220215 | https://invisible-island.net/vttest/ | +| [`VVVVVV`](VVVVVV/) | Terry Cavanagh's VVVVVV | 2.3.6 | https://github.com/TerryCavanagh/VVVVVV/ | +| [`wayland`](wayland/) | Wayland client libraries | 1.21.0 | https://wayland.freedesktop.org/ | +| [`wget`](wget/) | GNU Wget | 1.21.3 | https://www.gnu.org/software/wget/ | +| [`which`](which/) | GNU which | 2.21 | https://www.gnu.org/software/which/ | +| [`wireguard-tools`](wireguard-tools/) | WireGuard Tools | 1.0.20210914 | https://www.wireguard.com/ | +| [`x264`](x264/) | x264 | baee400 | https://www.videolan.org/developers/x264.html | +| [`x265`](x265/) | x265 | 3.5 | https://bitbucket.org/multicoreware/x265_git/wiki/Home | +| [`xash3d-fwgs`](xash3d-fwgs/) | Xash3D FWGS game engine | 2022.12.26 | https://github.com/FWGS/xash3d-fwgs | +| [`xz`](xz/) | xz | 5.2.5 | https://tukaani.org/xz/ | +| [`yasm`](yasm/) | Yasm Modular Assembler | 1.3.0 | https://yasm.tortall.net/ | +| [`zig`](zig/) | Zig programming language | 0.11.0-dev.4003+c6aa29b6f | https://ziglang.org/ | +| [`zlib`](zlib/) | zlib | 1.2.13 | https://www.zlib.net/ | +| [`zsh`](zsh/) | Z Shell (Zsh) | 5.9 | https://www.zsh.org | +| [`zstd`](zstd/) | Zstandard | 1.5.2 | https://facebook.github.io/zstd/ | diff --git a/Ports/zig/package.sh b/Ports/zig/package.sh index 3267ba8b1f..1b0900ea77 100755 --- a/Ports/zig/package.sh +++ b/Ports/zig/package.sh @@ -1,11 +1,21 @@ #!/usr/bin/env -S bash ../.port_include.sh port='zig' -version='0.11.0-dev.670+f7fea080b' -files='https://github.com/ziglang/zig-bootstrap/archive/b9a466fd23d7777e1b3b87d49074ce66370fb7b3.tar.gz zig-bootstrap-b9a466f.tar.gz 84cf91d727c53ef49220ea6b2864dae3bd48e5e5a73be95bf3672c38a72b0946' -workdir='zig-bootstrap-b9a466fd23d7777e1b3b87d49074ce66370fb7b3' +version='0.11.0-dev.4003+c6aa29b6f' +files='https://github.com/ziglang/zig-bootstrap/archive/bf1b2cdb83141ad9336eec42160c9fe87f90198d.tar.gz zig-bootstrap-bf1b2cd.tar.gz 363f97884f4a291c7167468e53cf4570fa03bc7b8973365dbce2019ffc103150 +https://github.com/ziglang/zig/archive/c6aa29b6fdba1606bfd218b17de89f64179c0ed8.tar.gz zig-c6aa29b.tar.gz d63c5087a737c46072f155eacacaa406af67addab39ad8179c44b0fc7d698ac1' + +# The actual directory to build in. +workdir='zig-bootstrap-bf1b2cdb83141ad9336eec42160c9fe87f90198d' +# The newer Zig directory we move into the workdir. +zigdir='zig-c6aa29b6fdba1606bfd218b17de89f64179c0ed8' post_fetch() { + # Move the newer version of Zig into the bootstrap + run rm -rf zig + run mv "../${zigdir}" zig + + # Copy the scripts that the build process will use run mkdir -p out run cp -r "${PORT_META_DIR}/scripts" out/ } diff --git a/Ports/zig/patches/0001-Add-support-for-building-LLVM-on-SerenityOS.patch b/Ports/zig/patches/0001-Support-Add-support-for-building-LLVM-on-SerenityOS.patch similarity index 100% rename from Ports/zig/patches/0001-Add-support-for-building-LLVM-on-SerenityOS.patch rename to Ports/zig/patches/0001-Support-Add-support-for-building-LLVM-on-SerenityOS.patch diff --git a/Ports/zig/patches/0002-Add-triple-for-SerenityOS.patch b/Ports/zig/patches/0002-Triple-Add-triple-for-SerenityOS.patch similarity index 100% rename from Ports/zig/patches/0002-Add-triple-for-SerenityOS.patch rename to Ports/zig/patches/0002-Triple-Add-triple-for-SerenityOS.patch diff --git a/Ports/zig/patches/0003-Add-support-for-SerenityOS.patch b/Ports/zig/patches/0003-Driver-Add-support-for-SerenityOS.patch similarity index 100% rename from Ports/zig/patches/0003-Add-support-for-SerenityOS.patch rename to Ports/zig/patches/0003-Driver-Add-support-for-SerenityOS.patch diff --git a/Ports/zig/patches/0004-Default-to-ftls-model-initial-exec-on-SerenityOS.patch b/Ports/zig/patches/0004-Driver-Default-to-ftls-model-initial-exec-on-Serenit.patch similarity index 100% rename from Ports/zig/patches/0004-Default-to-ftls-model-initial-exec-on-SerenityOS.patch rename to Ports/zig/patches/0004-Driver-Default-to-ftls-model-initial-exec-on-Serenit.patch diff --git a/Ports/zig/patches/0005-Add-support-for-SerenityOS.patch b/Ports/zig/patches/0005-libc-Add-support-for-SerenityOS.patch similarity index 89% rename from Ports/zig/patches/0005-Add-support-for-SerenityOS.patch rename to Ports/zig/patches/0005-libc-Add-support-for-SerenityOS.patch index 9f0f52eb5c..ae3e17cbb9 100644 --- a/Ports/zig/patches/0005-Add-support-for-SerenityOS.patch +++ b/Ports/zig/patches/0005-libc-Add-support-for-SerenityOS.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: sin-ack Date: Tue, 27 Sep 2022 00:08:46 +0000 -Subject: [PATCH] Add support for SerenityOS +Subject: [PATCH] [libc++] Add support for SerenityOS This commit teaches libc++ about what features are available in our LibC, namely: @@ -28,10 +28,10 @@ Co-Authored-By: Daniel Bertalan create mode 100644 zig/lib/libcxx/include/__support/serenity/xlocale.h diff --git a/zig/lib/libcxx/include/__config b/zig/lib/libcxx/include/__config -index d9a47343dad1faf52826abbcd6da7578cec9932a..74a8970eddfaec23f421c3edbe974f77ad055e27 100644 +index 7967c70035414e65a10aa82e564cf1ce48a12032..dad99cd4cc2520e22e9ef8e60ce3e9267c733cbc 100644 --- a/zig/lib/libcxx/include/__config +++ b/zig/lib/libcxx/include/__config -@@ -910,7 +910,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD +@@ -930,7 +930,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD defined(__sun__) || \ defined(__MVS__) || \ defined(_AIX) || \ @@ -41,7 +41,7 @@ index d9a47343dad1faf52826abbcd6da7578cec9932a..74a8970eddfaec23f421c3edbe974f77 // clang-format on # define _LIBCPP_HAS_THREAD_API_PTHREAD # elif defined(__Fuchsia__) -@@ -988,7 +989,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD +@@ -1008,7 +1009,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_END_NAMESPACE_STD # endif # if defined(__BIONIC__) || defined(__NuttX__) || defined(__Fuchsia__) || defined(__wasi__) || \ @@ -51,10 +51,10 @@ index d9a47343dad1faf52826abbcd6da7578cec9932a..74a8970eddfaec23f421c3edbe974f77 # endif diff --git a/zig/lib/libcxx/include/__locale b/zig/lib/libcxx/include/__locale -index 40f9a3ff57c22635254be654227333b2a10eca6a..1c499c078b44a49abead17ce566801b4c34733f3 100644 +index e0ffa0ca00ffe2b13c363440da0f7cd26c6d65db..33e994abe361af548ccbc5e17c251741546f5503 100644 --- a/zig/lib/libcxx/include/__locale +++ b/zig/lib/libcxx/include/__locale -@@ -42,6 +42,8 @@ +@@ -44,6 +44,8 @@ # include <__support/musl/xlocale.h> #elif defined(_LIBCPP_HAS_MUSL_LIBC) # include <__support/musl/xlocale.h> @@ -94,10 +94,10 @@ index 0000000000000000000000000000000000000000..0f939d2f6989e2ad617145308d079776 + +#endif diff --git a/zig/lib/libcxx/include/locale b/zig/lib/libcxx/include/locale -index b01c66d0430f66ee74118e73296780bb864e920b..da29b7d00c709788facb049f417b6d5ccb5b70e1 100644 +index 874866f69822366f24a99458a040d07651c7ae4a..55632f101f06528c3a9eb01e062f69b06d887369 100644 --- a/zig/lib/libcxx/include/locale +++ b/zig/lib/libcxx/include/locale -@@ -217,7 +217,7 @@ template class messages_byname; +@@ -216,7 +216,7 @@ template class messages_byname; #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) // Most unix variants have catopen. These are the specific ones that don't. diff --git a/Ports/zig/patches/0006-Allow-undefined-symbols-on-SerenityOS.patch b/Ports/zig/patches/0006-cmake-Allow-undefined-symbols-on-SerenityOS.patch similarity index 100% rename from Ports/zig/patches/0006-Allow-undefined-symbols-on-SerenityOS.patch rename to Ports/zig/patches/0006-cmake-Allow-undefined-symbols-on-SerenityOS.patch diff --git a/Ports/zig/patches/0007-Support-building-shared-libLLVM-and-libClang-for-Ser.patch b/Ports/zig/patches/0007-cmake-Support-building-shared-libLLVM-and-libClang-f.patch similarity index 100% rename from Ports/zig/patches/0007-Support-building-shared-libLLVM-and-libClang-for-Ser.patch rename to Ports/zig/patches/0007-cmake-Support-building-shared-libLLVM-and-libClang-f.patch diff --git a/Ports/zig/patches/0009-Prevent-the-use-of-POSIX-shm-on-SerenityOS.patch b/Ports/zig/patches/0009-llvm-Prevent-the-use-of-POSIX-shm-on-SerenityOS.patch similarity index 100% rename from Ports/zig/patches/0009-Prevent-the-use-of-POSIX-shm-on-SerenityOS.patch rename to Ports/zig/patches/0009-llvm-Prevent-the-use-of-POSIX-shm-on-SerenityOS.patch diff --git a/Ports/zig/patches/0010-cmake-Increase-the-default-stack-size-when-running-o.patch b/Ports/zig/patches/0010-cmake-Increase-the-default-stack-size-when-running-o.patch new file mode 120000 index 0000000000..0d5df5dd22 --- /dev/null +++ b/Ports/zig/patches/0010-cmake-Increase-the-default-stack-size-when-running-o.patch @@ -0,0 +1 @@ +../../../Toolchain/Patches/llvm/0012-cmake-Increase-the-default-stack-size-when-running-o.patch \ No newline at end of file diff --git a/Ports/zig/patches/0010-llvm-Implement-bigint-to-LLVM-int-for-32-bit-compile.patch b/Ports/zig/patches/0010-llvm-Implement-bigint-to-LLVM-int-for-32-bit-compile.patch deleted file mode 100644 index a173cda8ac..0000000000 --- a/Ports/zig/patches/0010-llvm-Implement-bigint-to-LLVM-int-for-32-bit-compile.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: sin-ack -Date: Sat, 1 Oct 2022 20:05:58 +0000 -Subject: [PATCH] llvm: Implement bigint-to-LLVM int for 32-bit compiler builds - -The conversion to DoubleLimb is necessary due to LLVM only accepting -64-bit limbs for big integers. Since we need some space to store it, we -also have to allocate. This is an unfortunate penalty that 32-bit -compiler builds have to take. ---- - zig/lib/std/math/big/int.zig | 21 +++++++++++++++++++++ - zig/src/codegen/llvm.zig | 28 ++++++++++++++++++++++++++-- - 2 files changed, 47 insertions(+), 2 deletions(-) - -diff --git a/zig/lib/std/math/big/int.zig b/zig/lib/std/math/big/int.zig -index 534e8a570d675aba91f8623a08859aa2d7d533fd..30db3f36df0311faef1eaba3d69a9785d9e50296 100644 ---- a/zig/lib/std/math/big/int.zig -+++ b/zig/lib/std/math/big/int.zig -@@ -1899,6 +1899,27 @@ pub const Const = struct { - }; - } - -+ /// Convert each limb to a DoubleLimb and write it to `double_limbs`. -+ /// Return the slice of limbs that was used. -+ /// Asserts `double_limbs` is big enough to store the value. -+ pub fn toDoubleLimb(self: Const, double_limbs: []DoubleLimb) ![]DoubleLimb { -+ // TODO: Add tests (and check if this works on big-endian)! -+ assert(double_limbs.len >= (try std.math.divCeil(usize, self.limbs.len, 2))); -+ -+ var i: usize = 0; -+ var double_limb_i: usize = 0; -+ while (i < self.limbs.len) : ({ -+ i += 2; -+ double_limb_i += 1; -+ }) { -+ const most_significant: Limb = if (i + 1 == self.limbs.len) 0 else self.limbs[i + 1]; -+ const least_significant = self.limbs[i]; -+ double_limbs[double_limb_i] = @intCast(DoubleLimb, least_significant) | (@intCast(DoubleLimb, most_significant) << @bitSizeOf(Limb)); -+ } -+ -+ return double_limbs[0..double_limb_i]; -+ } -+ - pub fn dump(self: Const) void { - for (self.limbs[0..self.limbs.len]) |limb| { - std.debug.print("{x} ", .{limb}); -diff --git a/zig/src/codegen/llvm.zig b/zig/src/codegen/llvm.zig -index 4115a4870ea3f8731b929afd65f5111bee1f2983..e3ae805402e063341519ebeb7ee62c8717e45697 100644 ---- a/zig/src/codegen/llvm.zig -+++ b/zig/src/codegen/llvm.zig -@@ -3241,8 +3241,20 @@ pub const DeclGen = struct { - @intCast(c_uint, bigint.limbs.len), - bigint.limbs.ptr, - ); -+ } else { -+ // Because LLVM only accepts 64-bit limbs for constIntOfArbitraryPrecision, we must convert to double-limb here (and allocate to do so). -+ // You (yes, you!) can fix this by making LLVM accept 32-bit limbs for creating an integer of arbitrary precision. -+ const double_limb_count = math.divCeil(usize, bigint.limbs.len, 2) catch return Error.CodegenFail; -+ var double_limb_space = try dg.gpa.alloc(math.big.DoubleLimb, double_limb_count); -+ defer dg.gpa.free(double_limb_space); -+ -+ _ = bigint.toDoubleLimb(double_limb_space) catch return Error.CodegenFail; -+ -+ break :v llvm_type.constIntOfArbitraryPrecision( -+ @intCast(c_uint, double_limb_count), -+ double_limb_space.ptr, -+ ); - } -- @panic("TODO implement bigint to llvm int for 32-bit compiler builds"); - }; - if (!bigint.positive) { - return llvm.constNeg(unsigned_val); -@@ -3269,8 +3281,20 @@ pub const DeclGen = struct { - @intCast(c_uint, bigint.limbs.len), - bigint.limbs.ptr, - ); -+ } else { -+ // Because LLVM only accepts 64-bit limbs for constIntOfArbitraryPrecision, we must convert to double-limb here (and allocate to do so). -+ // You (yes, you!) can fix this by making LLVM accept 32-bit limbs for creating an integer of arbitrary precision. -+ const double_limb_count = math.divCeil(usize, bigint.limbs.len, 2) catch return Error.CodegenFail; -+ var double_limb_space = try dg.gpa.alloc(math.big.DoubleLimb, double_limb_count); -+ defer dg.gpa.free(double_limb_space); -+ -+ _ = bigint.toDoubleLimb(double_limb_space) catch return Error.CodegenFail; -+ -+ break :v llvm_type.constIntOfArbitraryPrecision( -+ @intCast(c_uint, double_limb_count), -+ double_limb_space.ptr, -+ ); - } -- @panic("TODO implement bigint to llvm int for 32-bit compiler builds"); - }; - if (!bigint.positive) { - return llvm.constNeg(unsigned_val); diff --git a/Ports/zig/patches/0011-Add-SerenityOS-target.patch b/Ports/zig/patches/0011-Add-SerenityOS-target.patch index 06a3f6ad99..3d9145fb59 100644 --- a/Ports/zig/patches/0011-Add-SerenityOS-target.patch +++ b/Ports/zig/patches/0011-Add-SerenityOS-target.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: sin-ack -Date: Sun, 11 Dec 2022 17:18:09 +0000 +Date: Sun, 16 Jul 2023 17:34:51 +0300 Subject: [PATCH] Add SerenityOS target Named "serenity" within the code to match what LLVM says. @@ -12,12 +12,11 @@ Named "serenity" within the code to match what LLVM says. zig/src/libc_installation.zig | 6 +++++- zig/src/link/Elf.zig | 9 +++++++++ zig/src/target.zig | 5 ++++- - zig/src/type.zig | 1 + zig/src/zig_llvm.h | 3 ++- - 9 files changed, 32 insertions(+), 3 deletions(-) + 8 files changed, 31 insertions(+), 3 deletions(-) diff --git a/zig/lib/std/target.zig b/zig/lib/std/target.zig -index 49a7bd1c7dd1334067ed3b867f5ada7b99538355..af7b14be8e01509280d59b0196ff3a3040a48bf6 100644 +index 2a96e84001ebf67ce29a9059f62045776530549a..b137e48c02d7d7ecc0f5eae61f6225504bf0ba3d 100644 --- a/zig/lib/std/target.zig +++ b/zig/lib/std/target.zig @@ -60,6 +60,7 @@ pub const Target = struct { @@ -44,7 +43,7 @@ index 49a7bd1c7dd1334067ed3b867f5ada7b99538355..af7b14be8e01509280d59b0196ff3a30 => true, .linux, -@@ -563,6 +566,7 @@ pub const Target = struct { +@@ -568,6 +571,7 @@ pub const Target = struct { .watchos, .driverkit, .shadermodel, @@ -52,7 +51,7 @@ index 49a7bd1c7dd1334067ed3b867f5ada7b99538355..af7b14be8e01509280d59b0196ff3a30 => return .none, } } -@@ -1740,6 +1744,8 @@ pub const Target = struct { +@@ -1690,6 +1694,8 @@ pub const Target = struct { // TODO revisit when multi-arch for Haiku is available .haiku => return copy(&result, "/system/runtime_loader"), @@ -62,7 +61,7 @@ index 49a7bd1c7dd1334067ed3b867f5ada7b99538355..af7b14be8e01509280d59b0196ff3a30 // implement the standard dynamic linker path code for it. .ananas, diff --git a/zig/lib/std/zig/CrossTarget.zig b/zig/lib/std/zig/CrossTarget.zig -index aad0cb42f252d04b858133ba6ec598aa043f1c1c..a401ba49ee7afde0279c537a890cd33d3fe4815e 100644 +index d42b02d931dc3afa7cc33b1576ec77d123fc5bd5..479c1bffc8df034ee2d876118c1aa2579758ac44 100644 --- a/zig/lib/std/zig/CrossTarget.zig +++ b/zig/lib/std/zig/CrossTarget.zig @@ -137,6 +137,7 @@ fn updateOsVersionRange(self: *CrossTarget, os: Target.Os) void { @@ -73,7 +72,7 @@ index aad0cb42f252d04b858133ba6ec598aa043f1c1c..a401ba49ee7afde0279c537a890cd33d .other, => { self.os_version_min = .{ .none = {} }; -@@ -693,6 +694,7 @@ fn parseOs(result: *CrossTarget, diags: *ParseOptions.Diagnostics, text: []const +@@ -734,6 +735,7 @@ fn parseOs(result: *CrossTarget, diags: *ParseOptions.Diagnostics, text: []const .plan9, .driverkit, .shadermodel, @@ -82,10 +81,10 @@ index aad0cb42f252d04b858133ba6ec598aa043f1c1c..a401ba49ee7afde0279c537a890cd33d => return error.InvalidOperatingSystemVersion, diff --git a/zig/src/codegen/llvm.zig b/zig/src/codegen/llvm.zig -index e3ae805402e063341519ebeb7ee62c8717e45697..ba4f2c0840f15b7776f4d8768d3a525551069484 100644 +index ec456e53a7b29be235ec329882e593545273c732..32baa8fbb39a699e57450ed36d5897991c32524b 100644 --- a/zig/src/codegen/llvm.zig +++ b/zig/src/codegen/llvm.zig -@@ -143,6 +143,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 { +@@ -144,6 +144,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![:0]u8 { .watchos => "watchos", .driverkit => "driverkit", .shadermodel => "shadermodel", @@ -93,7 +92,7 @@ index e3ae805402e063341519ebeb7ee62c8717e45697..ba4f2c0840f15b7776f4d8768d3a5255 .opencl, .glsl450, .vulkan, -@@ -246,6 +247,7 @@ pub fn targetOs(os_tag: std.Target.Os.Tag) llvm.OSType { +@@ -250,6 +251,7 @@ pub fn targetOs(os_tag: std.Target.Os.Tag) llvm.OSType { .emscripten => .Emscripten, .driverkit => .DriverKit, .shadermodel => .ShaderModel, @@ -102,10 +101,10 @@ index e3ae805402e063341519ebeb7ee62c8717e45697..ba4f2c0840f15b7776f4d8768d3a5255 } diff --git a/zig/src/codegen/llvm/bindings.zig b/zig/src/codegen/llvm/bindings.zig -index 90d0f51c7b36f7f3df19594933034f483a24c757..f11d1a6743493e18d5b4c2c6f19356d249f88cba 100644 +index b093588e80c1dcbcd3d515ffa09b9ffefcd55828..385b17bd16a2f957f6e79bd7c068820415bcae6f 100644 --- a/zig/src/codegen/llvm/bindings.zig +++ b/zig/src/codegen/llvm/bindings.zig -@@ -1287,6 +1287,7 @@ pub const OSType = enum(c_int) { +@@ -1298,6 +1298,7 @@ pub const OSType = enum(c_int) { WASI, Emscripten, ShaderModel, @@ -114,7 +113,7 @@ index 90d0f51c7b36f7f3df19594933034f483a24c757..f11d1a6743493e18d5b4c2c6f19356d2 pub const ArchType = enum(c_int) { diff --git a/zig/src/libc_installation.zig b/zig/src/libc_installation.zig -index 0a50f970123fbf2298cdf3666a1e7d6a59130e20..af50f4ebfaa783328513d9d9086cdfa9aee83b76 100644 +index 355c3bad8dcd53a03e4df133f0a470b91d390a22..c048b865270640877e0bd042c21faa7e8317991f 100644 --- a/zig/src/libc_installation.zig +++ b/zig/src/libc_installation.zig @@ -8,6 +8,7 @@ const build_options = @import("build_options"); @@ -145,10 +144,10 @@ index 0a50f970123fbf2298cdf3666a1e7d6a59130e20..af50f4ebfaa783328513d9d9086cdfa9 else "sys/errno.h"; diff --git a/zig/src/link/Elf.zig b/zig/src/link/Elf.zig -index ebb1cbdfb8efc867d34e0315256e6efa4c90a035..46c61a10fefd8aa2efe43c023e261e97197dc4b3 100644 +index 0258b0a6a70ad07bf6bad54ccf24954d67bb98d9..fc2d11a10eb8aa31a739a0da15b592cd0f0b90ac 100644 --- a/zig/src/link/Elf.zig +++ b/zig/src/link/Elf.zig -@@ -3152,6 +3152,15 @@ const CsuObjects = struct { +@@ -3382,6 +3382,15 @@ const CsuObjects = struct { .static_pie => result.set( "rcrt0.o", null, "crtbegin.o", "crtend.o", null ), // zig fmt: on }, @@ -165,10 +164,10 @@ index ebb1cbdfb8efc867d34e0315256e6efa4c90a035..46c61a10fefd8aa2efe43c023e261e97 // zig fmt: off .dynamic_lib => result.set( null, "crti.o", "crtbeginS.o", "crtendS.o", "crtn.o" ), diff --git a/zig/src/target.zig b/zig/src/target.zig -index 836791a1d1d7c69655d056b39ed58f2399ed12f4..02c9a23d9ac0dfa870defba94c8b302a5dab7927 100644 +index f07dcc43d21e516ef5e5f392d231207a4e6389eb..95efc730d9c2ba61a19200bf11ad1456a37650dc 100644 --- a/zig/src/target.zig +++ b/zig/src/target.zig -@@ -187,7 +187,7 @@ pub fn libcNeedsLibUnwind(target: std.Target) bool { +@@ -190,7 +190,7 @@ pub fn libcNeedsLibUnwind(target: std.Target) bool { } pub fn requiresPIE(target: std.Target) bool { @@ -177,7 +176,7 @@ index 836791a1d1d7c69655d056b39ed58f2399ed12f4..02c9a23d9ac0dfa870defba94c8b302a } /// This function returns whether non-pic code is completely invalid on the given target. -@@ -472,6 +472,9 @@ pub fn libcFullLinkFlags(target: std.Target) []const []const u8 { +@@ -476,6 +476,9 @@ pub fn libcFullLinkFlags(target: std.Target) []const []const u8 { "-lpthread", "-lc", }, @@ -187,23 +186,11 @@ index 836791a1d1d7c69655d056b39ed58f2399ed12f4..02c9a23d9ac0dfa870defba94c8b302a else => switch (target.abi) { .android => &[_][]const u8{ "-lm", -diff --git a/zig/src/type.zig b/zig/src/type.zig -index 1aefa8f7a1c77ddf58b1cb7271b57db6618704fb..13f8dc1879ed37e0452c78c698b72fcb3b955ec2 100644 ---- a/zig/src/type.zig -+++ b/zig/src/type.zig -@@ -6772,6 +6772,7 @@ pub const CType = enum { - .ananas, - .fuchsia, - .minix, -+ .serenity, - => switch (target.cpu.arch) { - .msp430 => switch (self) { - .short, .ushort, .int, .uint => return 16, diff --git a/zig/src/zig_llvm.h b/zig/src/zig_llvm.h -index 7f9bd0a1619d30239a1ab92c3b9675d8c1bdb987..dc1561421fa0afedf892ddbdf698b57aeb83af72 100644 +index 74dcd105649ab9633f67a8caaf26e2d3ba5b5aef..6dc140d69c16935654a9d58658184def3464be35 100644 --- a/zig/src/zig_llvm.h +++ b/zig/src/zig_llvm.h -@@ -468,7 +468,8 @@ enum ZigLLVM_OSType { +@@ -475,7 +475,8 @@ enum ZigLLVM_OSType { ZigLLVM_WASI, // Experimental WebAssembly OS ZigLLVM_Emscripten, ZigLLVM_ShaderModel, // DirectX ShaderModel diff --git a/Ports/zig/patches/0012-Implement-SerenityOS-support-in-std.patch b/Ports/zig/patches/0012-Implement-SerenityOS-support-in-std.patch index 626b852480..d50834b8cd 100644 --- a/Ports/zig/patches/0012-Implement-SerenityOS-support-in-std.patch +++ b/Ports/zig/patches/0012-Implement-SerenityOS-support-in-std.patch @@ -6,23 +6,24 @@ Subject: [PATCH] Implement SerenityOS support in std --- zig/lib/std/Thread.zig | 2 +- zig/lib/std/c.zig | 1 + - zig/lib/std/c/serenity.zig | 396 +++++++++++++++++++++++++++ + zig/lib/std/c/serenity.zig | 621 +++++++++++++++++++++++++++ zig/lib/std/c/serenity/constants.zig | 6 + zig/lib/std/debug.zig | 3 +- - zig/lib/std/fs.zig | 72 ++++- + zig/lib/std/fs.zig | 72 +++- zig/lib/std/fs/get_app_data_dir.zig | 2 +- zig/lib/std/os.zig | 3 +- - 8 files changed, 479 insertions(+), 6 deletions(-) + zig/lib/std/target.zig | 1 + + 9 files changed, 705 insertions(+), 6 deletions(-) create mode 100644 zig/lib/std/c/serenity.zig create mode 100644 zig/lib/std/c/serenity/constants.zig diff --git a/zig/lib/std/Thread.zig b/zig/lib/std/Thread.zig -index e2e17a29259e1e2cf323ad90451f6fe7906e12a9..125e63bfd138a5a08653f4c815846c42e8eca3c5 100644 +index 99e2feb4cf432d7fb323b62412e810a7b932d9a9..4dcc644b36cf99a7c18084c5ccdaeffa7723e7bd 100644 --- a/zig/lib/std/Thread.zig +++ b/zig/lib/std/Thread.zig -@@ -617,7 +617,7 @@ const PosixThreadImpl = struct { +@@ -636,7 +636,7 @@ const PosixThreadImpl = struct { }; - return @intCast(usize, count); + return @as(usize, @intCast(count)); }, - .solaris => { + .solaris, .serenity => { @@ -30,7 +31,7 @@ index e2e17a29259e1e2cf323ad90451f6fe7906e12a9..125e63bfd138a5a08653f4c815846c42 // /dev/kstat via ioctls, and traverse a linked list for each // cpu. diff --git a/zig/lib/std/c.zig b/zig/lib/std/c.zig -index 5f03f1c61902a191de87b49f0dcbdfec4a872d34..92c4bfcccb6bf45fcd8df748d346c8ec0dc84208 100644 +index 149f3ab7e19919ad8d2b57988aa1db61213ea60d..d7720089a346f4c2ea8ef8f9aac15459b3fc2235 100644 --- a/zig/lib/std/c.zig +++ b/zig/lib/std/c.zig @@ -54,6 +54,7 @@ pub usingnamespace switch (builtin.os.tag) { @@ -43,10 +44,10 @@ index 5f03f1c61902a191de87b49f0dcbdfec4a872d34..92c4bfcccb6bf45fcd8df748d346c8ec diff --git a/zig/lib/std/c/serenity.zig b/zig/lib/std/c/serenity.zig new file mode 100644 -index 0000000000000000000000000000000000000000..747023f1b1b5613b24751312058a5460c79bd3ba +index 0000000000000000000000000000000000000000..1c8dc37af9d528338d2c5543b5f3a47894264c0e --- /dev/null +++ b/zig/lib/std/c/serenity.zig -@@ -0,0 +1,396 @@ +@@ -0,0 +1,621 @@ +pub const std = @import("std"); +pub const SerenityConstants = @import("serenity/constants.zig"); + @@ -56,6 +57,46 @@ index 0000000000000000000000000000000000000000..747023f1b1b5613b24751312058a5460 +pub const off_t = i64; +pub const nlink_t = u64; + ++// see Kernel/API/POSIX/sys/socket.h ++pub const sa_family_t = u16; ++ ++// see Kernel/API/POSIX/sys/types.h ++pub const socklen_t = u32; ++ ++// see Userland/Libraries/LibC/netdb.h ++pub const addrinfo = struct { ++ flags: u16, ++ family: sa_family_t, ++ socktype: u16, ++ protocol: u16, ++ addrlen: socklen_t, ++ addr: ?*sockaddr, ++ canonname: ?[*:0]const u8, ++ next: ?*addrinfo, ++}; ++ ++// see Kernel/API/POSIX/sys/socket.h ++pub const AF = struct { ++ pub const MASK = 0xff; ++ pub const UNSPEC = 0; ++ pub const LOCAL = 1; ++ pub const UNIX = LOCAL; ++ pub const INET = 2; ++ pub const INET6 = 3; ++ pub const MAX = 4; ++}; ++ ++// see Userland/Libraries/LibC/netdb.h ++pub const AI = struct { ++ pub const PASSIVE = 1; ++ pub const CANONNAME = 2; ++ pub const NUMERICHOST = 4; ++ pub const NUMERICSERV = 8; ++ pub const V4MAPPED = 16; ++ pub const ALL = 32; ++ pub const ADDRCONFIG = 64; ++}; ++ +pub const E = enum(i32) { + SUCCESS = SerenityConstants.ESUCCESS, + PERM = SerenityConstants.EPERM, @@ -141,6 +182,23 @@ index 0000000000000000000000000000000000000000..747023f1b1b5613b24751312058a5460 + STALE = SerenityConstants.ESTALE, +}; + ++// see Userland/Libraries/LibC/netdb.h ++pub const EAI = enum(c_int) { ++ ADDRFAMILY = 1, ++ AGAIN = 2, ++ BADFLAGS = 3, ++ FAIL = 4, ++ FAMILY = 5, ++ MEMORY = 6, ++ NODATA = 7, ++ NONAME = 8, ++ SERVICE = 9, ++ SOCKTYPE = 10, ++ SYSTEM = 11, ++ OVERFLOW = 12, ++ _, ++}; ++ +pub const PATH_MAX = SerenityConstants.PATH_MAX; + +pub const time_t = i64; @@ -222,6 +280,21 @@ index 0000000000000000000000000000000000000000..747023f1b1b5613b24751312058a5460 + +pub const IOV_MAX = SerenityConstants.IOV_MAX; + ++// see Kernel/API/POSIX/sys/socket.h ++pub const IPPROTO = struct { ++ pub const IP = 0; ++ pub const ICMP = 1; ++ pub const IGMP = 2; ++ pub const IPIP = 4; ++ pub const TCP = 6; ++ pub const UDP = 17; ++ pub const IPV6 = 41; ++ pub const ESP = 50; ++ pub const AH = 51; ++ pub const ICMPV6 = 58; ++ pub const RAW = 255; ++}; ++ +pub const pthread_mutex_t = extern struct { + lock: u32 = 0, + owner: ?std.c.pthread_t = null, @@ -235,6 +308,8 @@ index 0000000000000000000000000000000000000000..747023f1b1b5613b24751312058a5460 + clockid: c_int = CLOCK.MONOTONIC_COARSE, // clockid_t +}; + ++pub const PTHREAD_STACK_MIN = SerenityConstants.PTHREAD_STACK_MIN; ++ +pub const uid_t = u32; +pub const gid_t = u32; + @@ -335,6 +410,145 @@ index 0000000000000000000000000000000000000000..747023f1b1b5613b24751312058a5460 + pub const END = SerenityConstants.SEEK_END; +}; + ++pub const SIG = struct { ++ pub const ABRT = SerenityConstants.SIGABRT; ++ pub const ALRM = SerenityConstants.SIGALRM; ++ pub const BUS = SerenityConstants.SIGBUS; ++ pub const CANCEL = SerenityConstants.SIGCANCEL; ++ pub const CHLD = SerenityConstants.SIGCHLD; ++ pub const CONT = SerenityConstants.SIGCONT; ++ pub const FPE = SerenityConstants.SIGFPE; ++ pub const HUP = SerenityConstants.SIGHUP; ++ pub const ILL = SerenityConstants.SIGILL; ++ pub const INFO = SerenityConstants.SIGINFO; ++ pub const INT = SerenityConstants.SIGINT; ++ pub const INVAL = SerenityConstants.SIGINVAL; ++ pub const IO = SerenityConstants.SIGIO; ++ pub const KILL = SerenityConstants.SIGKILL; ++ pub const PIPE = SerenityConstants.SIGPIPE; ++ pub const PROF = SerenityConstants.SIGPROF; ++ pub const QUIT = SerenityConstants.SIGQUIT; ++ pub const SEGV = SerenityConstants.SIGSEGV; ++ pub const STKFLT = SerenityConstants.SIGSTKFLT; ++ pub const STOP = SerenityConstants.SIGSTOP; ++ pub const SYS = SerenityConstants.SIGSYS; ++ pub const TERM = SerenityConstants.SIGTERM; ++ pub const TRAP = SerenityConstants.SIGTRAP; ++ pub const TSTP = SerenityConstants.SIGTSTP; ++ pub const TTIN = SerenityConstants.SIGTTIN; ++ pub const TTOU = SerenityConstants.SIGTTOU; ++ pub const URG = SerenityConstants.SIGURG; ++ pub const USR1 = SerenityConstants.SIGUSR1; ++ pub const USR2 = SerenityConstants.SIGUSR2; ++ pub const VTALRM = SerenityConstants.SIGVTALRM; ++ pub const WINCH = SerenityConstants.SIGWINCH; ++ pub const XCPU = SerenityConstants.SIGXCPU; ++ pub const XFSZ = SerenityConstants.SIGXFSZ; ++}; ++ ++pub const sigval = extern union { ++ int: i32, ++ ptr: *anyopaque, ++}; ++ ++pub const siginfo_t = extern struct { ++ signo: c_int, ++ code: c_int, ++ errno: c_int, ++ pid: pid_t, ++ uid: uid_t, ++ addr: ?*const anyopaque, ++ status: c_int, ++ band: c_int, ++ value: sigval, ++}; ++ ++pub const sigset_t = u32; ++pub const empty_sigset: sigset_t = 0; ++ ++pub const Sigaction = extern struct { ++ pub const handler_fn = *const fn (c_int) align(1) callconv(.C) void; ++ pub const sigaction_fn = *const fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void; ++ ++ handler: extern union { ++ handler: ?handler_fn, ++ sigaction: ?sigaction_fn, ++ }, ++ mask: sigset_t, ++ flags: c_int, ++}; ++ ++pub const SO = struct { ++ pub const ACCEPTCONN = SerenityConstants.SO_ACCEPTCONN; ++ pub const BINDTODEVICE = SerenityConstants.SO_BINDTODEVICE; ++ pub const BROADCAST = SerenityConstants.SO_BROADCAST; ++ pub const DEBUG = SerenityConstants.SO_DEBUG; ++ pub const DONTROUTE = SerenityConstants.SO_DONTROUTE; ++ pub const ERROR = SerenityConstants.SO_ERROR; ++ pub const KEEPALIVE = SerenityConstants.SO_KEEPALIVE; ++ pub const LINGER = SerenityConstants.SO_LINGER; ++ pub const OOBINLINE = SerenityConstants.SO_OOBINLINE; ++ pub const PEERCRED = SerenityConstants.SO_PEERCRED; ++ pub const RCVBUF = SerenityConstants.SO_RCVBUF; ++ pub const RCVLOWAT = SerenityConstants.SO_RCVLOWAT; ++ pub const RCVTIMEO = SerenityConstants.SO_RCVTIMEO; ++ pub const REUSEADDR = SerenityConstants.SO_REUSEADDR; ++ pub const SNDBUF = SerenityConstants.SO_SNDBUF; ++ pub const SNDLOWAT = SerenityConstants.SO_SNDLOWAT; ++ pub const SNDTIMEO = SerenityConstants.SO_SNDTIMEO; ++ pub const TIMESTAMP = SerenityConstants.SO_TIMESTAMP; ++ pub const TYPE = SerenityConstants.SO_TYPE; ++}; ++ ++pub const SOL = struct { ++ pub const SOCKET = SerenityConstants.SOL_SOCKET; ++}; ++ ++// see Kernel/API/POSIX/netinet/in.h ++pub const in_port_t = u16; ++ ++pub const in_addr = extern struct { ++ addr: u32, ++}; ++ ++pub const in6_addr = extern union { ++ addr: [16]u8, ++ addr32: [4]u32, ++}; ++ ++// see Kernel/API/POSIX/sys/socket.h ++pub const sockaddr = extern struct { ++ /// address family ++ family: sa_family_t, ++ /// actually longer; address value ++ data: [14]u8, ++ ++ // see Kernel/API/POSIX/netinet/in.h ++ pub const in = extern struct { ++ family: sa_family_t = AF.INET, ++ port: in_port_t, ++ addr: in_addr, ++ zero: [8]u8 = [8]u8{ 0, 0, 0, 0, 0, 0, 0, 0 }, ++ }; ++ ++ pub const in6 = extern struct { ++ family: sa_family_t = AF.INET6, ++ port: in_port_t, ++ flowinfo: u32, ++ addr: in6_addr, ++ scope_id: u32, ++ }; ++ ++ // see Kernel/API/POSIX/sys/un.h ++ /// Definitions for UNIX IPC domain. ++ pub const un = extern struct { ++ family: sa_family_t = AF.LOCAL, ++ ++ /// path name ++ path: [106]u8, ++ }; ++}; ++ +pub const POLL = struct { + pub const IN = SerenityConstants.POLLIN; + pub const RDNORM = SerenityConstants.POLLRDNORM; @@ -348,6 +562,18 @@ index 0000000000000000000000000000000000000000..747023f1b1b5613b24751312058a5460 + pub const RDHUP = SerenityConstants.POLLRDHUP; +}; + ++//see Kernel/API/POSIX/sys/socket.h ++pub const SOCK = struct { ++ pub const TYPE_MASK = 0xff; ++ pub const STREAM = 1; ++ pub const DGRAM = 2; ++ pub const RAW = 3; ++ pub const RDM = 4; ++ pub const SEQPACKET = 5; ++ pub const NONBLOCK = 2048; ++ pub const CLOEXEC = 524288; ++}; ++ +pub const pollfd = struct { + fd: c_int, + events: c_short, @@ -365,7 +591,7 @@ index 0000000000000000000000000000000000000000..747023f1b1b5613b24751312058a5460 + pub const NOWAIT = SerenityConstants.WNOWAIT; + + pub fn EXITSTATUS(s: u32) u8 { -+ return @intCast(u8, (s & 0xff00) >> 8); ++ return @intCast((s & 0xff00) >> 8); + } + + pub fn STOPSIG(s: u32) u32 { @@ -385,7 +611,7 @@ index 0000000000000000000000000000000000000000..747023f1b1b5613b24751312058a5460 + } + + pub fn IFSIGNALED(s: u32) bool { -+ return (@intCast(u8, (s & 0x7f) + 1) >> 1) > 0; ++ return (@as(u8, @intCast((s & 0x7f) + 1)) >> 1) > 0; + } + + pub fn IFCONTINUED(s: u32) bool { @@ -421,7 +647,7 @@ index 0000000000000000000000000000000000000000..747023f1b1b5613b24751312058a5460 + pub const RANDOMIZED = SerenityConstants.MAP_RANDOMIZED; + pub const PURGEABLE = SerenityConstants.MAP_PURGEABLE; + pub const FIXED_NOREPLACE = SerenityConstants.MAP_FIXED_NOREPLACE; -+ pub const FAILED = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1))); ++ pub const FAILED: *anyopaque = @ptrFromInt(@as(usize, @bitCast(@as(isize, -1)))); +}; + +pub const MSF = struct { @@ -456,18 +682,18 @@ index 0000000000000000000000000000000000000000..94d7b1c091f7affb5c968738a8719cbb + ); +} diff --git a/zig/lib/std/debug.zig b/zig/lib/std/debug.zig -index 90ceff3df157f3d94feddceae12de59fc2e3581d..5c25a8c9cebcb0cce01b229808ea67c57c968d5e 100644 +index 44f6ce136759b773e2426656aa9907b5fc51d9fc..9b5f6f993ef870689d31a8ee99bb358b4d25278d 100644 --- a/zig/lib/std/debug.zig +++ b/zig/lib/std/debug.zig -@@ -812,6 +812,7 @@ pub fn openSelfDebugInfo(allocator: mem.Allocator) anyerror!DebugInfo { +@@ -771,6 +771,7 @@ pub fn openSelfDebugInfo(allocator: mem.Allocator) OpenSelfDebugInfoError!DebugI + .dragonfly, + .openbsd, .macos, - .windows, - .solaris, + .serenity, - => return DebugInfo.init(allocator), - else => return error.UnsupportedDebugInfo, - } -@@ -1761,7 +1762,7 @@ pub const ModuleDebugInfo = switch (native_os) { + .solaris, + .windows, + => return try DebugInfo.init(allocator), +@@ -1748,7 +1749,7 @@ pub const ModuleDebugInfo = switch (native_os) { }; } }, @@ -477,19 +703,19 @@ index 90ceff3df157f3d94feddceae12de59fc2e3581d..5c25a8c9cebcb0cce01b229808ea67c5 dwarf: DW.DwarfInfo, mapped_memory: []align(mem.page_size) const u8, diff --git a/zig/lib/std/fs.zig b/zig/lib/std/fs.zig -index e253aaff9e9505182db90c8fa08aa931dca8a0ba..cebf86fc05164ff311731deb4c75730d4dc84d27 100644 +index cb6ce2032ec7e2f2bc720f354558bb5335ae7d24..3894bc6dfc4bb383f7055dd4a264e9f9e2132d76 100644 --- a/zig/lib/std/fs.zig +++ b/zig/lib/std/fs.zig -@@ -34,7 +34,7 @@ pub const Watch = @import("fs/watch.zig").Watch; +@@ -39,7 +39,7 @@ pub const Watch = @import("fs/watch.zig").Watch; /// fit into a UTF-8 encoded array of this length. /// The byte count includes room for a null sentinel byte. pub const MAX_PATH_BYTES = switch (builtin.os.tag) { -- .linux, .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .haiku, .solaris => os.PATH_MAX, -+ .linux, .macos, .ios, .freebsd, .netbsd, .dragonfly, .openbsd, .haiku, .solaris, .serenity => os.PATH_MAX, +- .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .haiku, .solaris => os.PATH_MAX, ++ .linux, .macos, .ios, .freebsd, .openbsd, .netbsd, .dragonfly, .haiku, .solaris, .serenity => os.PATH_MAX, // Each UTF-16LE character may be expanded to 3 UTF-8 bytes. // If it would require 4 UTF-8 bytes, then there would be a surrogate // pair in the UTF-16LE, and we (over)account 3 bytes for it that way. -@@ -521,6 +521,69 @@ pub const IterableDir = struct { +@@ -528,6 +528,69 @@ pub const IterableDir = struct { self.first_iter = true; } }, @@ -525,7 +751,7 @@ index e253aaff9e9505182db90c8fa08aa931dca8a0ba..cebf86fc05164ff311731deb4c75730d + return null; + } + -+ const name = mem.sliceTo(@ptrCast([*:0]u8, &entry.?.d_name), 0); ++ const name = mem.sliceTo(@as([*:0]u8, @ptrCast(&entry.?.d_name)), 0); + if (mem.eql(u8, name, ".") or mem.eql(u8, name, "..")) + continue :start_over; + @@ -539,15 +765,15 @@ index e253aaff9e9505182db90c8fa08aa931dca8a0ba..cebf86fc05164ff311731deb4c75730d + error.FileNotFound => unreachable, // lost the race + else => |e| return e, + }; -+ const entry_kind = switch (stat_info.mode & os.S.IFMT) { -+ os.S.IFIFO => Entry.Kind.NamedPipe, -+ os.S.IFCHR => Entry.Kind.CharacterDevice, -+ os.S.IFDIR => Entry.Kind.Directory, -+ os.S.IFBLK => Entry.Kind.BlockDevice, -+ os.S.IFREG => Entry.Kind.File, -+ os.S.IFLNK => Entry.Kind.SymLink, -+ os.S.IFSOCK => Entry.Kind.UnixDomainSocket, -+ else => Entry.Kind.Unknown, ++ const entry_kind: Entry.Kind = switch (stat_info.mode & os.S.IFMT) { ++ os.S.IFIFO => .named_pipe, ++ os.S.IFCHR => .character_device, ++ os.S.IFDIR => .directory, ++ os.S.IFBLK => .block_device, ++ os.S.IFREG => .file, ++ os.S.IFLNK => .sym_link, ++ os.S.IFSOCK => .unix_domain_socket, ++ else => .unknown, + }; + return Entry{ + .name = name, @@ -559,7 +785,7 @@ index e253aaff9e9505182db90c8fa08aa931dca8a0ba..cebf86fc05164ff311731deb4c75730d .haiku => struct { dir: Dir, buf: [1024]u8, // TODO align(@alignOf(os.dirent64)), -@@ -906,6 +969,11 @@ pub const IterableDir = struct { +@@ -913,6 +976,11 @@ pub const IterableDir = struct { .buf = undefined, .first_iter = first_iter_start_value, }, @@ -571,8 +797,8 @@ index e253aaff9e9505182db90c8fa08aa931dca8a0ba..cebf86fc05164ff311731deb4c75730d .windows => return Iterator{ .dir = self.dir, .index = 0, -@@ -2941,7 +3009,7 @@ pub fn selfExePath(out_buffer: []u8) SelfExePathError![]u8 { - return out_buffer[0..real_path.len]; +@@ -2993,7 +3061,7 @@ pub fn selfExePath(out_buffer: []u8) SelfExePathError![]u8 { + return result; } switch (builtin.os.tag) { - .linux => return os.readlinkZ("/proc/self/exe", out_buffer), @@ -581,7 +807,7 @@ index e253aaff9e9505182db90c8fa08aa931dca8a0ba..cebf86fc05164ff311731deb4c75730d .freebsd, .dragonfly => { var mib = [4]c_int{ os.CTL.KERN, os.KERN.PROC, os.KERN.PROC_PATHNAME, -1 }; diff --git a/zig/lib/std/fs/get_app_data_dir.zig b/zig/lib/std/fs/get_app_data_dir.zig -index 4f7ba9af623841cc8be7b6c48d55037f689fec8d..5a5b4de8aefe6962979a9a65f937cc35c78d7631 100644 +index 2f599c32130e2be12f44fa015df91816614d5f5b..896dde5ab8e0e573dc137d9a86be8298abef8a1a 100644 --- a/zig/lib/std/fs/get_app_data_dir.zig +++ b/zig/lib/std/fs/get_app_data_dir.zig @@ -44,7 +44,7 @@ pub fn getAppDataDir(allocator: mem.Allocator, appname: []const u8) GetAppDataDi @@ -594,23 +820,35 @@ index 4f7ba9af623841cc8be7b6c48d55037f689fec8d..5a5b4de8aefe6962979a9a65f937cc35 return fs.path.join(allocator, &[_][]const u8{ xdg, appname }); } diff --git a/zig/lib/std/os.zig b/zig/lib/std/os.zig -index f13ee03a967df2899aed1b935dd12975f5d07332..b1c174b774b40553c455d768c11ec6c752796a06 100644 +index cb988ca9a8e67f1c3c383a0b2a74bda7b0e14152..0c740baadaeb045c0c01dc7be92f3472b01afa17 100644 --- a/zig/lib/std/os.zig +++ b/zig/lib/std/os.zig -@@ -36,6 +36,7 @@ pub const haiku = std.c; +@@ -35,6 +35,7 @@ pub const freebsd = std.c; + pub const haiku = std.c; pub const netbsd = std.c; pub const openbsd = std.c; - pub const solaris = std.c; +pub const serenity = std.c; + pub const solaris = std.c; pub const linux = @import("os/linux.zig"); pub const plan9 = @import("os/plan9.zig"); - pub const uefi = @import("os/uefi.zig"); -@@ -5112,7 +5113,7 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { +@@ -5205,7 +5206,7 @@ pub fn getFdPath(fd: fd_t, out_buffer: *[MAX_PATH_BYTES]u8) RealPathError![]u8 { const len = mem.indexOfScalar(u8, out_buffer[0..], @as(u8, 0)) orelse MAX_PATH_BYTES; return out_buffer[0..len]; }, - .linux => { + .linux, .serenity => { - var procfs_buf: ["/proc/self/fd/-2147483648".len:0]u8 = undefined; - const proc_path = std.fmt.bufPrint(procfs_buf[0..], "/proc/self/fd/{d}\x00", .{fd}) catch unreachable; + var procfs_buf: ["/proc/self/fd/-2147483648\x00".len]u8 = undefined; + const proc_path = std.fmt.bufPrintZ(procfs_buf[0..], "/proc/self/fd/{d}", .{fd}) catch unreachable; +diff --git a/zig/lib/std/target.zig b/zig/lib/std/target.zig +index b137e48c02d7d7ecc0f5eae61f6225504bf0ba3d..956edd944f587759ae04f69d477447f96441367c 100644 +--- a/zig/lib/std/target.zig ++++ b/zig/lib/std/target.zig +@@ -2079,6 +2079,7 @@ pub const Target = struct { + .ananas, + .fuchsia, + .minix, ++ .serenity, + => switch (target.cpu.arch) { + .msp430 => switch (c_type) { + .char => return 8, diff --git a/Ports/zig/patches/0013-build-Adjust-build-process-for-SerenityOS.patch b/Ports/zig/patches/0013-build-Adjust-build-process-for-SerenityOS.patch index b6e180268f..67a374999f 100644 --- a/Ports/zig/patches/0013-build-Adjust-build-process-for-SerenityOS.patch +++ b/Ports/zig/patches/0013-build-Adjust-build-process-for-SerenityOS.patch @@ -8,7 +8,7 @@ Subject: [PATCH] build: Adjust build process for SerenityOS 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/build b/build -index 5db75471ba94da22550136754c5ae71a56b4527c..2e757e44e852e41bd998ff70c2a9992b69d2910f 100755 +index 71b49cf828bc7f224a3a5dd0533fb4d4ccb873db..aae2f445209bbab53670a4809293e22e8a5091c0 100755 --- a/build +++ b/build @@ -17,6 +17,7 @@ case $TARGET_OS_CMAKE in diff --git a/Ports/zig/patches/0014-zlib-Fix-implicit-write-method-declaration-error.patch b/Ports/zig/patches/0014-zlib-Fix-implicit-write-method-declaration-error.patch new file mode 100644 index 0000000000..af70af7ab9 --- /dev/null +++ b/Ports/zig/patches/0014-zlib-Fix-implicit-write-method-declaration-error.patch @@ -0,0 +1,21 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Andre Herbst +Date: Sat, 8 Jul 2023 14:17:19 +0200 +Subject: [PATCH] zlib: Fix implicit write() method declaration error + +--- + zlib/gzguts.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/zlib/gzguts.h b/zlib/gzguts.h +index 57faf37165a3546c3d0a783457a51e7dedff49ae..3c700c2a908cf4f675299fb4769f905533945831 100644 +--- a/zlib/gzguts.h ++++ b/zlib/gzguts.h +@@ -19,6 +19,7 @@ + #endif + + #include ++#include + #include "zlib.h" + #ifdef STDC + # include diff --git a/Ports/zig/patches/0015-build-Remove-unsupported-zig-linker-flag-z-seperate-.patch b/Ports/zig/patches/0015-build-Remove-unsupported-zig-linker-flag-z-seperate-.patch new file mode 100644 index 0000000000..21b0952a8c --- /dev/null +++ b/Ports/zig/patches/0015-build-Remove-unsupported-zig-linker-flag-z-seperate-.patch @@ -0,0 +1,21 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Andre Herbst +Date: Sun, 9 Jul 2023 01:24:04 +0200 +Subject: [PATCH] build: Remove unsupported zig linker flag -z seperate-code + +--- + build | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/build b/build +index aae2f445209bbab53670a4809293e22e8a5091c0..31754a58c596a80bcb302b98faae15c88ebe798b 100755 +--- a/build ++++ b/build +@@ -190,6 +190,7 @@ cmake "$ROOTDIR/llvm" \ + -DCMAKE_SYSTEM_NAME="$TARGET_OS_CMAKE" \ + -DCMAKE_C_COMPILER="$ZIG;cc;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \ + -DCMAKE_CXX_COMPILER="$ZIG;c++;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \ ++ -DCMAKE_EXE_LINKER_FLAGS="-Wl,--hash-style=gnu,-z,relro,-z,now,-z,noexecstack,-z,max-page-size=0x1000" \ + -DCMAKE_ASM_COMPILER="$ZIG;cc;-fno-sanitize=all;-s;-target;$TARGET;-mcpu=$MCPU" \ + -DCMAKE_RC_COMPILER="$ROOTDIR/out/host/bin/llvm-rc" \ + -DCMAKE_AR="$ROOTDIR/out/host/bin/llvm-ar" \ diff --git a/Ports/zig/patches/0016-docgen-Filter-ZIG_LIBC-from-the-environment.patch b/Ports/zig/patches/0016-docgen-Filter-ZIG_LIBC-from-the-environment.patch new file mode 100644 index 0000000000..a0f4279cac --- /dev/null +++ b/Ports/zig/patches/0016-docgen-Filter-ZIG_LIBC-from-the-environment.patch @@ -0,0 +1,27 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: sin-ack +Date: Sun, 16 Jul 2023 22:00:18 +0300 +Subject: [PATCH] docgen: Filter ZIG_LIBC from the environment + +This environment variable can leak into the doctest builds and cause +them to look for the host libraries in the target libc locations. +--- + zig/doc/docgen.zig | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/zig/doc/docgen.zig b/zig/doc/docgen.zig +index 675dcccf70b599600112fd894e7b4bc3a38ad52f..1b0ba0e2775cb16e3bf324d4045d90ab6b81fee5 100644 +--- a/zig/doc/docgen.zig ++++ b/zig/doc/docgen.zig +@@ -1307,6 +1307,11 @@ fn genHtml( + var env_map = try process.getEnvMap(allocator); + try env_map.put("YES_COLOR", "1"); + ++ // If we're cross-compiling Zig, it's possible that a different libc ++ // location is set via ZIG_LIBC. Since doctests are to execute on the ++ // host exclusively, we filter this variable out. ++ env_map.remove("ZIG_LIBC"); ++ + const host = try std.zig.system.NativeTargetInfo.detect(.{}); + const builtin_code = try getBuiltinCode(allocator, &env_map, zig_exe, opt_zig_lib_dir); + diff --git a/Ports/zig/patches/0017-build-Set-Zig-version-to-0.11.0-dev.4003-c6aa29b6f.patch b/Ports/zig/patches/0017-build-Set-Zig-version-to-0.11.0-dev.4003-c6aa29b6f.patch new file mode 100644 index 0000000000..41df7ac8d4 --- /dev/null +++ b/Ports/zig/patches/0017-build-Set-Zig-version-to-0.11.0-dev.4003-c6aa29b6f.patch @@ -0,0 +1,22 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: sin-ack +Date: Mon, 17 Jul 2023 03:26:04 +0300 +Subject: [PATCH] build: Set Zig version to 0.11.0-dev.4003+c6aa29b6f + +--- + build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/build b/build +index 31754a58c596a80bcb302b98faae15c88ebe798b..ce4ded52344a89fbad56141c5ad30b11f46d4527 100755 +--- a/build ++++ b/build +@@ -6,7 +6,7 @@ TARGET="$1" # Example: riscv64-linux-gnu + MCPU="$2" # Examples: `baseline`, `native`, `generic+v7a`, or `arm1176jzf_s` + + ROOTDIR="$(pwd)" +-ZIG_VERSION="0.11.0-dev.2680+a1aa55ebe" ++ZIG_VERSION="0.11.0-dev.4003+c6aa29b6f" + + TARGET_OS_AND_ABI=${TARGET#*-} # Example: linux-gnu + diff --git a/Ports/zig/patches/ReadMe.md b/Ports/zig/patches/ReadMe.md index bc394c16b9..0c4e52dfc8 100644 --- a/Ports/zig/patches/ReadMe.md +++ b/Ports/zig/patches/ReadMe.md @@ -1,6 +1,6 @@ # Patches for zig on SerenityOS -## `0001-Add-support-for-building-LLVM-on-SerenityOS.patch` +## `0001-Support-Add-support-for-building-LLVM-on-SerenityOS.patch` Add support for building LLVM on SerenityOS @@ -9,12 +9,12 @@ Adds SerenityOS `#ifdef`s for platform-specific code. We stub out wait4, as SerenityOS doesn't support querying a child process's resource usage information. -## `0002-Add-triple-for-SerenityOS.patch` +## `0002-Triple-Add-triple-for-SerenityOS.patch` Add triple for SerenityOS -## `0003-Add-support-for-SerenityOS.patch` +## `0003-Driver-Add-support-for-SerenityOS.patch` Add support for SerenityOS @@ -23,7 +23,7 @@ This makes the compiler look for libraries and headers in the right places, and enables some security mitigations like stack-smashing protection and position-independent code by default. -## `0004-Default-to-ftls-model-initial-exec-on-SerenityOS.patch` +## `0004-Driver-Default-to-ftls-model-initial-exec-on-Serenit.patch` Default to -ftls-model=initial-exec on SerenityOS @@ -32,7 +32,7 @@ the default local-exec when building code for Serenity. This patch should be removed when we implement proper TLS support. -## `0005-Add-support-for-SerenityOS.patch` +## `0005-libc-Add-support-for-SerenityOS.patch` Add support for SerenityOS @@ -51,7 +51,7 @@ This commit is an adaptation of the LLVM patch by Daniel Bertalan to fit the layout of the zig-bootstrap project. -## `0006-Allow-undefined-symbols-on-SerenityOS.patch` +## `0006-cmake-Allow-undefined-symbols-on-SerenityOS.patch` Allow undefined symbols on SerenityOS @@ -59,7 +59,7 @@ Allow undefined symbols in LLVM libraries, which is needed because only stubs are available for SerenityOS libraries when libc++ and libunwind are built. -## `0007-Support-building-shared-libLLVM-and-libClang-for-Ser.patch` +## `0007-cmake-Support-building-shared-libLLVM-and-libClang-f.patch` Support building shared libLLVM and libClang for SerenityOS @@ -75,21 +75,17 @@ it, and the ELF sections that store version data would just waste space. Add SerenityOS to config.guess -## `0009-Prevent-the-use-of-POSIX-shm-on-SerenityOS.patch` +## `0009-llvm-Prevent-the-use-of-POSIX-shm-on-SerenityOS.patch` Prevent the use of POSIX shm on SerenityOS POSIX shm is not supported by SerenityOS yet, so this causes a compilation error. -## `0010-llvm-Implement-bigint-to-LLVM-int-for-32-bit-compile.patch` +## `0010-cmake-Increase-the-default-stack-size-when-running-o.patch` -llvm: Implement bigint-to-LLVM int for 32-bit compiler builds +cmake: Increase the default stack size when running on SerenityOS -The conversion to DoubleLimb is necessary due to LLVM only accepting -64-bit limbs for big integers. Since we need some space to store it, we -also have to allocate. This is an unfortunate penalty that 32-bit -compiler builds have to take. ## `0011-Add-SerenityOS-target.patch` @@ -107,3 +103,25 @@ Implement SerenityOS support in std build: Adjust build process for SerenityOS +## `0014-zlib-Fix-implicit-write-method-declaration-error.patch` + +zlib: Fix implicit write() method declaration error + + +## `0015-build-Remove-unsupported-zig-linker-flag-z-seperate-.patch` + +build: Remove unsupported zig linker flag -z seperate-code + + +## `0016-docgen-Filter-ZIG_LIBC-from-the-environment.patch` + +docgen: Filter ZIG_LIBC from the environment + +This environment variable can leak into the doctest builds and cause +them to look for the host libraries in the target libc locations. + +## `0017-build-Set-Zig-version-to-0.11.0-dev.4003-c6aa29b6f.patch` + +build: Set Zig version to 0.11.0-dev.4003+c6aa29b6f + + diff --git a/Ports/zig/scripts/constants.txt b/Ports/zig/scripts/constants.txt index 220a4436ab..0979197a1d 100644 --- a/Ports/zig/scripts/constants.txt +++ b/Ports/zig/scripts/constants.txt @@ -149,10 +149,64 @@ PROT_EXEC PROT_NONE PROT_READ PROT_WRITE +PTHREAD_STACK_MIN R_OK SEEK_CUR SEEK_END SEEK_SET +SIGABRT +SIGALRM +SIGBUS +SIGCANCEL +SIGCHLD +SIGCONT +SIGFPE +SIGHUP +SIGILL +SIGINFO +SIGINT +SIGINVAL +SIGIO +SIGKILL +SIGPIPE +SIGPROF +SIGQUIT +SIGSEGV +SIGSTKFLT +SIGSTOP +SIGSYS +SIGTERM +SIGTRAP +SIGTSTP +SIGTTIN +SIGTTOU +SIGURG +SIGUSR1 +SIGUSR2 +SIGVTALRM +SIGWINCH +SIGXCPU +SIGXFSZ +SOL_SOCKET +SO_ACCEPTCONN +SO_BINDTODEVICE +SO_BROADCAST +SO_DEBUG +SO_DONTROUTE +SO_ERROR +SO_KEEPALIVE +SO_LINGER +SO_OOBINLINE +SO_PEERCRED +SO_RCVBUF +SO_RCVLOWAT +SO_RCVTIMEO +SO_REUSEADDR +SO_SNDBUF +SO_SNDLOWAT +SO_SNDTIMEO +SO_TIMESTAMP +SO_TYPE STDERR_FILENO STDIN_FILENO STDOUT_FILENO diff --git a/Ports/zig/scripts/generate-serenity-constants.zig b/Ports/zig/scripts/generate-serenity-constants.zig index d87b6093ad..2b4e1cb2cb 100644 --- a/Ports/zig/scripts/generate-serenity-constants.zig +++ b/Ports/zig/scripts/generate-serenity-constants.zig @@ -12,6 +12,7 @@ const SerenityIncludes = @cImport({ @cInclude("stdio.h"); @cInclude("sys/file.h"); @cInclude("sys/mman.h"); + @cInclude("sys/socket.h"); @cInclude("sys/stat.h"); @cInclude("sys/types.h"); @cInclude("sys/uio.h");