Skip to content

ODFileSystem v0.5.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 05:18

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_PARENT path 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, FileSystemVectorPort frontend, 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_STARTUP directly, 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 native SameLock/SameFile
    results, and binding ExamineData to 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 ExNext resume 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_PARENT by 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-gcc container.
  • 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 from v* 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 amiga chooses the intended
    cross-compiler while still honoring explicit overrides.
  • Routed OS4 serial debug logging through DebugPrintF().
  • Accepted OS4 ACTION_SHUTDOWN in 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

  • @LIV2 made their first contribution in #6

Full Changelog: v0.4...v0.5.0