ODFileSystem v0.5.0
Highlights
-
Native AmigaOS 4 support: adds a PPC/OS4 handler path with
FileSystemVectorPort, freestanding startup, Kickstart module support, and
OS4-specific DOS/vector semantics. -
Workbench and filesystem behavior fixes: improves OS4 lock handling,
file handle state, directory examine behavior, media-change handling,
shutdown, and caller-task I/O so native OS4 callers behave correctly. -
Much faster directory and parent lookups: adds cached ExNext resume
offsets, cached parent ancestors, incremental volume lock lists, and a faster
ACTION_PARENTpath using..entries where available. -
Faster file reads and cache lookups: batches contiguous backend reads and
replaces linear block-cache scans with hashed lookups. -
Release-ready packaging: adds separate OS3 and OS4 build, CI, release,
LHA, and Aminet upload paths, including separate Aminet readmes for each
target.
What's Changed
AmigaOS 4 support
- Added native AmigaOS 4 handler support with a per-target compatibility
layer, OS4 startup code,FileSystemVectorPortfrontend, and OS4-specific
build paths. - Implemented OS4 vector callbacks for locks, file handles, reads, seeks,
metadata, directory examine, inhibit/serialize operations, and read-only
mutation handling. - Added freestanding OS4 handler startup so the filesystem can receive
ACTION_STARTUPdirectly, avoiding C runtime startup consuming the initial
DOS packet. - Added Kickstart module registration support for the OS4
CDFileSystem
path. - Fixed OS4 Workbench behavior by completing native vector semantics,
preserving file handle arguments, returning nativeSameLock/SameFile
results, and bindingExamineDatato DOS-owned contexts. - Fixed OS4 caller-task reads by using caller-owned and cached I/O requests
instead of reusing the handler task request from vector callbacks. - Added OS4 media-change, shutdown, DOS list allocation, lock allocation,
and vector callback serialization fixes.
Performance
- Batched contiguous file reads across ISO9660, Joliet, UDF, HFS, and HFS+
through a shared cache helper. - Reworked block-cache lookups from linear scans to hash-table lookups.
- Added pooled allocation for duplicate-name fixing during directory scans.
- Cached OS3
ExNextresume offsets to avoid rescanning large directories. - Cached parent ancestors on shared objects to speed repeated parent lookups.
- Updated volume lock lists incrementally instead of rebuilding from all locks.
- Sped up
ACTION_PARENTby using..directory entries where available,
improving AmigaOS 3.2 CD boot behavior.
Build, CI, and Release
- Documented separate AmigaOS 3 and AmigaOS 4 build flows.
- Added PPC AmigaOS 4 CI builds using the
amigappc-gcccontainer. - Split release builds into OS3 and OS4 artifact builders.
- Added OS4 release artifacts alongside the existing OS3 outputs.
- Added OS3 and OS4 LHA package targets and separate Aminet readmes.
- Added a release-published Aminet workflow that uploads both OS3 and OS4
packages fromv*releases. - Raised the ROM profile size limit to match current generated handler size.
Fixes and Cleanup
- Split Amiga OS compatibility code out of the shared packet handler.
- Removed scattered OS target conditionals from shared handler code.
- Tightened Amiga build compiler selection so
make amigachooses the intended
cross-compiler while still honoring explicit overrides. - Routed OS4 serial debug logging through
DebugPrintF(). - Accepted OS4
ACTION_SHUTDOWNin the packet loop. - Fixed the OS4 media-change interrupt callback calling convention.
- Allocated OS4 DOS list nodes and locks through DOS-supported APIs.
- Kept OS4 legacy packets on the classic dispatcher while serializing access to
shared filesystem state. - Kept media state per handler process so multi-unit diskboot paths do not
overwrite each other. - Probed OS4 CD units before mounting to avoid publishing dead phantom units.
- Shared node metadata formatting across packet and vector frontends.
- Removed unused OS4 vector packet API surface and trivial compat wrappers.
New Contributors
Full Changelog: v0.4...v0.5.0