summaryrefslogtreecommitdiffhomepage
path: root/gleam
diff options
context:
space:
mode:
authorRalph Amissah <ralph.amissah@gmail.com>2026-10-13 16:54:02 -0400
committerRalph Amissah <ralph.amissah@gmail.com>2026-10-13 16:54:02 -0400
commit3f34ec6afde21801eff0b655949a6d219e47943c (patch)
tree6e95a210663bcc7f41d0791de1769a2535988180 /gleam
parentformat 2.1: the pipeline reads with ocda-read (diff)
release 2.1.0: versions, the library locked, the pipelineHEADmain
The writer's version follows the format's: 2.1.0 in dub.json, gleam.toml and both flakes (it was 2.0.0), and manifest.toml locks the library at 2.1.0 to match. A release is numbered major.minor.patch, major.minor being the format and shared with the specification and the library, the patch the writer's own. flake.lock, in dlang/ and gleam/, pins the library at its 2.1.0 release and nixpkgs as that release locks it, so the writer builds with what the library was built and checked with. The READMEs say plain nix build, and how to build against a working copy of the library instead. The pipeline no longer builds or runs sisudoc-ssp-reader and sisudoc-ocda-db-reader, which are frozen: ocda-read, the library's reader, covers both, and read.sh already ran it from both forms and in both languages. Gone from build.sh, config.sh, one.sh and read.sh, and from pipeline/README.md, which with config.sh now names spine's --show-abstraction as the README does. build.sh still gives the writer the library beside it, so that the library run and the library built in are the same one. README, to what was decided for these writers: the outputs must be identical from every form and the D and Gleam writers must agree byte for byte, but they are not held to spine's bytes; each format has its own judge, and a difference from spine is there to read better. The introduction said "identical to each other and to spine's", and the example compared --text with spine's text file, which fails by design; the example now compares the .ssp and the .ocda.db. The documents the checks run over are the markup document samples, named with their repository and the spine flags that build the artefacts, and the counts read "all" or "every document" rather than a number, here and in dlang/, gleam/ and pipeline/README.md. The format is 2.1, and the license is stated. Checked: D and Gleam build from the lock; over the markup document samples, D == Gleam in text, markdown, html, epub and typst for every document-language, and the .ssp and the .ocda.db give the same output. (assisted by Claude-Code)
Diffstat (limited to 'gleam')
-rw-r--r--gleam/README.md19
-rw-r--r--gleam/flake.lock16
-rw-r--r--gleam/flake.nix2
-rw-r--r--gleam/gleam.toml2
-rw-r--r--gleam/manifest.toml2
5 files changed, 21 insertions, 20 deletions
diff --git a/gleam/README.md b/gleam/README.md
index 8a2bea9..046dc0f 100644
--- a/gleam/README.md
+++ b/gleam/README.md
@@ -27,7 +27,7 @@ model to bytes.
## Build and run
```sh
-nix build --override-input ocda-lib path:../../sisudoc-ocda-lib
+nix build
./result/bin/ocda-write --text <doc>.ssp
./result/bin/ocda-write --text <doc>.ocda.db de
./result/bin/ocda-write --md <doc>.ssp
@@ -35,10 +35,11 @@ nix build --override-input ocda-lib path:../../sisudoc-ocda-lib
./result/bin/ocda-write --typst <doc>.ocda.db en --out out/<doc>.typ
```
-The override applies to `nix develop` too, until the library is published:
+`flake.lock` pins the library at the commit this was checked against. In a
+development shell `gleam` reads it through the `./ocda-lib` symlink (below):
```sh
-nix develop --override-input ocda-lib path:../../sisudoc-ocda-lib -c gleam build
+nix develop -c gleam build
```
## The check
@@ -47,16 +48,16 @@ nix develop --override-input ocda-lib path:../../sisudoc-ocda-lib -c gleam build
./result/bin/ocda-write --text <doc>.ssp | cmp - <the D writer's>
```
-**36 of 36 document-languages, from both serialisations, byte identical to the
+**Every document-language, from both serialisations, byte identical to the
D writer** - which is the check that matters now, since byte identity with
`spine --text` is no longer the target.
And for `--md`, `--html`, `--epub` and `--typst`, **byte identical to the D
-writer on all 36**, which is the agreement that says the model is enough. None
-of them is held to spine's bytes: the epub's judge is epubcheck, which read the
-specification so that the writer need not be trusted to have, and the pdf's is
-typst, where a link to a label that does not exist is a compile error. See the
-repository README for what they do differently and why.
+writer on every document**, which is the agreement that says the model is
+enough. None of them is held to spine's bytes: the epub's judge is epubcheck,
+which read the specification so that the writer need not be trusted to have,
+and the pdf's is typst, where a link to a label that does not exist is a
+compile error. See the repository README for what they do differently and why.
## The library, as a path dependency inside the package
diff --git a/gleam/flake.lock b/gleam/flake.lock
index 13a94c9..a83226a 100644
--- a/gleam/flake.lock
+++ b/gleam/flake.lock
@@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
- "lastModified": 1790652569,
- "narHash": "sha256-k8Fu4c9Z+4Nh7mUr0cfw++ITQiyEhlWxoJBOkI3tOcQ=",
- "rev": "b6c8664de9b6cc07fe5666a29f91884ba81197c4",
+ "lastModified": 1792506237,
+ "narHash": "sha256-hVMDyAXU0kxRuG3GygbZkzf5x+aBNEC0NYEJ6KwHtD4=",
+ "rev": "5adc50831c259f87faeb09ddf930d43597197473",
"type": "tarball",
- "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1082290.b6c8664de9b6/nixexprs.tar.zst"
+ "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1097770.5adc50831c25/nixexprs.tar.zst"
},
"original": {
"type": "tarball",
@@ -16,11 +16,11 @@
"ocda-lib": {
"flake": false,
"locked": {
- "lastModified": 1791851051,
- "narHash": "sha256-mVI3uGQ1z7S5OMMFjl5UoWShE3p0ucXlr6cVU1iAsgI=",
+ "lastModified": 1791924842,
+ "narHash": "sha256-C79k2X32NxKPqrE7nJVegYThtA6Dm2pg/B/yb9RiObE=",
"ref": "refs/heads/main",
- "rev": "4e4f2f8c2b2c043077390cb4ccf7ce97ffe4ac6b",
- "revCount": 3,
+ "rev": "79a7a0cf09c9d6b5d9974376dcb7a98bd5bdbcba",
+ "revCount": 4,
"type": "git",
"url": "git://git.sisudoc.org/tools/sisudoc-ocda-lib"
},
diff --git a/gleam/flake.nix b/gleam/flake.nix
index c70f739..8f2d13c 100644
--- a/gleam/flake.nix
+++ b/gleam/flake.nix
@@ -57,7 +57,7 @@
*/
${name} = buildGleamApplication {
pname = "ocda-write";
- version = "2.0.0";
+ version = "2.1.0";
src = ./.;
localPackages = [ "${ocda-lib}/gleam" ];
rebar3Package = rebar3-pc;
diff --git a/gleam/gleam.toml b/gleam/gleam.toml
index 93880ca..bdbbac0 100644
--- a/gleam/gleam.toml
+++ b/gleam/gleam.toml
@@ -1,5 +1,5 @@
name = "ocda_write"
-version = "2.0.0"
+version = "2.1.0"
description = "sample writers over the object-centric document abstraction"
licences = ["AGPL-3.0-or-later"]
diff --git a/gleam/manifest.toml b/gleam/manifest.toml
index 8f22b12..5ad4848 100644
--- a/gleam/manifest.toml
+++ b/gleam/manifest.toml
@@ -14,7 +14,7 @@ packages = [
{ name = "gleam_regexp", version = "1.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_regexp", source = "hex", outer_checksum = "9C215C6CA84A5B35BB934A9B61A9A306EC743153BE2B0425A0D032E477B062A9" },
{ name = "gleam_stdlib", version = "1.0.5", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "CEE5B6C076A85B45F60C585F4316C63EC8B7127C119D5738C3958A9C4D50404E" },
{ name = "gleeunit", version = "1.11.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "EC31ABA74256AEA531EDF8169931D775BBB384FED0A8A1BDC4DD9354E3E21826" },
- { name = "ocda_lib", version = "2.0.0", build_tools = ["gleam"], requirements = ["argv", "gleam_json", "gleam_stdlib", "simplifile", "sqlight"], source = "local", path = "./ocda-lib" },
+ { name = "ocda_lib", version = "2.1.0", build_tools = ["gleam"], requirements = ["argv", "gleam_json", "gleam_stdlib", "simplifile", "sqlight"], source = "local", path = "./ocda-lib" },
{ name = "simplifile", version = "2.7.0", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "A2727627B063E87351934C7F7F008F2D1FDB16F6DE0B8C79F9E46459CFC9C164" },
{ name = "sqlight", version = "1.2.0", build_tools = ["gleam"], requirements = ["esqlite", "gleam_stdlib"], otp_app = "sqlight", source = "hex", outer_checksum = "841768D0A81107EE2DB46B949354F284A68B2E8098315C28A1FE3C07D206C17A" },
]