Skip to content

CraftOS-PC v2.5

Choose a tag to compare

@MCJack123 MCJack123 released this 25 Dec 22:26
· 719 commits to master since this release
8268771

Merry Christmas (to those who celebrate it)! This year, Santa has brought you a fresh new version of CraftOS-PC, featuring a huge amount of bugfixes, with plenty of new features mixed in. The main feature is full compatibility with not just CC: Tweaked 1.94.0 (which was missing from the last update), but also 1.95.0 which just came out today (as of writing)! This is accomplished with the new ROM that is entirely based on CC:T's copy, no longer using the old CC 1.8 codebase. There's also a new plugin API, offering much better stability and opportunity for expansion, as well as some nice features such as CLI mode support for Windows.

  • Reorganized code structure for easier maintenance of the codebase
    • Code has been divided between APIs, peripherals, renderers, and general functions
    • Resolved a large number (>1000) of warnings
    • Reduced usage of extern to headers only
    • Made all non-global variables static
  • Rebased ROM on the CC: Tweaked ROM
    • The ROM is now equivalent to the CC: Tweaked ROM with additional CraftOS-PC features from the old ROM
    • With this, the CC:T Edition has been discontinued
      • It wasn't really necessary anyway
    • This should help improve compatibility in the ROM
  • Updated CC:T version to 1.95.0
    • 1.94.0
      • Add getter for window visibility (devomaa)
      • Use term.blit to draw boxes in paintutils (Lemmmy).
      • Fix several programs using their original name instead of aliases in usage hints (Lupus590).
    • 1.95.0
      • Clear gets an option to reset the palette (Luca0208)
      • Use term.blit on initial paint render.
      • Add option to disable setting globals (Lupus590).
      • Fixed length check on function name in expect (MCJack123)
      • Allow strings or numbers in textutils.*tabulate.
      • Make fs.combine accept multiple arguments.
      • Added improved help viewer (MCJack123)
      • Added numpad enter support (TheWireLord).
      • Add functions to wrap text (Lupus590)
  • Added new plugin API
    • API version has now been bumped to 10
    • New plugin init/deinit functions: PluginInfo * plugin_init(const PluginFunctions * functions, const path_t& path); & void plugin_deinit(PluginInfo * info);
    • Capabilities in the old API are now present as function pointers in the PluginFunctions structure passed to plugin_init
    • Additional functions are now available as well:
      • Access to the configuration, including custom settings for plugins
      • SDL event hooks
      • Virtual mounts
      • Running tasks on the main thread
    • See https://www.craftos-pc.cc/docs/plugins for more info on how to write plugins
  • Added release note viewer
  • Added support for CLI mode on Windows through PDCurses
  • Added optional width and height options to term.drawPixels
  • Added term.getPixels to read a region of pixels (LoganDark)
  • Added optional solid color fill argument to term.drawPixels (LoganDark)
  • Added some missing HTTP configuration options (besides black/whitelist)
  • Added a panic handler that is more like ComputerCraft's in standards mode
  • Added force-shutdown functionality when a computer refuses to close
  • Added error handlers when an uncaught exception occurs
    • This should not happen, but if it does CraftOS-PC will no longer fully crash
  • Added tracing of the last C Lua function called, hopefully helping memory corruptions be able to be fixed
  • Optimized scroll and clear routines to directly copy memory
  • Fixed os.setAlarm implementation to no longer use 100% CPU
  • Fixed unknown config options being deleted
  • Fixed close button and hotkeys not functioning when there are too many events in the queue (#154)
  • Fixed monitor.setTextScale not functioning properly with non-6x9 fonts (#150)
  • Fixed term.getPixel returning the wrong values in mode 1 (#159)
  • Fixed a race condition while resizing when using the hardware renderer
  • Fixed a race condition in os.startTimer
  • Fixed a possible race condition when firing a timer
  • Reduced the number of event timeout timers started when pulling events (#158)
    • This fixes an issue causing the timer thread to lock up trying to process start/cancel events
  • Fixed some locking issues in terminals
  • Fixed missing range checks in term.drawPixels
  • Fixed term.getPixel crashing when accessing pixel at edge of screen (LoganDark)
  • Fixed some issues with resizing the debugger
  • Fixed computers hanging when closing the debugger on Linux (#157)
  • Fixed debugger locals table sometimes not functioning properly
  • Fixed some CraftOS-PC term functions being redirected (LoganDark)
  • The craftos2-lua library can now be used in programs other than CraftOS-PC
  • Windows: Standalone builds have been replaced with portable ZIP packages
    • These function the same, but now also support plugins, the HD font, and other things previously not available
  • Mac: Made the icon a bit smaller to fit the general macOS app icon template

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.