Changelog
This page lists the changes in each major update to Phoenix, broken down by package.
0.0.9 - 2025-09-16
Installer
- Added drag-and-drop compatibility for use without HTTP
- When a file is requested, download it manually from
https://phoenix.madefor.cc/packages/<file> - Drop it on the computer to copy over - downloading will proceed automatically
- You can drag multiple files at once to cache them and speed up transfer
- When a file is requested, download it manually from
- Reworked stage 1 procedure - kernel is now downloaded separately and kept in memory; UnBIOS is now included in the installer instead of a separate file
phoenix
Package version: 0.0.9
- Added PDP (Phoenix Datagram Protocol) network protocol for oneshot messages to PIP addresses
- Use the
pdp://<ip>[:<port>]scheme to open a handle - There are no connection semantics, delivery is not guaranteed
connectopens a handle on a random local port to the specified remote portlistenlistens on the specified local port and queues a handle event on first message from each remote sender
- Use the
- Added
chvtsyscall to change current TTY (requires root) - Added improved kernel debugger using a temporary TTY
- A module implementing global
pretty_print(tty, value)can be used for pretty printing
- A module implementing global
- HTTP is no longer required to boot the kernel
- Moved
cc.expectandtextutils.serializeinto the kernel - the only CraftOS API required to boot now iskeys loadfile()now loads from stdin as expected- Programs with a
luashebang are now executed directly - The VT cursor now moves within bounds when the terminal is resized
modem:isOpennow always returns a boolean as expected- Fixed a multitude of issues with sockets
- The
unlistensyscall is now mostly implemented (still needs testing for robustness) - Modem channels are now properly closed when a socket is closed (after time-wait)
- If a modem runs out of open channels, time-wait sockets are purged immediately in an attempt to free them
- Socket connections now wait for ARP requests to resolve before continuing to connect
- The
- Fixed
listreturning duplicate results with multimounts - Fixed some minor issues with
io.popen(cmd, "rw")handles - Fixed crashes when calling stdio redirect syscalls without an active stdio handle
- Fixed files not being visible when using
chroot("/") - Fixed crashes when using a
CorDCSI escape with massive negative parameters - Fixed a crash when closing a modem port that has not been opened
- Fixed a security vulnerability allowing retrieving the kernel environment through empty functions
- Fixed a security vulnerability allowing retrieving the kernel environment through
loadfunction mode anddebug.getupvalue - Fixed a security vulnerability allowing retrieving the kernel environment through
iofile handles - Fixed a security vulnerability allowing retrieving the kernel environment through
debug.gethook - Fixed a security vulnerability allowing process escalation through custom stdio handles on setuser programs
debug.getregistry()now returns a per-process table, closing potential security vulnerabilities
pxboot
Package version: 0.1.4
- Added
loadmodouter command to load modules without selecting an entry - Modules now receive the config table as a global
includecan now reference absolute paths- Fixed booting kernels on systems without HTTP
apt
Package version: 0.2.2
- Fixed
add-apt-repositorynot loading config - Fixed errors caused by greedy parsing of APT config
apt-get updatecan now handle gzipped indexes- Fixed not setting the status when removing packages
- Fixed parsing deb822-style sources files
- Implemented virtual package searching in the package solver
dhcpmgr
Package version: 0.1.1
- If no IP address is set on the managed modem, the first in the configured range is now set automatically
dpkg
Package version: 0.2.9
- Fixed issues with trigger files being updated incorrectly
ftp
Package version: 0.1.1
- The FUSE filesystem now protects concurrent access on the filesystem, resolving potential races by multiple processes
- Fixed a crash in the client when a passive mode connection fails
- Fixed a crash in the server when opening a file fails
- Fixed a typo from the CraftOS code base causing a crash in the server in binary mode
initrd-utils
Package version: 0.1.1-2
- Fixed a typo causing shell inclusion to crash
update-initrd
libcert
Package version: 1.0.1
- Added CRL support to
chain.validate - Implemented decryption of private keys in
cert.sign - Fixed typo in
signature.signcausing a crash on use
muxzcat
Package version: 1.1
- I’m not actually sure what changed, since the previous version’s source was minified; I’m guessing it was some important bugfixes that I missed.
netutils
Package version: 0.1-2
- Fixed DHCP request failure when the offer comes from certain computer IDs
pdb
Package version: 0.1.1
attachnow properly enables debugging in the target, breaks on attach, and enables ^C handling
spanfs
Package version: 0.1.1-2
- Fixed to work with Phoenix 0.0.7’s modified mounting subsystem
typescript
Package version: 1.28.1-2
- Fixed compatibility with syscalls in
async/awaitand iterators
usermgr
Package version: 0.1.3
- Sensitive processes can no longer run on non-TTYs or be debugged
2025-03-11
apt
Package version: 0.2.1
dpkg
Package version: 0.2.8
pgp
Package version: 0.2
- Added compatibility with RSA (not recommended for general use - slow)
- Now requires the new
mpipackage, which will break standardupdateprogram - installmpimanually first (APT will work fine without modification)
mpi (new)
Package version: 1.0
- Initial release
- Multi-precision integer math library, for use with RSA
2025-03-07
dpkg
Package version: 0.2.7
- Fixed errors when updating a package with links
- Fixed incorrect version comparisons for versions with a revision
apt (new)
Package version: 0.2
- Initial release
- Port of Debian APT package manager to Phoenix.
- This will eventually become the standard package management tool, replacing the temporary
updateandcomponentsprograms
pgp (new)
Package version: 0.1
- Initial release
- Provides a library for handling PGP keys and signature verification.
0.0.8 - 2025-03-02
phoenix
Package version: 0.0.8
- Added debugging system calls
- See the docs page for more info on debugging.
- Added enhanced support for running in CraftOS-PC headless mode
- Added driver for new redstone relay peripheral
- Added time-to-live parameter to PIP control messages
- Added
captureandreleasesyscalls to force capture input from stdin - Added
peekEventsyscall to see the next event without consuming it or waiting - Debug hooks now work properly per-coroutine
- Implemented bell character
- Signal handler and user mode callback threads are now named as such
- Fixed wired modems not registering drivers on attached devices
- Fixed many issues caused by processes not being woken up on queued events
- Fixed
mouse_scroll.directiontype
libsystem
Package version: 0.1.6
- Added debugging system calls
- Added
network.parseURI,network.urlEncode - Added
terminal.captureandterminal.releasesyscalls to force capture input from stdinterminal.readline2now captures input automatically
- Fixed many issues with framebuffers
- Fixed typo in
util.copy
githubfs (new)
Package version: 1.0
- Initial release
- Provides a FUSE filesystem for mounting GitHub repositories on the local system.
pdb (new)
Package version: 0.1
- Initial release
- Implements a GDB-like debugger for Phoenix programs.
- Will include a DAP debugger for connecting to VS Code in a future release.
typescript
Package version: 1.28.1
- Updated to newer version
0.0.7 - 2024-08-31
Some packages had version bumps without changing the contents, to fix some missed version bumps before:
diskmgr: 1.0 -> 1.0.1startmgr: 0.1.1 -> 0.1.2yahtcc: 0.1-2 -> 0.1-3
phoenix
Package version: 0.0.7
- Fixed compatibility with CC:T 1.112.0 and later
- Fixed crash in installer
- Added overlay mounting capabilities
- Implemented ^L shortcut to clear terminal screen
- Improved handling of deeply recursive links
- Fixed some issues with links in craftos mounts
- Removed some unnecessary debug log lines
baseutils
Package version: 0.2.2
- Added
-hoption tols - Fixed argument passing to
mount
dpkg
Package version: 0.2.6
- Fixed some handling of links
- Fixed version comparison issues
- Fixed issues with parsing certain control files
0.0.6 - 2024-07-31
phoenix
Package version: 0.0.6
- Reduced default quantum to 20,000 instructions
- Fixed
string.packbackport not working on CC older than 1.89.0 - Fixed some issues around passing tables in system call parameters
- Added
secure_syscall,secure_eventyield types (experimental) - Added file system events system through the
fseventsyscall- Call
fseventon a path to receive events when the file or directory is modified
- Call
- Fixed read handles on empty files not working in custom filesystems
- Fixed environment of user mode callbacks to custom write file handles
- Fixed root user not having absolute permissions on files
- Re-added
utf8library to programs - Changed VT key combo to Ctrl+Shift+Fn
- Text mode cursor color is now set to the active foreground color
- Fixed
(GFX)Terminal.nativePaletteColorbeing missing - Added
tty.writeandtty.sendEventmethods - Fixed issues with standard handle redirection relating to frontmost processes
- Added
require/packageimplementation in the kernel environment - Added
getfenvsyscall to get the process environment table - Fixed global metatables per process using kernel global APIs
- Added
atexitsyscall to run a function before the process quits - Mutexes can now be shared across processes properly
- Fixed panic from resizing an attached monitor
- Fixed missing initialization function for speakers
- Fixed small bug on HTTP failures
libsystem
Package version: 0.1.5
- Added
filesystem.fsevent,filesystem.absolute,process.getfenv,process.atexit,sync.synctab - Added transparency option to
framebuffer.framebuffer - Added range check to colors in
graphics.drawFilledBox
libcraftos
Package version: 0.2.3
- Added
cc.stringslibrary to libcc - Fixed
fs.getFreeSpace,fs.getCapacity, andfs.movenot finding mount info when destination path doesn’t exist - Fixed
fs.getNamenot working - Moved event conversion logic into
os._convertEvent(event, param) - Fixed
peripheral.hasTypenot working term.native()now returns a copy of the TTY handle
aes (new)
Package version: 1.0
- Initial release
- Provides functions to encrypt and decrypt data using the AES algorithm.
- Ported from https://gist.github.com/afonya2/489c3306a7d85f8f9512df321d904dbb
ar
Package version: 1.1.1
- Fixed issue with long file names in some archives
asn1 (new)
Package version: 1.0
- Initial release
- Handles serializing and deserializing tables in ASN.1 DER format.
ccryptolib
Package version: 1.2.2
- This version adds a way to initialize the generator from noise present in VM instruction timings. This is a reworked version of the previous approach used for initializing the
ecc.luarandom generator.
compressfs (new)
Package version: 1.0
- Initial release
- Implements a file system that compresses disk contents automatically.
deflateans (new)
Package version: 1.0
- Initial release
- A variant of DEFLATE that uses asymmetrical numeral systems instead of Huffman coding, increasing decompression speed with similar compression ratios.
dpkg
Package version: 0.2.5
- Fixed error when a package has Conflicts
- Fixed
--force-depends-versionnot working
encryptfs (new)
Package version: 1.0
- Initial release
- Implements a file system that encrypts disk contents automatically.
libcert (new)
Package version: 1.0
- Initial release
- Implements a library for working with X.509 and PKCS container formats.
libdeflate
Package version: 1.0.2-2
- Added link to capitalized name in case a program uses it
luz
Package version: 0.1.1
- Fixed issue in init code
spanfs
Package version: 0.1.1
- Refactored some userspace code for safety
typescript
Package version: 1.22.0
- Updated to newer upstream version
yellowbox (new)
Package version: 0.1
- Initial release
- Kernel module that implements a ComputerCraft emulator in the Phoenix kernel.
0.0.5 - 2024-01-17
phoenix
Package version: 0.0.5
- Improved support for Lua 5.2 runtimes
- Changed some details about how system calls are run in the kernel
- Syscalls are now run in a separate coroutine
- This allows them to yield for events
- User callbacks to syscalls can yield as well
- Added
quietboot argument to set the log level to warning - Added new key translation allocation method that doesn’t use bytecode
- Added more protection around kernel panics
- Added checks to make sure the kernel doesn’t yield in the wrong places
- Added implementations of common Lua functions in the kernel environment
- Added
unmountmethod to filesystems - Added
localIPmethod to PSP socket handles - Added
transfermethod to PSP socket handles to transfer the handle to another process - PSP can now listen to multiple clients on the same port, as long as the remote clients use different outgoing ports
- Fixed a bug in
mkdir - Fixed a vulnerability in
loadfileallowing access to the kernel environment - Fixed a vulnerability in dbprotect allowing accessing the environment of stack functions
opentermandopengfxnow hold references to their handles, allowing them to be called again to get the handle after initialization- Fixed many issues in PSP layer
craftosfilesystems no longer sync metadata on every write- Fixed tabs not always aligning correctly
mklogno longer errors if the log already exists- Improved how the
exitsyscall works
pxboot
Package version: 0.1.3
- Fixed support for Lua 5.2
- Added
insmodcommand in entry definitions
libsystem
Package version: 0.1.4
- Added
serialization.tomlTOML parser - Added
expect.struct,expect.array,expect.matchtype matchers forexpect - Added
process.forkbg,process.startbgto create background tasks - Fixed error when using
filesystem.copyon a source that doesn’t exist - Fixed some typos in
sync.conditionVariable:waitForandterminal.readline2
libcraftos
Package version: 0.2.2
- Reverted changes to terminal colors
- Fixed bug in
disk.isPresentwhen the requested peripheral isn’t a drive - Fixed typo in
colors.pink - Fixed environment error in
initmodule - Fixed some issues with syscalls in
shellprogram
baseutils
Package version: 0.2.1
- Added
attachprogram for CraftOS-PC - Added automatic
/rommount to/etc/fstab - Fixed issues displaying infinite drive sizes in
df
dpkg
Package version: 0.2.4
- Fixed bug when extracting links
- Fixed bug causing non-empty directories to be deleted when a single package removes them
ccryptolib
Package version: 1.1.0
- Updated to latest upstream version
- This version stabilizes the API in
ccryptolib.x25519c.- Functions that mixed exchanges with Ed25519 keys were removed.
luz (new)
Package version: 0.1
- Initial release
- Lua script compression and decompression utility, library & kernel module
- Can be used with
pxbootto boot Luz-compressed kernel images
phoenix-luz (new)
Package version: 0.0.5
- Initial release
- Alternate distribution of
phoenixusing Luz compression
fuse (new)
Package version: 0.1
- Initial release
- Implements filesystems in userspace, allowing filesystems to be implemented without using kernel modules
ftp (new)
Package version: 0.1
- Initial release
- RFC 959-compliant File Transfer Protocol client, server, and filesystem driver over PSP
netutils (new)
Package version: 0.1
- Initial release
- Various Linux-inspired utilities to manage the current network configurations
dhcpmgr (new)
Package version: 0.1
- Initial release
- DHCP autoconfiguration server for assigning IP addresses to clients
netmgr (new)
Package version: 0.1
- Initial release
- Network management daemon to set IP addresses from a configuration file, including a DHCP client
Installer
- Added prompt to use
phoenix-luzLuz kernel instead of fullphoenixkernel - Added confirmation prompt for passwords
0.0.4 - 2023-08-03
phoenix
Package version: 0.0.4
- Added
bindfilesystem type for bind mounts - Added
kernargssyscall to get kernel argument list (intended for init systems) - Added
fsmetakernel argument to storemeta.ltnelsewhere - Added
initrdkernel argument to use atablefsimage as the root, allowing a future init program to useroot/rootfstype/initargumentsinitrdimages should have the init program at/init.lua, instead of/sbin/init- theinitargument is ignored
- Added
filesystem.readhandleandfilesystem.writehandlekernel API functions - Added
nicesyscall to control nice values for a process (preemption times) - Added kernel API for
execloader functions filesystem.openfifowas renamed tofilesystem.fifohandlexpcallis no longer overridden on platforms that support 5.2-stylexpcall- Syscall failure logs now add the syscall name in the module field
- ROM files may now have metadata
tablefsnow has three writeability modesrowill make the filesystem fully read-only, erroring on write operations- No options will make the filesystem writable, but not flushed to disk
rwwill make the filesystem writable, and saves changes back to the file
- Kernel initialization code is now properly protected - errors while starting up will now panic instead of crashing the computer
mountnow fully supports remounting the root filesystem- Process IDs are now sequential instead of using the first free ID
- stdin now properly supports paste events
- Implemented
ICH,DCHCSI escape codes - CSI codes
CUFandCUBnow wrap lines properly - Disk drives now keep their own metadata databases
\x1b[0mnow resets the bold attribute as well- Global type metatables are no longer shared between processes
- Fixed issue where
staton atmpfsroot may leak kernel functions - Fixed
chrootsyscall not being functional - Fixed user mode callbacks not returning anything
- Fixed
math.randomonly returning 0/1 when using integer functions - Fixed
printcreating extra newlines when writing near the edge of the screen - Fixed
io.stdin:read()missing newlines - Fixed some issues with
io.popen - Fixed errors in
openterm().get[Text|Background]Colorwhen the color is 10-15 - Fixed
drivedevices not being registered due to a typo - Fixed an issue causing devices attached to a modem before startup not being detected
- Fixed an issue causing devices attached to a modem being uncallable
libsystem
Package version: 0.1.3
- Added
terminal.readline2to read lines with history and completion - Added
process.niceto set nice level for a process - Fixed
hardware.hasTypeerroring - Fixed
hardware.wrapobjects failing to set properties - Fixed
log.createobjects erroring when using a log level - Fixed an issue causing
process.runto fail to run programs - Fixed
serialization.lua.encodeencoding some table keys incorrectly - Fixed incorrect encoding of special characters in
serialization.lua.encode
libcraftos
Package version: 0.2.1
- Added stub
gpsandrednetAPIs - Added manual pages for
craftosandshellprograms - Fixed serialization bugs from libsystem in
textutils.serialize - Fixed issues with color codes in
term
baseutils
Package version: 0.2
- Added
man,aproposprograms for reading manual pages in Markdown - Added
commprogram for comparing file contents - Added
compressanduncompressprograms for legacy UNIX LZW file compression - Added
dfprogram for displaying filesystem statistics - Added
dirnameprogram - Added
duprogram for measuring disk usage - Added
ejectprogram to eject disks from drives - Added
envprogram - Added
expandprogram to expand tabs to spaces - Added
exprprogram for calculating expressions - Added
idprogram to get computer and disk IDs - Added
labelprogram for changing disk and computer labels - Added
loggerprogram for viewing, adding to, and creating and deleting logs - Added
lsdevprogram to list attached devices - Added
nice,reniceprograms to run a program with the specified nice level - Added
nmprogram to list functions and variables exported by a library - Added
pwdprogram to show current working directory - Added
redstoneprogram to manipulate redstone I/O - Added
unlinkprogram as direct wrapper forremovesyscall - Added startmgr service to automatically mount
/etc/fstabentries on boot cashnow supports history and file/program completioncatno longer requires libsystemlessnow supports limited VT-100 color codesluanow supports history, and alerts the user when they try to useexitorquitto quitmountnow supports-aand responds to/etc/fstabnanonow supports cutting and pasting lines- Installing manual pages will now trigger
man -uto update the database forapropos
pxboot
Package version: 0.1.2
- Added
monitorsubcommand to run the specified OS on an attached monitor - Added
includecommand to include other config subfiles using a wildcard pattern
ar
Package version: 1.1
- Phoenix permissions are now better supported
- Fixed some critical bugs when writing files
- Optimized code
ccryptolib (new)
Package version: 1.0.1
- Initial release
- Port of migeyel’s CCryptoLib to Phoenix
diskmgr (new)
Package version: 1.0
- Initial release
- Manager program to automatically mount disks
dpkg
Package version: 0.2.3
- Added
--rootoption todpkg - Added ability to extract links properly
initrd-utils (new)
Package version: 0.1
- Initial release
- Contains tools for building an initrd
phoenix-docs (new)
Package version: 0.0.4
- Initial release
- Contains manual pages for Phoenix, libsystem, and baseutils; kept separate from the main packages to save space
spanfs (new)
Package version: 0.1
- Initial release
- Contains kernel module for spanned filesystems across multiple disk drives + management tools
startmgr
Package version: 0.1.1
- Implemented
list,installanduninstallcommands - Services can now have a
.wantsfolder next to them to add other services that the service requires- This is useful for packages to install startup services, e.g. in
/etc/startmgr/system/startup.service.wants/
- This is useful for packages to install startup services, e.g. in
- Moved
startup.serviceto startmgr shutdownnow logs a message before timed shutdown
usermgr
Package version: 0.1.2
- Moved
startup.serviceto startmgr useraddnow properly sets the owner of files copied from the skeleton directory
yahtcc
Package version: 1.0-2
- Added manual file
Installer
- Added automatic setup for installing to a span filesystem
0.0.3 - 2023-01-17
phoenix
Package version: 0.0.3
- Added version checking to the kernel to ensure compatible CC:T versions
- Added
chrootsyscall to change process root - Added support for symbolic links through the
linksyscall - Added support for FIFOs through the
mkfifosyscall - Added new
tablefsfilesystem which loads the filesystem from a serialized table - Added
nolinkoption tostatto avoid resolving a final link - Added new
PACKAGE_PATHandPACKAGE_LIBPATHenvironment variables to controlpackage.pathin the environment - Environment variables are now stored in a separate table from the Lua global environment
#!now passes the path to the interpreter instead of piping the file to the interpreter’s stdin- HTTP requests now default to binary mode
- Fixed a bug causing resizing to not redraw properly
libsystem
Package version: 0.1.2
- Added
filesystem.link,filesystem.mkfifo,filesystem.chroot,filesystem.mountlist;nolinkoption forfilesystem.stat filesystem.movenow usesfilesystem.renameif the source and destination are on the same filesystem- Added
process.execpto execute commands using the PATH - Added
util.pullEventas a proxy ofcoroutine.yield() - Added TypeScript definitions
- Fixed a bug causing
devicetreeobjects to not be accepted byhardware.*
libcraftos
Package version: 0.2
- Implemented most APIs, allowing more of CraftOS to run (currently missing:
gps,rednet,multishell;shellandtextutilsare half implemented) - Added
shellprogram to run the CraftOS shell quickly - Added TypeScript definitions from cc-tstl-template
typescript (new)
Package version: 1.10.1
- Initial release
baseutils
Package version: 0.1.2
- Added
chroot,link,mkfifocommands mountnow outputs a list of all mounts when run without arguments- Adjusted cash to work with new environment variable semantics
- Adjusted
chmod/chownto work with links - Fixed
lsnot working when passed a file path
dpkg
Package version: 0.2.2
- Fixed bugs
usermgr
Package version: 0.1.1
su/sudocan now resolve commands from the PATH- Adjusted programs to work with new environment variable semantics
libdeflate
Package version: 1.0.2
- Updated to resolve licensing issues
- Removed a few unnecessary functions related to WoW and CLI
- Added TypeScript definitions
muxzcat
Package version: 1.0-2
- Added TypeScript definitions
tar
Package version: 1.0.1
- Fixed bugs
sha2
Package version: 12-2
- Added TypeScript definitions
0.0.2 - 2022-09-11
phoenix
Package version: 0.0.2
- Added basic Discord plugin support (not super good but it works)
- Fixed some problems with _ENV emulation
- Added new driver registration functions to the kernel API
- Added attach/detach syscalls for peripheral emulators
- Fixed issues with updating frontmost processes when using
stdout/stdin/stderr - Other various fixes
libsystem
Package version: 0.1.1
- Added
serializationmodule - Fixed cursor blink behavior in windows
- Fixed
window.restoreCursormissing from windows
pxboot
Package version: 0.1.1
- Fixed support for Discord plugin
baseutils
Package version: 0.1.1
- Fixed some invalid argument issues
dpkg
Package version: 0.2.1
- Added
componentspackage installer - Bug fixes
gfxterm (new)
Package version: 0.0.1
- Initial release
0.0.1 - 2022-08-25
phoenix
Package version: 0.0.1
- Initial release
libsystem
Package version: 0.1
- Initial release
libcraftos
Package version: 0.1
- Initial release
pxboot
Package version: 0.1
- Initial release
baseutils
Package version: 0.1
- Initial release
yahtcc
Package version: 1.0
- Initial release
startmgr
Package version: 0.1
- Initial release
usermgr
Package version: 0.1
- Initial release
ar
Package version: 1.0
- Initial release
diff
Package version: 1.0
- Initial release
libdeflate
Package version: 1.0.0
- Initial release
muxzcat
Package version: 1.0
- Initial release
sha2
Package version: 12
- Initial release
tar
Package version: 1.0
- Initial release
dpkg
Package version: 0.2
- Initial release