Skip to content

CraftOS-PC v2.4.2

Compare
Choose a tag to compare
@MCJack123 MCJack123 released this 08 Sep 22:08
· 837 commits to master since this release
f073c27

One year ago today, CraftOS-PC 2 was officially launched, touting fast speeds and more features than any other emulator out there. Today, CraftOS-PC is more stable and accurate than ever, with even more features than it originally released with. It's grown from a small program to test CraftOS in a C environment, to an entire emulator platform with multiple editions and strong compatibility. The past year has been quite a ride for me, and in between school and a pandemic I've been working non-stop to make CraftOS-PC the best emulator it can be.

Happy birthday, CraftOS-PC!


CraftOS-PC v2.4.2 is a small feature update, with some compatibility fixes as well as a few new features. It also adds FFI support for CraftOS-PC Accelerated, as well as a few more bugfixes.

Don't mind the fact that CI tests fail; it's because of the date-specific MOTDs firing today and breaking the CC:T 1.91 tests. This will be fixed with 1.92.

  • Updated CC:T version to 1.91.0
    • Add string.{pack,unpack,packsize} (MCJack123)
    • Escape non-ASCII characters in JSON strings (neumond)
    • Make field names in fs.attributes more consistent (abby)
    • Fix textutils.formatTime correctly handle 12 AM (R93950X)
  • Speakers are now emulated closer to how they work in ComputerCraft
    • Each speaker has its own channel pool
    • Channels are allocated as needed
    • The maxNotesPerTick option now properly caps notes every 1/20 s
    • Only one sound can be played at once
    • Channel numbers are now returned as a second argument
      • These can be passed to stopSounds to stop one channel
  • Replaced custom bit32 library with standard Lua 5.2 implementation
    • This fixes a bug where functions can't take more than two arguments
    • This should also fix any other possible bugs in the bit32 library
  • Fixed yielding from callbacks of certain functions:
    • string.gsub
    • table.sort
    • debug hooks
    • The only function that can't yield from a callback is load
  • Added --mc-save argument to load computers from a Minecraft save
    • This reads from the default Minecraft save directory
    • If the save isn't stored there, you can't use this argument (use --computers-dir instead)
  • Added date-specific MOTDs
    • One of these appears today (September 8)!
  • Added support for hardware renderer in raw client mode
  • Functions can now return an unlimited* number of values
  • Updated cash to use cc.require module
  • Fixed a bug causing the same MOTD to appear on each boot
  • Fixed a bug causing a failure to connect to localhost over HTTP
  • Fixed a bug with the \x escape code
  • Modified internals of plugin loader, fixing a memory leak in the process
  • JIT: Updated LuaJIT to 2.1.0-beta3
  • JIT: Moved plugin path back to plugins-luajit as expected
  • JIT: Added FFI library (available with jit_ffi_enable set to true)
  • JIT: Removed os.setHaltOnLongRunMode, count hooks are no longer used
  • JIT: Fixed a bug causing io.read to not work
  • Windows: Added error dialog when using console-only options with non-console builds
  • Mac: Application is now built as a Universal binary (excluding CraftOS-PC Accelerated, as LuaJIT does not fully support ARM64 yet)

If you need help using CraftOS-PC, I'm available on the ComputerCraft Discord server as @JackMacWindows#9776. Feel free to ping me if you need anything.