Skip to content

Releases: defense-humanites/libmorpheus

libmorpheus Deno binding 0.4.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 15:49

Compatible native runtime: 0.3.2 (ABI 2).

libmorpheus 0.3.2

Choose a tag to compare

@github-actions github-actions released this 29 Aug 08:00

Version 0.3.2 is a patch release correcting the Deno/JSR native installer. The diff from v0.3.1 does not change src/, include/morpheus/morpheus.h, or cmake/PublicApi.cmake; it removes no public function, changes no signature or record layout, and reassigns no constant. C ABI 2 and SONAME 1 remain correct.

The current project still coordinates one version across native archives, the standalone Deno archive, benchmark evidence, and JSR. All assets are therefore rebuilt as 0.3.2.

Failure and correction

The published 0.3.1 /native and /setup commands verified the native archive correctly, but attempted to recreate its unversioned and SONAME aliases with Deno.symlink(). Deno requires unscoped read and write permissions for that operation, so the documented path-scoped command failed before installing the archive.

The 0.3.2 extractor validates the same archive paths and link targets, resolves link chains entirely within the verified in-memory archive, rejects missing, non-regular, escaping, cyclic, and duplicate entries, and materializes each shared-library alias as a regular copy. The unversioned, SONAME, and fully versioned paths therefore remain loadable without granting filesystem-wide permissions.

CI reproduces the real two-link Linux archive structure and runs that test with only path-scoped --allow-read and --allow-write. Existing traversal, redirect, checksum, cleanup, duplicate, and output-isolation tests remain in force.

libmorpheus 0.3.1

Choose a tag to compare

@github-actions github-actions released this 28 Aug 18:41

Version 0.3.1 is a patch release for the Deno/JSR distribution and its release qualification. The diff from v0.3.0 does not change src/, include/morpheus/morpheus.h, or cmake/PublicApi.cmake; it therefore removes no public function, changes no signature or record layout, and reassigns no constant. C ABI 2 and SONAME 1 remain correct.

The native archives are nevertheless rebuilt and republished under 0.3.1 so the current single project version continues to identify the native library, standalone Deno archive, JSR package, and benchmark evidence consistently.

Highlights

  • Correct the bundled Emscripten preparer so /data --with-gener works when the module is loaded from its published HTTPS JSR URL.
  • Permit the fresh-package smoke test to install an exact newly published version despite Deno's default minimum dependency age.
  • Add /setup, a permission-scoped command that acquires the matching verified native archive and selected stem dataset in one transaction-like operation.
  • Retain /native and /data for separate acquisition, including Alpheios generation-index preparation and Perseids Greek/Latin analysis data.
  • Qualify the published package from an empty Deno application against public JSR, GitHub Release, and upstream dataset endpoints.
  • Improve package discovery and JSR scoring through entrypoint and exported symbol documentation, and correct the README notice link.
  • Retain the narrow v0.3.0 JSR recovery workflow as historical release machinery; normal 0.3.1 publication remains part of the tag workflow.

libmorpheus 0.3.0

Choose a tag to compare

@github-actions github-actions released this 28 Aug 14:08

Version 0.3.0 is a compatible feature release. It adds Greek lemma generation, a generation-options structure, an owned generation-result type, generation accessors, and a result-limit status. It does not remove a public function, change a published signature, reassign an existing constant, or change the layout of morpheus_analysis. ABI 2 and SONAME 1 therefore remain correct.

The new C generation surface and Deno generate()/generateRaw() methods are experimental. That maturity label does not weaken the ownership, symbol, or binary-compatibility contracts of the additive ABI 2 declarations.

Highlights

  • Build a deterministic, validated, duplicate-preserving reverse generation index from the pinned Greek stem sources.
  • Expand derivations and continuations offline without reviving the historical gener and do_conj request paths.
  • Generate through a context-local internal service that invokes only GenStemForms() and GenIrregForm().
  • Normalize generated interpretations at the MPL/AGPL bridge, preserving dialects, duals, duplicates, stable ordering, and explicit result limits.
  • Publish the additive C API and nonblocking typed Deno binding.
  • Qualify cold and warm generation, small and maximal paradigms, concurrency, and memory behavior through benchmark schema 2.
  • Improve the standalone Deno and repository documentation, including Docker, stemlib provenance, FFI permissions, and the experimental maturity notice.

