This one has a lot of patches!
Overview: This maintenance release features enhanced internationalization support with Spanish and German translations, per-user settings, and extensive stability and performance improvements, most notably to the kernel memory, user input, disk I/O, and GUI subsystems.
- Added per-user home directories, under /users, which are now the default 'current directory' when the user logs in.
- Created a new configuration file for environment variables that are set at login time, and per-user override ones in home directories.
- Language setting is now a system-wide and per-user environment variable, that can be chosen at first boot, and in the user management tools.
- Added Spanish and German translations for many of the user programs and GUI features.
- Added a 'language chooser' dialog window to the window library.
- Part of the GUI system has been re-written, including changing the 'menu' implementation from a window component into a child window.
- GUI menus have been changed so that when the topmost menu item is selected, pressing cursor-up removes the selection.
- The file dialog window now shows the current path the way the file browser program does.
- Implemented mouse and keyboard threads to process input outside of the interrupt context, for improved stability.
- The keyboard system has been redesigned, including the use of hardware-neutral (based on UEFI) scan codes and modifier flags.
- Added typematic key repeats for USB keyboards.
- Fortified the kernel's user management code and closed some security loopholes.
- Added a 'deluser' command line command, as a companion to 'adduser'.
- Modified the 'passwd' program, so that no user name argument means to assume the current user.
- Password length checking has been added to the User Manager program.
- The disk caching code now does more combining of cache entries for improved performance, reducing the number of disk writes.
- Some of the kernel's memory management code has been reworked.
- All hardware drivers that use mapped physical memory now set the memory page attributes to disable caching.
- The installers and install file format (e.g. dist/system/install-files.*) now have a way to specify different source and destination filenames.
- Interrupt handlers are now disallowed from allocating or freeing memory, or changing the page tables/directories.
- Made the kernelImageLoad() "requested width" and "requested height" parameters work generically, for image types whose drivers don't support it.
- Added 'set data' functionality to a number of the GUI components, required for support of on-the-fly language switching
- Separated the kernel's window shell thread from the main GUI system, as a precursor to making it a userspace executable, and to facilitate per-user settings and runtime language switching.
- Re-implemented the kernel's 'variable list' functionality, so that it uses data offsets instead of pointers to locate variables and values. This makes them easier to copy.
- When a child process inherits an input stream, the old text attributes are now remembered, and restored when the process terminates.
- The build system now uses a command line 'make debug' to create a debug build, which doesn't strip libraries or executables.
- Fixed up the ctype.h functions (isalpha(), tolower(), etc) so that they use the ISO-8859-15 code page we're using everywhere else, instead of just basic ASCII.
- Added a setenv() function to the C library.
- Added a kernelUserExists() function (userExists() in user space).
- Added a new include file, <sys/paths.h>, that centralizes the definition of some of the basic file structure.
- Created header files <sys/gpt.h> and <sys/usb.h> and moved the relevent definitions from the Disk Manager and the kernel to those.
- Added a utils/trim-whitespace script for stripping trailing whitespace from source files and whatnot.
- Removed the big header file of PCI vendor and device codes that we were using in debug mode. Too much of a pain to edit/maintain.
- Fixed: Moving the PS/2 mouse around during hardware initialization of its driver could cause a cascading boot failure.
- Fixed: When there were windows on the screen, pressing ALT-TAB 2-3 times could cause a major GUI crash.
- Fixed: When resizing images in the 'view' program, the window title bar didn't update (with the correct zoom percentage) until the window focus changed.
- Fixed: In graphics mode, the File Browser only noticed directory changes when a file is added or removed, but not sub-directories.
- Fixed: The interpretation of the Linux swap fileystem header.
- Fixed: Support for using images inside of GUI buttons
- Fixed: The internationalization library 'libintl' to allow multiple switches of the language messages at runtime.
- Fixed: The implementation of the C library getenv() function, so that repeated calls don't leak memory.
- Fixed: A program with no input stream could crash if it called the kernel's text input functions. Added checking in the input functions.
- Fixed: Improved the stability of the Screenshot program.
- Fixed: When logged in to the GUI as an unprivileged user, there were a lot of error messages stating: Cannot release system memory block from unprivileged user process.
- Fixed: Pressing backspace at position (0,0) would cause the Edit program to crash.
- Fixed: Clicking on the kernel binary in the file browser program would cause a crash in the kernel's runtime loader.