Skip to content

Releases: chaos4ever/chaos

0.3.0

31 Aug 21:01
Compare
Choose a tag to compare

General release notes

  • For the first time in many years, the modplayer is now back to a functional state again. This, together with the soundblaster server being converted to our Rake-based build (#3), makes it possible to play .mod files in chaos again. 🎉
  • The modplayer was also improved; we added some simple visualizations for each channel during playback. The current instruments being used is also highlighted.

To test this on your local machine, please download the .iso file attached to this release and set up a virtual machine in e.g. VirtualBox with SB16 sound hardware. Once the system is booted, you can start the modplayer by simply typing modplay at the Cluido command prompt. (Unfortunately, the help command doesn't list this yet - will hopefully be fixed in a later release.)

Here is what it looks like in action:

chaos modplayer

  • Some of the more notable PRs worth mentioning:
    • #140: Made the soundblaster server compilable again (it was still using the defunct autochaos for building)
    • #153: Fixed the IPC to not require memory allocation for each message being published. This improves the performance
    • #154: Convert to use hxcmod .mod player engine. This was a great step towards supporting many more modules than previously; our home-made .mod parser was rather incomplete and only worked with a limited subset of .mod files. (Other files would sound ugly or not work at all.)
    • #159: Add .mod visualization in modplay program

Details

Full Changelog

  • 2e5d306 Release 0.3.0
  • c55476f (modplay) Replace ASM94.MOD with 95raver.mod (#171)
  • 1745c27 (modplay) Add more .mod files (#169)
  • 8554a34 (vscode) Add storm remote debug configuration (#168)
  • 8c4df99 (storm) Fix debug_print() handling of large unsigned integers (#166)
  • 994ca63 (cluido) Fix command_execute to support a hardwired PATH (#165)
  • de12259 (pci) Include vendor and device ID in pci_device_info_type (#162)
  • cae9a51 (ci) Add Slack notifications on CI builds.
  • dd0965e Minor #2 fix
  • a53d2e8 [docker] Unbreak build by forcing use of gcc-7
  • 5e24882 [startup] Remove modplay from startup script
  • b5f6d16 Fix Docker Hub building
  • 5742d20 Minor #2 fixes
  • c906dc7 [servers/soundblaster] Use "generic DMA" command for starting playback (#160)
  • 34c15d4 [programs/modplay] Add .mod visualization (#159)
  • c4bb50f [libraries/console][servers/console] Support double-buffering of console output (#158)
  • 7695aba [storm] Minor #2 fixes
  • 0dcbd66 [qemu.sh] Enable SB16 emulation
  • 024d9d2 [programs/modplay] Add more (hardwired) .mod files (#156)
  • c6545c0 [servers/console] Allow the activate flag even when a console is active
  • 5241579 [servers/keyboard] Minor #2 fix
  • e86ba2e Enable unit tests in Travis again (#152)
  • 868f046 [programs/modplay] Convert to use hxcmod .mod engine (#154)
  • 2799a59 [storm] Refactor IPC to use circular queue (#153)
  • 435dbe4 [many] Various #2 fixes
  • d54064f [programs/cluido] Fix typo in allocation clock cycle output
  • a8500a8 [storm] Add kernelfs info about memory allocations & deallocations (#150)
  • 285d800 [libraries/console] Enable printf compile-time checking
  • 0b6240e [servers/boot] Misc fixes
  • 283f940 [programs/cludio] Make 'memory' display global memory stats in KiB
  • 6be2a60 [programs/cluido] Add 'free' as alias for 'memory'
  • 8d16d45 [servers/fat] Fix fat_file_open case bug (#147)
  • 105ba17 [programs/modplay] Move typedefs to header file
  • 0b16e88 [servers/soundblaster] #2 and #3: Fix to be compilable w/ Rake (#140)
  • 14a83f0 [programs/modplay] #2 and #3: Fix modplay to be compilable with Rake (#145)
  • fa4e2e9 [storm/include] #2: Update copyright header
  • 4f8a89f [libraries/sound] Convert to Rake compilation (#143)
  • 69bc1bb [ci] Remove gcc 5 from Travis config (#142)
  • 5ded7a8 [servers/console] Add TODO
  • 6abdd3b [libraries/system] Fix bug in system_call_dma_register (#141)
  • 5cb9adc [grub] Fix server names
  • c8744ac [programs/modplay] Remove modplay binary
  • 151798a [storm] Minor comment fixes
  • 537d504 Remove checksum library
  • 823f998 Reformat log library

0.2.0

12 Nov 21:04
Compare
Choose a tag to compare

General release notes

  • Fixed the bootup sequence to actually load cluido properly, from the ramdisk using the boot, virtual_file_system,fat and initial_ramdisk servers together. This item itself is worthy of its own story; I have blogged about it at great length here: http://perlun.eu.org/en/2017/12/30/chaos-why-is-the-boot-server-unable-to-read-the-startup-script
  • Changed bootloader from grub-legacy to GRUB 2, the current version of GNU GRUB. This helped in supporting the next bulletpoint, namely:
  • Made it possible to boot from a USB pen device. Just use cp (on Linux) or Rufus (on Windows) to write the .iso to the proper device and you should be able to boot it. Please, give it a try and share any feedback about this here in our GitHub repo!
  • Added CI building of Docker images on each push to master. Our image can be found here, and you should be able to run it by simply executing docker run -it chaosdev/chaos. (The container uses qemu under the hood, to simulate a physical machine.)

Details

Full Changelog

  • c9c40c0 Release 0.2.0
  • fabf54c [servers/console] Add new activation flag (#137)
  • 8c2955f [ci] Remove gcc 4.9 in the Travis runs
  • f017684 [build] Add support for building Docker images (#136)
  • eab58d6 [servers/pci] Disable PCI setup for 0x8086/0x9d23
  • 4273e7a [servers/pci] Fix for #2
  • f9529cd [servers/fat] Fix support for case flag (#130)
  • c4374db [grub] Increase timeout
  • 0a01202 [servers/fat] #2: Shorten line lengths
  • 8c1b1bf [programs/cluido] Add aliases for list
  • 123afcc [programs/cluido] Minor improvements to wording
  • 55d06d2 [programs/cluido] #2: Fix copyright notices
  • bfa89f4 qemu.sh: Run in non-curses mode
  • 813dfa0 [servers/console] Fix console switching bug
  • b4877f8 [grub] Change from grub-legacy to grub-2 (#127)
  • 60ec03f [storm/mailbox] Add reader_thread_id field
  • 0c6040a [servers/video] Fix font setting (#126)
  • b2e6e1a [servers/console] Fix reentrancy issues (#124)
  • acb8b52 process_init: Ensure kernel_tss is zeroed out
  • b5727a4 Bug fix: thread_create should use PL3 stack for thread entry point (#122)
  • ccd3967 virtual-memory.md: Add more details about PL0 stack
  • 01b373d Add GRUB 2 config file
  • 7c965a1 Add support for building on amd64 host (#119)
  • 1ada4b8 Refactored boot server & made it work (#117)
  • 726202c console server: Always activate new consoles being created.
  • ee7a250 cluido: Start at fixed VM address
  • 14cfb0c libraries/execute_elf: Fixed formatting. (#114)
  • e53a022 mutex.h: Invert MUTEX_LOCKED and MUTEX_UNLOCKED values
  • 19f7fd8 Upgrade Rubocop version (#113)
  • 6694090 Map process page tables using magic PD entry (#112)
  • f950f70 qemu.sh: qemu-system-i386 should be used
  • 61592c3 debug_crash_screen: Fixed typo.
  • 065c304 Bug fix: The FAT server should handle modern FAT16 volumes (#111)
  • 44a89f9 Misc copyright fixes (#110)
  • efca151 Rake: Recreate the ramdisk image on each rake install (#109)
  • f23b0d1 virtual-memory.md: Fixed typo
  • 452416f docs: Converted the virtual-memory document to Markdown (#108)
  • 0bcbda5 memory_virtual.c: Fixes for #2
  • 936fc4e log server: Disable DEBUG messages by default
  • 97415f4 👮 Linter fix.
  • 3fbcca6 Vagrantfile: Added psmisc
  • 177957d Linker scripts: made it possible to override PROCESS_VM_BASE
  • 0906af6 Vagrantfile: Increased timeout.
  • 5d1cbb5 mailbox.c: Improve on 5f41833
  • 4c5dd1f VFS server: Better error handling, more logging.
  • 3632577 libraries/file: Improved error handling
  • 5f41833 mailbox_receive: Improved debug message when attempting to read message that does not fit.
  • b2bb3f4 menu.lst: Need to start the fat server after the log server.
  • f252bed Workaround for menu.lst caching
  • 3293f21 Re-enable stack growth
  • 5b53db6 libraries/ipc: Cleanups (#98)

0.1.0

27 Sep 18:43
Compare
Choose a tag to compare

General release notes

  • Started using Semantic Versioning for our version numbers. New releases will hereafter be 0.2.0, 0.3.0 until we eventually reach 1.0.0.
  • Many small improvements. The biggest single improvements are:
    • First steps toward a Raspberry Pi port.
    • The code is now compilable with gcc 6 and 7. Caveat: The resulting binaries have not been tested. Use at your own risk!
    • Use stdint.h instead of declaring our own u32, i32 etc. types.
  • The full details can as usual be found below.

Details

  • 2d78ea4 Release 0.1.0
  • 57d5b82 Travis: Support newer gcc versions (#96)
  • 9d492dc Removed network library (#94)
  • fa48865 Removed math library (#93)
  • dca316b Removed empty ipv6 library
  • 7dd7a62 libraries/string: Minor cleanups (#92)
  • 10c5979 Vagrantfile: Default the ARCH to x86
  • c39f8a2 Vagrantfile: Fixed broken comment.
  • 3f300e3 README.md: Improve compilation instructions
  • 529fd70 README.md: Fixed markdown, updated copyright year
  • 38b1609 First very rudimentary bootable build on Raspberry Pi (#88)
  • 0d0eb1c Implemented basic compilation support for raspberrypi (#87)
  • 00d1029 Rakefile: Use sh instead of system
  • 54cfe96 Use stdint.h (#86)
  • c73cc7f Removed makefile.template files (#85)
  • 94aa98d Renamed ia32 references to x86 (#84)
  • 6f0f1d1 Added arm toolchain. (#81)
  • 826514b Disable the Rust toolchain for now (#82)
  • 9f7ce32 Adjusted copyrights #2.
  • 30cd8f1 Updated copyright.
  • 3f2677b Use US keyboard by default (#78)
  • 20088bc Maintenance: reformatted keyboard server (#77)
  • fc78828 Updated copyright year (#76)
  • 201475c Removed outdated docs
  • 8e37331 Removed the dead nibbles code
  • dc9a835 Fixed cluido to not make VFS calls when the VFS service is unavailable.
  • b966b7b Reformatted file library.
  • b8e9de8 Updated email address
  • aca89fa Let the dispatcher yield CPU when no thread is currently active.

0.0.4

21 Feb 21:03
Compare
Choose a tag to compare

General release notes

No major changes or improvements; mostly a "small improvements" release. The single biggest improvements are:

  • Updated the Vagrant & Travis settings to use gcc version 5 (instead of version 4.7 which was the previously assumed version).
  • Added support for building servers in Rust. Rust is still a quite "new" language in terms of stabilization and feature support; the first "stable" version 1.0 was released in May 2015. Still, it has interesting features and is a much more "modern" systems programming language than C/C++ which means it should be quite useful for writing parts of chaos with it. Don't expect a full system rewrite in Rust within any near future though... 😉

Details

  • #55: Vagrantfile: Added gdb package and .gdbinit config
  • #56: Added very basic support for Rust compilation
  • #58: Added Rust libcore and rlibc
  • #60: Simplified grub stage2 copying as a result of #52
  • #61: rakelib/common_rules.rake: Minor lint fixes.
  • #62: Updated to gcc version 5.
  • #63: Use rust nightly from last night.
  • #64: Re-enabled code that downloads and unpacks rlibc.
  • #65: Recompiled the libcore and rlibc.
  • #66: Linter fixes, to be Rubocop clean.
  • #67: Removed autochaos

0.0.3

12 Sep 11:02
Compare
Choose a tag to compare

General release notes

This version brings in some of the stuff that was missing in the previous release (most notably, the ipv4 and pci servers). Apart from that, there is really no "new" stuff. Let's see what 0.0.4 has in store...

Details

  • #43: Parameterized the Vagrantfile to support both VirtualBox and Parallels
  • #44: Fixed network servers (ipv4 and loopback)
  • #46: cluido: Adjusted version and fixed license
  • #47: cluido: Wait for ipv4 to become available
  • #48: cluido: Wait for vfs to be available
  • #49: cluido: Fixed the top command to display the correct process name
  • #50: cluido: Made top display times in percentage
  • #51: Removed old GPL-licensed network drivers
  • #52: Vagrantfile: Changed to 32 bit Debian box
  • #53: Made the pci server work again
  • #54: Fixed cpu_reset to not cause a warning in VirtualBox

0.0.2

08 Jun 20:31
Compare
Choose a tag to compare

General release notes

  • First release of chaos in more than 10 years. 🎉
  • Brings much of the existing code base into shape, making it work with recent versions of e.g. gcc. Custom build tool (autochaos) has been mostly superseded with a set of Rake-based files instead (#3).
  • Floppy image has been superseded with an .iso image, which should give us loads more space for servers and programs. As a consequence of this, the release is distributed both as source code and an easily usable .iso file which can be used with any VM software (VirtualBox, Parallels, VMware, etc.). In other words: you do not need to compile chaos yourself to be able to test it, which is kind of cool.
  • Some servers (like the pci and ipv4 servers) are still not updated to the new Rake-based build. They are not included in compiled form in this release. We hope to provide an updated 0.0.3 release within the reasonably near future, where more servers are included.

Details

  • #9: The vga server cannot be started (ELF sections issue)
  • #10: System hangs in process.c
  • #11: Illegal page fault when starting the vga server
  • #12: Kernel tried to lock a mutex in a situation where tss_tree_mutex was already locked
  • #13: Enabled Travis CI builds
  • #14: Console library tries to resolve IPC service with empty name
  • #16: [KERNEL BUG] mailbox_receive: Mailbox was NULL in vga server
  • #17: Vagrant now installs qemu when provisioning
  • #18: Fixed logo: now available as SVG and the old PNG version greatly improved
  • #19: Removed g++ dependency
  • #20: Updated .gitignore list
  • #21: [KERNEL BUG] update_data: tss_list == NULL (dispatch.c:94, process = console (1), thread = unnamed (3)
  • #22: Removed g++ remnants
  • #24: Added unit test infrastructure
  • #25: Some kernel variables have the wrong values on startup
  • #26: Misc cleanups and closed #25
  • #27: Rewrite system_calls.pl in Ruby
  • #30: Changed thread_create() to take the new thread entry point as parameter
  • #31: Make chaos bootable again (umbrella issue)
  • #33: Made the boot server work again
  • #34: Made the VFS server work again
  • #36: Create ISO image on build
  • #37: Support larger servers than a few megabytes (don't hardwire physical AVL tree location)
  • #38: Made the FAT server work again
  • #39: Added .gitattributes to force LF line endings
  • #41: Made cluido work again
  • #42: Make some of the remaining libraries compile again
  • 4a5deca: Fixed bug that caused the wrong process name to be printed in debug_crash_screen().
  • b686d54: Fixed bug that would prevent the kernel from being re-linked when a file in the generic/ folder was being updated.

(and probably a bunch of other smaller improvements as well)