• v0.7.0 bbe1eca711

    Luna September 13 Release - 0.7.0 "Pulsar"
    All checks were successful
    Build and test / build (push) Successful in 1m45s
    Stable

    apio released this 2024-09-07 15:40:39 +00:00 | 57 commits to main since this release

    It's been a while since the last one, huh?

    Activity in Luna has died down quite a bit - but 8 months are still enough for quite a few changes, even if none of them too flashy.

    As you can see, my QEMU menu bar is now white, for some reason.

    The only difference between this picture and the one for 0.6.0 (apart from the version info) is the process list, which as you can see shows there's been some behind-the-scenes changes in the organization of processes (and yes, clock and about are missing- I ran ps first).
    Screenshot from 2024-09-13 21-50-25.png

    New features:

    • Add more functionality to libos's Timers
    • Add a (user) prefix to init's logs when not running as system init (PID 1)
    • Add startui, which starts and manages an entire UI session
    • Add a second unix socket for privileged wind clients which need to be in a different group
    • Add a background launcher service
    • Make os::IPC code object-oriented and add functionality for properly receiving messages
    • Add a wind request for setting special window attributes
    • Add a basic Gitea actions file
    • Add LinkedList tags to libluna
    • Add kernel support for extended keyboard scancodes
    • Use the arrow keys and the Home key as input in 2048
    • Add run, a command-line utility to start an app detached from the terminal session
    • Add kernel support for regular ATA drives (non-ATAPI)
    • Add ways to format output to an os::File
    • Add libwind port (to use wind APIs in third-party ports)
    • Add doomgeneric port
    • Add a _POSIX_VERSION define to libc
    • Make taskbar entries configurable
    • Add taskbar entry for 2048
    • Add support for a shadow file and use it by default
    • Add a basic text editor
    • Add support for keyboard shortcuts directly in libui
    • Split shell code into multiple files, add the "echo" builtin, and add support for a .shellrc file
    • Try to grow the process stack on stack overflows, up to a maximum of 8MB
    • Add (slightly outdated) documentation for the boot process in boot_process.md
    • Implement hash table iteration in libluna
    • Add a SHA256 hash implementation
    • Add endianness-dependent functions to libc (endian.h)
    • Add the "arch" command (equivalent to uname -m)
    • Add a os::Notifier API to know when child processes have finished initialization
    • Add a login UI
    • Add a reference-counted immutable string type
    • Add a standard API for config file access
    • Add a hackish "logout" command

    Fixes:

    • Make ui::App::process_events() private
    • Make os::EventLoop callbacks more versatile
    • Stop using magic numbers for user and group IDs in wind
    • Change ui::App::init() to take the socket path directly instead of command-line arguments
    • Handle aborted connections in the kernel instead of crashing
    • Rename SetTitlebarRect in libui to SetTitlebarHeight
    • Fix libc's memmove when dest > src (this was crashing gcc, and this fix finally made gcc work!)
    • Fix String::from_string_view construction for inline strings
    • Fix mpfr download url
    • Build gcc without --enable-checking
    • Avoid starting a shell to spawn test processes
    • Correct a bunch of format strings
    • Show which wind IPC function was called with an invalid window id
    • Ignore alpha bits in wind's window buffer
    • Make luna-pkg-config executable
    • Implement strtoll and strtoull as functions
    • Use the correct architecture in make-package.sh
    • Close all pipe file descriptors in popen() after dup2() is called
    • Properly initialize the kernel's shebang read buffer with zeros
    • Change the year in the default ArgumentParser copyright message (yes, this took a while)
    • Map kernel-side pages as global to avoid TLB flushes
    • Remove the server->client wind message "WindowCloseRequest"
    • Correct description for the login service
    • Change ownership of skeleton files when copying them to the home folder
    • Show an error message when attempting to copy a directory into a file using cp
    • Prevent kernel threads from calling exit_and_signal_parent()
    • Partially implement freopen() when a null pathname is provided
    • Avoid assuming endianness in ATA kernel functions
    • Reorder directory structure
    • Use SIGQUIT to restart the taskbar instead of SIGHUP
    • Make StorageCache have a reference to its parent BlockDevice
    • Make libluna's new and delete weak to avoid conflicts with libstdc++
    • Clean up LocalServer's socket file on exit
    • Remove /tmp/launch.sock as root when starting a new launch process

    As always, you can download this release from pub.cloudapio.eu. Keep in mind that this release now has a login UI (usually disabled in development builds, but not here!), so you'll have to use the username "selene" and the password "moon" to log in (or username "root" and password "toor" for a superuser session).

    Downloads