Tags give the ability to mark specific points in history as being important
  • v0.5.0
    71941016 · Version 0.5.0 ·
    Release v0.5.0

    With this version only a single test in the Racket R6RS test suite fails. There should be no incompatibilities with previous versions. Here are some of the improvements:

    • The module syntax is exported in the (loko) module, allowing the definition of internal modules. This is provided for compatibility with existing code.

    • The (rnrs unicode) library is now completely implemented thanks to the use of the R6RS unicode implementation by Abdulaziz Ghuloum and R. Kent Dybvig.

    • The (rnrs io ports) library has received a significant speed boost.

    • Improved support for multiple return values. Up to six return values can be passed directly in registers.

    • Loko now uses laesare as its reader. This means that line and column information is available on assertions and procedures. This reader also supports the R7RS lexical syntax.

    • Loko now checks variable references in letrec and letrec* to ensure that variables are not used before they are defined.

    • The .bss section is now generated correctly, so Linux perf is now willing to use the symbol table.

    • The bin/pc-repl program is a new graphical REPL that currently runs on virtual machines.

    • map is now tail recursive and does not build up a large stack, which fixes a pathological case in some programs that use call/cc from inside map.

    See git for a full list of changes.

  • v0.4.4   Version 0.4.4
    4cc3b117 · Version 0.4.4 ·
    Release v0.4.4

    Basic support for NetBSD/amd64. Self compilation works and there is kqueue.

    Implementation of subprocess support for Linux based on ProcessesCowan (which I believe is a "pre-srfi"). It will be changed in the future whenever it becomes a real SRFI.

  • v0.4.3
    46dc9571 · Version 0.4.3 ·
    Release v0.4.3

    This is a minor release that fixes bugs and introduces some changes. See the git log for a full description of changes.

    Notable changes:

    • Linux syscalls would sometimes use an old buffer address if the syscall happened just before GC. Upgrading is very recommended.
    • Records with cycles no longer make the writer go into an infinite loop, even with custom writers
    • Hashtables are written with a syntax borrowed from Racket
    • Enum sets are written in a way that you can see their contents
    • New network card drivers: e100, rtl8139, virtio, tuntap
    • The include form and the #u8() syntax are recognized
    • GDB script support is working out of the box
    • Stdout on Linux is now block buffered unless the output is a terminal
  • v0.4.2   Version 0.4.2
    92d2b88f · Version 0.4.2 ·
    Release v0.4.2

    This is another bug fix release. See git for the full list of changes.

  • v0.4.1   Version 0.4.1
    d675caa6 · Version 0.4.1 ·
    Release v0.4.1

    This is primarily a bug fix release that fixes a crash on boot. See git for a complete list of changes.

  • v0.4.0   Göran Weinholt (49): drivers ata: ATA/ATAPI and IDE controller drivers drivers ata: Basic PACKET support drivers ata: Write & LBA48 support, some preparations for better ATAPI drivers scsi: Basic block device support srfi: Add a trivial SRFI 38 implementation compiler: Add missing i/o-error-position export arch amd64: Define delete-file on Linux runtime flonums: Implement fllog runtime flonums: Implement integer division runtime arithmetic: Fix integer-valued? and rational-valued? for flonums runtime arithmetic: Fix floor for flonums runtime flonums: Implement flexp and flexpt runtime arithmetic: Less wrong int-inexact runtime flonums: Implement flatan runtime flonums: Implement flsin, flcos, fltan, flasin and flacos runtime flonums: Fix (fl+), (fl*) and (flnumerator -0.0) runtime flonums: Implement flexpt and improve flexp runtime symbols: Implement symbol=? runtime arithmetic: Fixes prompted by the R6RS tests runtime control: Fix call-with-values for zero values runtime arithmetic: Fix non-base-10 formatting of complex numbers arch amd64: Fix code generation for bytevector-s16-ref runtime repl: Disable stack traces until they are fixed runtime bytevectors: Implement string->utf{16,32}, fix utf{16,32}->string runtime bytevectors: Fix bytevector-ieee-{single,double}-ref runtime bytevectors: Fix out-of-range UTF-32 sequences runtime io: Fix out-of-range UTF-8 sequences arch amd64: Implement file-options handling on Linux arch amd64: Implement set-port-position! for output files on Linux runtime io: buffer-mode? should return a boolean runtime io: Implement symbol write syntax runtime enums: Fix enum-set-subset? for different universes runtime init: Join the file I/O procedures runtime io: Fix a number of transcoding bugs runtime io: Fix write syntax for + and - runtime io: Common code for symbol and string hex escapes runtime io: Implement input/output ports runtime equal: Implement the Adams algorithm for equal? runtime: Stubbish/realish versions of everything needed to run the R6RS tests arch amd64: Recognize trapped overflows from fx* arch amd64: Recognize trapped overflows from fxarithmetic-shift-left tests: Add the R6RS tests from Racket tests r6rs exceptions: Relax an overspecified test case tests r6rs: Remove unused test programs CI: Fix compilation of the r6rs tests tests r6rs: Disable compilation of the syntax-case test suite CI: Double-dog-fix compilation of r6rs tests Merge branch 'r6rs-tests' Version 0.4.0
    ed085eb5 · Version 0.4.0 ·
    Release v0.4.0

    This release comes with a tonne of fixes for the R6RS standard libraries, particularly for arithmetic and I/O. They have been guided by the R6RS test suite from Racket.

    There are now drivers for ATA/ATAPI and IDE controllers.

  • v0.3.4   Göran Weinholt (29): arch amd64: Fix early VGA console scrolling at the end of the screen lib u8rings: Ring buffers, moved out from the UART driver runtime vectors: Fix type checking in make-vector Makefile: add a faster self compilation target lib u8rings: Add u8ring-clear! drivers ps2: PS/2 drivers for keyboards (partially working) and mice arch amd64: Fix logic for the 8259/PIC's Special Mask Mode drivers ps2: Functional PS/2 keyboard driver drivers: Support for keyboard maps drivers: Add a mouse manager similar to the keyboard manager drivers: uart: Increase default baud rate to a tolerable level drivers: ps2: Fix possible glitches during initialization arch amd64: Do not enable IRQ 0 drivers: Move the MC146818 driver to rtc/ runtime repl: Fix handling of non-serious conditions drivers pci: New library for reading PCI expansion ROMS drivers video: Bochs and VBE video drivers Documentation: rewrite docs in Texinfo format arch amd64: Add missing export for sys_connect runtime control: Print &program-counter conditions in hex arch amd64: Add sizeof-int and sizeof-void* compiler static: Suggest to use -feval when appropriate More work on the manual arch amd64: Increase preemption frequency to 1 kHz drivers uart: Increase rx buffer and decrease tx buffer drivers vbe: Disable debugging by default CONTRIBUTING: Reword and add an email option Documentation: add links to other resources
    ebb9c2a6 · Version 0.3.4 ·
    Release v0.3.4

    This release fixes the IRQ handling so that interrupt handlers don't block each other.

    The documentation that was previously a few markdown files is now in Texinfo format and available online.

    There are also drivers for PS/2 keyboards and mice, a reusable UART driver and a VBE graphics driver.

  • v0.3.3   Christian Häggström (1): Use gdb.parse_and_eval to get symbol address Göran Weinholt (27): README: Note versions of dependencies on Chez Scheme and Akku runtime fibers: Set channel as opaque to have them printed nicely samples web-server: Workaround for concurrency issue in ports compiler: Add the compiler option 'freestanding Documentation: Add links on how to measure performance arch: Split asm code to reduce hard dependencies on amd64 samples lsusb: New sample that lists discovered USB devices lib posix: Updates ahead of the upcoming SRFI 170 draft lib posix: Update to SRFI 170 draft #7 README: Write more explicit instructions for getting the CI artifacts lib posix: Implement make-directory-files-generator Merge branch 'eval-to-get-unwinder-symbol' into 'master' runtime main: Remove forgotten debug output drivers usb: UHCI root hub support drivers usb: Basic USB external hub support Documentation: Initial docs on drivers arch amd64: Fix miscompilation of put-i/o-{u8,u16,u32] drivers uart: Driver for 8250-compatible UARTs Fix booting on systems with more than 4GB of RAM runtime records: Improve the conditions from record accessors & mutators runtime control: More compact printing of conditions samples etherdump: Print a message if no rtl8139 is found drivers pci: Fix a crash when there is a subordinate bus arch amd64: Early debug output on the VGA text console runtime records: Faster code for sealed records srfi: Add and install (srfi :170 posix), MIT-licensed Version 0.3.3
    d41c65f4 · Version 0.3.3 ·
    Release v0.3.3

    This is primarily a bug fix release that addresses two bugs that prevented booting on bare metal as well as a miscompilation in put-i/o-*.

    See the git changelog or the release tag for a complete list of changes.

  • v0.3.2   Göran Weinholt (19): Fix for hashtable hash functions that return bignums Reserve the area used for the AP boot libs buddy: Add some simple hardening arch amd64: Fix translation of call/jmp via non-procedures arch amd64: Clear memory areas during allocation; more sensible log messages Merge loko-drivers, loko-posix, rename libs to runtime drivers usb: USB driver code (WIP) CI: Fix the sample build test Install (loko match) by default Implement more of SRFI 170 in (loko posix) Add support for record writers drivers: Add an early WIP real-time-clock driver Fix bug introduced in 74765b11 main: Set the file mode correctly on binaries (oops) Fix miscompilation of bytevector-[su]{16,32}-ref lib match: Use fixnum procedures runtime io: Small changes to use primitives runtime records: Fix record-writer for opaque records Version 0.3.2
    34f497b7 · Version 0.3.2 ·
    Release v0.3.2

    While primarily a bug fix release, this release also merges the loko-drivers and loko-posix (SRFI 170) projects into Loko.

  • v0.3.1   Göran Weinholt (19): Replace allocate with dma-allocate How to contribute, some conditions, website the REPL banner libs buddy: New library power-of-two memory allocation libs buddy: Support for non-2^k memory sizes Set the executable bit when compiling programs Use the buddy allocator for DMA memory Fix for a minor potential missed IRQ Initialize library-directories and library-extensions earlier Enable use of eval in compiled programs; add an ethernet demo Updates to the README Fix for programs that do not use -feval samples bga-graphics: Use the linear framebuffer Fix seeking in string and bytevector output ports Fix for = with non-finite flonums Fix a typo in flodd? and fleven? Fix eqv? for mixed exactness and -0.0; fix equal? to use eqv? Fix missing latin-1-codec in put-char samples: Add a makefile, build them in CI Version 0.3.1
    a032f1ef · Version 0.3.1 ·
    Release v0.3.1

    This is primarily a bug fix release, but also includes a memory allocator for DMA and other future uses.

  • v0.3.0   Göran Weinholt (30): cp0: Simplify fxarithmetic-shift with a constant shift amount hashtables: Fix hashtable-keys to handle deleted keys Fix exception handling and add parameters to (loko) Documentation: note how to look up trapping instructions Fix for lost IRQs Fix the return value from (get-bytevectors-n port 0) Initial work on fibers fibers: Use the proper queues for channels Add definitions for Linux needed to dup file descriptors fibers: Support for sleeping when running on a PC fibers: Add a web server sample for Linux fibers: Implement condition variables and fix wrap-operation fibers: Fix choice-operation fibers: Add non-determinism fibers: Add a test suite fibers: Integrate fibers with the runtime library I/O fibers: Store timers in heaps and add cleanup of channels fibers: Rewrite the UART driver to use fibers, various IRQ rework fibers: Export the safe exit-current-task, but not make-base-operation fibers: Document fibers, concurrency and interrupt handling Merge branch 'wip/fibers' More docs for parameters, the timing procedures and disassemble .gitignore: Add config.sls Update the version number to 0.3.0-alpha.0 Implement get-bytevector-n, stirng->bytevector and bytevector->string lspci: New sample that scans and lists the PCI bus Add a bunch more Linux syscalls Documentation: minor adjustments to interrupts.md Export IRQ procedures Version 0.3.0
    ec69bbc0 · Version 0.3.0 ·
    Release v0.3.0

    This release adds support for fibers, a lightweight concurrency mechanism. There is a (pretty brain dead) web server sample as a demonstration.

    An additional sample was added, lspci, which scans the PCI bus and lists the devices it found.

    There are also some fixes in the R6RS libraries.

  • v0.2.1   Version 0.2.1 Göran Weinholt (12): Add an install target in the makefile Fix for returning multiple values with call/cc Add documentation for gensym Add definitions for the readlink Linux syscalls Add an install target to the makefile Fix the base case of the partition procedure Fix library-extensions documentation to show the true default Change the Linux syscall wrappers to retry on EINTR by default Fixes for hashtable-size Fixes for hashtables due to the hacky way entries are deleted Implement the basic string comparison procedures from R6RS
    f2f58a48 · Version 0.2.1 ·
    Release v0.2.1

    This adds an install target in the makefile, but is primarily a bug fix release.

  • v0.2.0   Version 0.2.0 Göran Weinholt (25): Add some documentation (more to come) Move syscall, memory and I/O primitives to (loko system unsafe) Clean up the internal libraries Documentation: Add some notes on tools support Fix the repl handling of void (broken in 82f8e912) New (loko system time) library with built-ins for SRFI 19 Add built-ins to support SRFI 6 Fix for eval when a primitive is not a procedure Add an implementation of delay and force Add port-file-descriptor Add wrappers for Linux stat syscalls Rename $bytevector-location to bytevector-address, make it public Reorganize the documentation a little Add an early /boot file system with the multiboot modules Add a Hello World sample Add a sample that shows how to get simple graphics going Updates to README.md Add support for compilation from the command line; retire TUI Comment out some debugging code Link to the website Add documentation for port-file-descriptor Fix the return value from close-port Print conditions after stack traces Increase I/O buffer sizes to 4k Add support for implementing directory listings
    Release v0.2.0

    The major highlight is support for compilation of programs.

  • v0.1.0   Version 0.1.0
    Release v0.1.0

    This is the initial release of Loko Scheme.