From: kosmirror <kos...@us...> - 2025-07-11 22:00:17
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "A pseudo Operating System for the Dreamcast.". The branch, master has been updated via e4171afbdaf20574a554d8d40f08552e0680db14 (commit) via 09c5f1189cc5e4fcb821564f2b716229f4d244f2 (commit) from 0c6a4cf9e383fdfea5c2bcfefab301beee349f80 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit e4171afbdaf20574a554d8d40f08552e0680db14 Author: QuzarDC <qu...@co...> Date: Thu Jun 19 18:42:09 2025 -0400 Update version to 2.2.0. Additionally clean up some whitespace. commit 09c5f1189cc5e4fcb821564f2b716229f4d244f2 Author: QuzarDC <qu...@co...> Date: Sun May 18 13:48:55 2025 -0400 Update Changelog and Relnotes for v2.2.0 ----------------------------------------------------------------------- Summary of changes: doc/CHANGELOG.md | 29 +++++++++++++++++++---- doc/RELNOTES.md | 64 +++++++++++++++++++++++++++++++++++++++++++++++---- include/kos/version.h | 36 ++++++++++++++--------------- 3 files changed, 102 insertions(+), 27 deletions(-) diff --git a/doc/CHANGELOG.md b/doc/CHANGELOG.md index 1a6544c7..49f8937d 100644 --- a/doc/CHANGELOG.md +++ b/doc/CHANGELOG.md @@ -5,22 +5,43 @@ Platform-specific changes are prefixed with the platform name, otherwise the cha ## KallistiOS version 2.2.0 - Added . & .. directories to filesystems that lack it [Andress Barajas == AB] - Replaced previous implementation of realpath() to remove license from AUTHORS [AB] -- Enabled hybrid PVR DR/DMA vertex submission in driver + sped up pvr_prim() [Falco Girgis == FG] +- Made FD_SETSIZE configurable in kos/opts.h [AB] +- **Dreamcast**: Enabled hybrid PVR DR/DMA vertex submission in driver + sped up pvr_prim() [Falco Girgis == FG] - Add thread priority boosting system [Paul Cercueil == PC] +- **Dreamcast**: Use DMA for iso9660 reading [PC] +- **Dreamcast**: Dynamic maple device allocation [PC] - Add performance monitor API [PC] - Add/Fixed stat() implementations for all filesystems [AB] - **Dreamcast**: Add pvr palette example [AB] +- **Dreamcast**: Fixed, expanded, and created example for library loading [Ruslan Rostovtsev == RR] - **Dreamcast**: Cleaned up, documented, and enhanced BIOS font API [FG] -- Rework PVR hybrid mode + IRQ handling [PC] -- **Dreamcast**: Add support and update toolchain profiles for Newlib 4.5.0, Binutils 2.43.1, and GDB 15.2 [EF] +- Expanded KOS_INIT_FLAG options to include default VFSes and library loading [FG] +- **Dreamcast**: Rework PVR hybrid mode + IRQ handling [PC] +- Removed defines for BSD-style types (u_char, u_int, etc) [Donald Haase == DH] +- **Dreamcast**: Add support and update toolchain profiles for Newlib 4.5.0, Binutils 2.43.1, and GDB 15.2 [Eric Fradella == EF] - **Dreamcast**: Make m4-single the default floating-point ABI [EF] +- **Dreamcast**: Allow building a toolchain for the m4-nofpu ABI [DH] - **Dreamcast**: Add DMAC API [PC] - **Dreamcast**: Add basic MMU functionality [PC] +- **Dreamcast**: vmu_pkg loading from .ico icons [PC] +- **Dreamcast**: vmu_pkg Manage file headers outside of standard fs [PC] - **Dreamcast**: Added Raytris raylib example by Niisoks [FG] -- Removed old pthreads implementation from kernel/libc [LS] +- Added support for pthread_condattr_setclock() [FG] +- Expanded supported sysconf queries [FG] +- **Dreamcast**: iso9660 multi-sector reads to use DMA and no longer cached [RR] +- **Dreamcast**: Substantial cleanups and refactoring for PVR and IRQ APIs [FG] +- Various internal adjustments to support non-Dreamcast platforms [DH] +- **Dreamcast**: maple now allows per-driver device attach/detach callbacks [PC] +- **Dreamcast**: iso9660 file table now dynamic, preventing the need for manual size adjustment [PC] +- **Dreamcast**: cdrom add support for irq-based DMA reads as well as data streaming [RR] +- Removed old pthreads implementation from kernel/libc [Lawrence Sebald == LS] - Added new (more complete/compliant) pthreads implementation in addons/libpthread [LS] - Added implementation of thread barriers [LS] - Added support for pthread_condattr_setclock() [FG] +- **Dreamcast**: maple Keyboard driver significantly rewritten, new event driven API added [FG] +- **Dreamcast**: Add SCI driver [RR] +- **Dreamcast**: Update SD card driver for SCI support and optional CRC check disabling [RR] +- New macro __is_defined() which should be used in place of #ifdef guards internally [PC] ## KallistiOS version 2.1.1 - Added pvrtex utility by TapamN to utils [Daniel Fairchild == DF] diff --git a/doc/RELNOTES.md b/doc/RELNOTES.md index 68d1ce39..534a5d3b 100644 --- a/doc/RELNOTES.md +++ b/doc/RELNOTES.md @@ -1,12 +1,64 @@ -KallistiOS ##version## -Copyright (C) 2002, 2003 Megan Potter -Copyright (C) 2012-2019 Lawrence Sebald -Copyright (C) 2024 Donald Haase -Copyright (C) 2025 Eric Fradella +KallistiOS ##version## +Copyright (C) 2002, 2003 Megan Potter +Copyright (C) 2012-2019 Lawrence Sebald +Copyright (C) 2024-2025 Donald Haase +Copyright (C) 2025 Eric Fradella RELEASE NOTES for 2.2.0 ----------------------- +# What's New in Version 2.2.0 + +There are three major changes in v2.2.0 compared to prior releases. The first +is that it didn't take 10 years! Other than that, we have a new implementation +of [POSIX threading](./RELNOTES.md#libpthreads) and have updated the default +[Floating-point ABI](./RELNOTES.md#floating-point-ABI) to `m4-single`. A more +thorough explanation of each can be found below the rest of the high-level +changes. + +# Core Functionality +* FS: `.` and `..` handling and `stat` for all vfs. +* Expanded `KOS_INIT_FLAG` options for vfs support. +* New Priority Boosting scheme for threads. +* Fixed library loading functionality. +* Added `getpeername()`, `settimeofday()`, and expanded `sysconf()` support. +* Entirely new libpthreads providing enhanced support for POSIX threading. + +# Dreamcast Functionality +* Support for CD IRQ-based DMA, and DMA Streaming. +* Reworked APIs with strong typing for: IRQ, DMAC, bfont, Keyboard, and PVR. +* Support for SQs when using MMU. +* New Performance counter based performance monitor API. +* VMU metadata is now excluded from standard file reading and managed by API. +* [Driver for the SCI interface. Accessible on DC via mod or NAOMI via CN1.](https://github.com/KallistiOS/KallistiOS/pull/978) + +# API Breaking Changes + +## Strict types breaks + +In an effort to improve the reliability of our API overall, we have been moving +to using enum types and other defined types in place of standard types. This has +been done notably in the bfont, Keyboard, and PVR API reworks. These should +all remain compatible with previous implementations, but gcc 14+ will mark many +as errors rather than warnings. In every case, the error should clearly show +how simply changing the types of parameters will correct them. + +## VMU file headers + +Reads and writes to `/vmu/` will no longer need to be manually adjusted to avoid +writing into the file header or managing it specifically with file operations. +Instead `fs_vmu_set_header()` can be used to set the header to be used for a file +and `fs_vmu_default_header()` can be used to set a header to be used by default +for all files written to vmus. The file header contains metadata used by the +Dreamcast's BIOS in its memory manager and contain text and images. + +Prior to this change, files created by KOS on memory cards would either show +garbage in the Dreamcast's BIOS or the header would need to be manually compiled +and written to files prior to writing other data. This old behavior can still +be accessed by opening a `/vmu/` file with the `O_META` flag in `fs_open()`. + +# libpthreads + POSIX threading (pthreads) support has been moved out of the kernel and into its own addon library (libpthread). This support has been vastly improved and is much more complete and standard-compliant than it was before. It still isn't @@ -14,6 +66,8 @@ much more complete and standard-compliant than it was before. It still isn't no guarantee that this will work with GCC's `--enable-threads=posix`, as that configuration is not tested/supported any longer in dc-chain. +# Floating-point ABI + A significant change has been made regarding the default floating-point ABI used by KallistiOS. In previous KOS releases, and even in commercial games released during the Dreamcast's lifetime, the `m4-single-only` floating-point ABI was diff --git a/include/kos/version.h b/include/kos/version.h index 9b7e3baf..572692b2 100644 --- a/include/kos/version.h +++ b/include/kos/version.h @@ -41,7 +41,7 @@ ## Version Types The versioning information is split into two different groups: - + |Version Type|Description |------------|----------- |\ref version_comptime|The version of KOS your code is being compiled against. @@ -78,7 +78,7 @@ @{ */ -/** \defgroup version_comptime Compile-Time +/** \defgroup version_comptime Compile-Time \brief API providing compile-time KOS version and utilties. This API is is specifically for the compile-time versioning. As such, @@ -92,13 +92,13 @@ \brief Current compile-time version of KOS These macros provide information about the current version of KOS at - compile-time. + compile-time. @{ */ #define KOS_VERSION_MAJOR 2 /**< KOS's current major revision number. */ -#define KOS_VERSION_MINOR 1 /**< KOS's current minor revision number. */ +#define KOS_VERSION_MINOR 2 /**< KOS's current minor revision number. */ #define KOS_VERSION_PATCH 0 /**< KOS's current patch revision number. */ /** KOS's current version as an integer ID. */ @@ -116,8 +116,8 @@ \brief Compile-time checks against KOS's current version. This API provides several utility macros to check for a particular - exact, min, or max compile-time version for KOS. - + exact, min, or max compile-time version for KOS. + They are meant to be used with the preprocessor like so: \code{.c} @@ -150,7 +150,7 @@ KOS_VERSION_MAKE_ABOVE(major, minor, patch, KOS_VERSION) /** Compile-time check for a minimum KOS version. - + Checks to see whether the current KOS version is the same or higher than the given version. @@ -238,7 +238,7 @@ \brief Utilities for encoding a version from its components. @{ */ -/** Creates a version identifier from its constituents. +/** Creates a version identifier from its constituents. Used to create a version identifier at compile-time from its components. @@ -251,7 +251,7 @@ #define KOS_VERSION_MAKE(major, minor, patch) \ (((major) << 16) | ((minor) << 8) | (patch)) -/** Creates a version string from its constituents. +/** Creates a version string from its constituents. Used to create a compile-time string literal from version components. @@ -307,7 +307,7 @@ #define KOS_VERSION_MAKE_ABOVE(major, minor, patch, version) \ (KOS_VERSION_MAKE_COMPARISON(major, minor, patch, <, version)) -/** Creates a minimum version check. +/** Creates a minimum version check. Used to create a compile-time minimum version check. @@ -325,7 +325,7 @@ #define KOS_VERSION_MAKE_MIN(major, minor, patch, version) \ (KOS_VERSION_MAKE_COMPARISON(major, minor, patch, <=, version)) -/** Creates an exact version check. +/** Creates an exact version check. Used to create a compile-time exact version check. @@ -343,7 +343,7 @@ #define KOS_VERSION_MAKE_IS(major, minor, patch, version) \ (KOS_VERSION_MAKE_COMPARISON(major, minor, patch, ==, version)) -/** Creates a maximum version check. +/** Creates a maximum version check. Used to create a compile-time maximum version check. @@ -389,7 +389,7 @@ __BEGIN_DECLS #include <stdint.h> #include <stdbool.h> -/** \defgroup version_runtime Run-Time +/** \defgroup version_runtime Run-Time \brief API providing run-time KOS version and utilties. This API is is specifically for the run-time versioning. As such this @@ -399,7 +399,7 @@ __BEGIN_DECLS @{ */ -/** Type of a KOS version identifier. +/** Type of a KOS version identifier. This identifier packs the 3 version components into a single opaque ID. @@ -447,8 +447,8 @@ const char* kos_version_string(void); \brief Run-time checks against KOS's current version. This API provides several utility functions to check for a particular - exact, min, or max run-time version for KOS. - + exact, min, or max run-time version for KOS. + They are meant to be used as conditional expressions as such: \code{.c} @@ -492,7 +492,7 @@ bool kos_version_above(uint8_t major, uint16_t minor, uint8_t patch); bool kos_version_min(uint8_t major, uint16_t minor, uint8_t patch); /** Exact version run-time check for KOS - + Checks whether the current run-time version of KOS matches the given version. @@ -501,7 +501,7 @@ bool kos_version_min(uint8_t major, uint16_t minor, uint8_t patch); \param patch Patch version component. \retval true The version matches exactly. - \retval false The version does not match. + \retval false The version does not match. */ bool kos_version_is(uint8_t major, uint16_t minor, uint8_t patch); hooks/post-receive -- A pseudo Operating System for the Dreamcast. |