Compatibility

  • Project version: 0.3.0
  • C ABI: 2
  • SONAME major: 1
  • Previous release tag: v0.2.0 at 5c071548a7ceea05340dffc60591567cff7ca6c5

Licensing boundary

The inherited generator, source-format translation, generation service, normalizer, derivation expansion, and historical compatibility expressions remain MPL-2.0. The independently written public API orchestration, Deno binding, tests, build and release support, and documentation remain AGPL-3.0-or-later. Generated index data follows the licensing and redistribution terms of its stemlib inputs.

Distribution contract

The candidate continues to produce data-free native archives and SHA-256 files for Linux x86-64 glibc, Linux aarch64 glibc, and macOS arm64, plus the platform-independent libmorpheus-deno-0.3.0.tar.gz source archive. Native binaries and stem data are not embedded in the Deno archive.

The Deno source package is configured for JSR under the reserved name @humanities/libmorpheus at candidate version 0.3.0. Its metadata, exact source-only contents, import command, and strict registry dry-run are covered by the ordinary Linux CI. It includes the public /data and /native commands and their internal support, but no downloaded binary or linguistic data. The JSR package retains the AGPL notice and the documented MPL boundary to the separately distributed native runtime. The /native command verifies and extracts the matching release asset without a C toolchain.

Container builds remain qualification artifacts. They embed the pinned Alpheios stemlib and its validated derived gener.index so Docker qualification covers real experimental generation. Such an image must not be published until the dataset and derived-index redistribution terms have been confirmed.

Benchmark evidence

The accepted schema 2 report was produced on Apple Silicon from 66e656d27aedce04cc7b96fe84aff3aca8a35afd with Deno 2.9.5, Apple Clang 21, the pinned Alpheios revision, and the canonical generation-index digest. Its
SHA-256 is 82875bed7e33312a1315819dc8c73fb53aa79a05c8aef0407b5768c2baf2a290. The release validator accepts every required measurement and identity.

The commits between that measured revision and this finalization change only JSR data/native acquisition, the opt-in Emscripten preparer build, Docker and release orchestration, licensing, and documentation. They do not change src/, include/, bindings/deno/mod.ts, bench/compare.ts, or test/fixture.json; the measured analysis and generation paths are therefore unchanged. The report is retained as preparation evidence rather than described as tag-exact evidence.

Compared with 0.2.0, analysis throughput changes by approximately -1.2%, -1.5% and +0.6% for one, two and four FFI contexts. Persistent cruncher throughput changes by +0.6% and cold startup throughput by -2.2%. Peak FFI RSS increases by approximately 6.6% to 7.5%, while measured RSS growth decreases. These small changes are accepted. Schema 2 establishes the initial generation baseline: warm lo/gos generation scales from about 8,006 to 22,965 operations/second, while the maximal i(/hmi workload scales from about 132 to 175 operations/second across one to four contexts.

libmorpheus 0.2.0

Choose a tag to compare

@antoineboquet antoineboquet released this 25 Aug 14:33

Version 0.2.0 introduces the second version of the public C ABI and establishes a clear separation between normalized public representations and the inherited Morpheus engine.

Highlights

  • Independently assigned public morphology values replace historical internal encodings.
  • morpheus_analysis no longer exposes opaque stem or derivation identifiers.
  • Morphology traits now use a complete, zero-based 84-trait public bitset.
  • Historical formatter functions are available through <morpheus/compat.h>.
  • Translation between public and historical values is isolated in an MPL-covered bridge.
  • The normalized C API, Deno binding, and independently written project-support files are licensed under AGPL-3.0-or-later.
  • The inherited engine, compatibility implementation, translation bridge, derived internal headers, and fixtures remain under MPL-2.0.

Compatibility

This release changes the public ABI:

  • C ABI: 2
  • shared-library SONAME: 1

Native consumers must rebuild against the 0.2.0 headers.

Programs using the historical formatter must include <morpheus/compat.h>. Deno consumers must use the 0.2.0 binding together with the 0.2.0 native library.

The obsolete morpheus_result_all_morph_flags() function has been removed because each structured analysis now contains the complete public trait bitset.

Performance

The release-candidate benchmark shows stable performance relative to the previous accepted baseline.

Release assets

The release provides checksummed, data-free native archives for:

  • Linux x86-64 glibc;
  • Linux aarch64 glibc;
  • macOS arm64.

It also provides the platform-independent Deno binding source archive and the validated benchmark report.

Stem data is not included in the release archives. Container images embedding the Alpheios stemlib are not published.

libmorpheus 0.1.3

Choose a tag to compare

@antoineboquet antoineboquet released this 24 Aug 18:34

0.1.3 is a compatible maintenance release focused on Deno binding distribution, licensing, and build infrastructure. The native C ABI remains version 1, and the shared-library SONAME remains 0.

Licensing

  • The original Deno binding is now explicitly licensed under AGPL-3.0-or-later.
  • The native C implementation remains licensed under MPL-2.0.
  • The standalone Deno archive includes its AGPL license and a notice documenting the boundary between the binding, native library, and separately supplied stemlib.

Changed

  • The historical fixture suites now run directly through CMake and no longer require Ruby.
  • Linux CI now builds and validates the standalone Deno binding archive.
  • Obsolete inherited repository metadata and Ruby configuration have been removed.
  • Documentation now describes libmorpheus independently of any particular downstream application.

Fixed

  • The CMake fixture runner handles optional JSON members without depending on version-specific diagnostic messages.
  • License references and notices in the standalone Deno archive remain valid after extraction.

Distributed assets

This release provides data-free native archives for:

  • Linux x86-64 (glibc)
  • Linux aarch64 (glibc)
  • macOS arm64

It also provides the platform-independent libmorpheus-deno-0.1.3.tar.gz source archive.

Each archive is accompanied by a SHA-256 integrity file. The Alpheios stemlib is not included and remains a separate runtime dependency.

Validation

The release was qualified with the native test suites, sanitizer configurations, installed CMake and pkg-config consumers, Deno FFI tests, standalone-package checks, and the supported Linux and macOS platform checks.

The accompanying macOS arm64 benchmark report shows no significant performance or memory regression relative to 0.1.2.

libmorpheus 0.1.2

Choose a tag to compare

@antoineboquet antoineboquet released this 24 Aug 17:08

0.1.2 is a compatible patch release that corrects the Deno FFI binding. The native C ABI remains version 1 and the shared-library SONAME remains 0.

Fixed

  • hasMorpheusMorphFlag() now accepts both an individual analysis and the arrays returned by analyze() and analyzeRaw().

Distributed assets

This release provides data-free native archives for:

  • Linux x86-64 (glibc)
  • Linux aarch64 (glibc)
  • macOS arm64

It also provides a platform-independent Deno binding archive. Extract it alongside the matching native archive, then import mod.ts and provide the explicit shared-library path to MorpheusLibrary.

Each archive is accompanied by a SHA-256 integrity file. The Alpheios stemlib is not included and remains a separate runtime dependency.

Validation

The release was qualified with the native test suites, installed CMake and pkg-config consumers, Deno FFI tests, and the supported Linux and macOS platform checks. The accompanying benchmark report, produced on macOS arm64, shows no performance regression relative to 0.1.1.

libmorpheus 0.1.1

Choose a tag to compare

@antoineboquet antoineboquet released this 24 Aug 14:28
563bd5c

This release improves native packaging and multi-platform release qualification. The analyzer runtime and public API are unchanged from 0.1.0.

Native packages

Verified data-free native packages are provided for:

  • Linux x86-64 with glibc
  • Linux aarch64 with glibc
  • macOS arm64, deployment target macOS 11.0 or newer

Each package contains:

  • the shared libmorpheus library;
  • the public C header;
  • CMake package metadata;
  • relocatable pkg-config metadata;
  • the cruncher compatibility executable.

Stemlib data is not included and must be supplied separately.

Qualification improvements

  • Native archives are extracted and tested with independent CMake and pkg-config consumers.
  • Linux packages are checked for their ELF architecture and runtime dependencies.
  • The macOS package is checked for its arm64 architecture, install name, relocatability, and deployment target.
  • Expensive platform CI is separated from ordinary pull-request validation.
  • Inactive weekly platform runs are skipped after a successful unchanged revision.

Compatibility

  • C ABI: 1
  • Shared-library SONAME: 0
  • Alpheios stemlib qualification revision: 4632415fe93c85e9fdca47a0c5a13f31385f0023
  • Release source: 563bd5c21ee8d3ac7d7d21587254e90f66b4ad04

No runtime source, public symbol, ABI constant, or stemlib revision changed between 0.1.0 and 0.1.1.

Benchmark

Warning

The benchmark was updated following the release of the missing benchmark from version 0.1.0.

The benchmark was conducted following the initial publication.

The final benchmark reproduces all 740 expected analyses. FFI throughput remains at a level similar to the original 0.1.0 reference for the tested one-, two-, and four-context configurations.

Benchmark SHA-256: a9592fd5124f6af9dbee0eafe6562357801861889ffa45730389f14ad2c9c18e

The supplied SHA-256 files provide integrity verification; they are not cryptographic release signatures.

libmorpheus 0.1.0

Choose a tag to compare

@antoineboquet antoineboquet released this 24 Aug 13:46

First published release of libmorpheus, a C17 modernization of the Morpheus morphological analyzer for Ancient Greek and Latin.

Highlights

  • Versioned opaque C ABI with structured, caller-owned analysis results.
  • Explicit error statuses, per-request options, and truncation reporting.
  • Typed Deno 2 FFI binding with semantic analyze() results and low-level analyzeRaw() access.
  • cruncher retained as a compatibility client of the public library.
  • Runtime state isolated in explicit contexts, allowing distinct contexts to run concurrently.
  • Transactional bounded string handling throughout the supported runtime.
  • Relocatable CMake and pkg-config installation metadata.
  • Strict ISO C17 compilation with signed- and unsigned-char qualification.

Distribution

This release includes a verified native package for Linux x86-64:

  • libmorpheus-0.1.0-Linux-x86_64.tar.gz
  • libmorpheus-0.1.0-Linux-x86_64.tar.gz.sha256

The package contains the shared library, public C header, CMake package metadata, libmorpheus.pc, and the optional cruncher executable.

Stemlib data is not bundled. Consumers must provide a compatible compiled stemlib separately.

Compatibility

  • Project version: 0.1.0
  • C ABI version: 1
  • Shared-library SONAME: 0
  • CMake: 3.25 or newer
  • Deno binding: Deno 2

Linux glibc x86-64, Alpine Linux x86-64/aarch64, and Apple Silicon arm64 are covered by the release qualification matrix. Only the Linux glibc x86-64 native package is distributed as a release asset.

Benchmark

Warning

The benchmark was conducted following the initial publication.

The final benchmark reproduces all 740 expected analyses.

Benchmark SHA-256: 128e085fdfdc6d29ccd351346cb5f1ba305725b37269645017c5fb79f5cc7bab

The supplied SHA-256 files provide integrity verification; they are not cryptographic release signatures.

Data and provenance

The modernized C implementation derives from Perseids commit ab6898ffed335fc6169fa02c9940657a9b5a78e0.

The initially qualified Alpheios Greek stemlib is pinned at 4632415fe93c85e9fdca47a0c5a13f31385f0023. Stemlib updates are data releases and are versioned independently from the native library.

See the [changelog](https://github.com/antoineboquet/libmorpheus/blob/v0.1.0/CHANGELOG.md) for the complete release notes and compatibility details.