https://github.com/yaml/snakeyaml-engine-glj
https://github.com/yaml/snakeyaml-engine-glj
Last synced: about 17 hours ago
JSON representation
- Host: GitHub
- URL: https://github.com/yaml/snakeyaml-engine-glj
- Owner: yaml
- License: apache-2.0
- Created: 2026-07-30T02:09:04.000Z (8 days ago)
- Default Branch: main
- Last Pushed: 2026-07-30T02:10:03.000Z (8 days ago)
- Last Synced: 2026-08-06T10:43:52.333Z (1 day ago)
- Language: Clojure
- Size: 42 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: ReadMe.md
- License: License
Awesome Lists containing this project
README
# snakeyaml-engine-clj
A fast, parser-only Clojure port of
[SnakeYAML Engine](https://bitbucket.org/snakeyaml/snakeyaml-engine).
It is designed to run on JVM Clojure, Glojure, and native binaries compiled
by Gloat.
The public entry point is `snakeyaml-engine.core/parse-string`. It returns an
eager vector of event maps. `snakeyaml-engine.yamlscript/parse` exposes the
event contract consumed by YAMLScript.
The parser follows SnakeYAML Engine's YAML 1.2 productions. `%YAML 1.0` and
`%YAML 1.1` directives are accepted for compatibility but do not select a
different grammar or scalar schema.
Only string parsing is included. Loading, resolving, constructing, composing,
representing, serializing, emitting, and Java `Reader`/`InputStream` APIs are
outside this artifact.
## Development
```sh
make test
make test-glj
make check-all
make bench
make bench-native
make bench-yamlscript-native
```
`project.clj` is the dependency-metadata source. `deps.edn` is generated with
`lein2deps` for Clojure CLI and Glojure consumers.
`bench-yamlscript-native` builds the same pinned YAMLScript revision twice
with GraalVM: once with Java SnakeYAML Engine and once with this Clojure port.
It then records warmup and measured end-to-end CLI samples in
`.cache/yamlscript-native/results.tsv`. This is the optimization baseline;
the smaller Glojure and Gloat parser benchmarks are diagnostic tools.
## Release
Clojars releases are made from a clean, fully pushed `main` branch. Configure
Git identity and an `origin` remote first. Set `CLOJARS_USERNAME` to the
Clojars account name and `CLOJARS_PASSWORD` to a Clojars deploy token:
```sh
export CLOJARS_USERNAME=ingy
export CLOJARS_PASSWORD='CLOJARS_DEPLOY_TOKEN'
make release VERSION=0.1.1
```
The release command bumps `project.clj`, commits `Release 0.1.1`, validates
the JAR metadata, runs `make check-all`, creates annotated tag `v0.1.1`,
deploys to Clojars, and atomically pushes `main` and the tag to GitHub.
The phase targets make failures recoverable:
- A transient validation or test failure can be resumed with
`make release-validate VERSION=0.1.1`, followed in order by
`release-test`, `release-tag`, `release-deploy`, and `release-push`.
A source failure should be fixed on `main` before restarting the release;
do not fold unrelated source changes into the version-only release commit.
- After a definite pre-publication deployment failure, run
`make release-deploy VERSION=0.1.1` and then
`make release-push VERSION=0.1.1`.
- After a successful deployment but failed GitHub push, rerun only
`make release-push VERSION=0.1.1`.
- For an ambiguous deployment failure, inspect Clojars before retrying.
Published release versions cannot be overwritten. If it was published,
run `make release-mark-deployed VERSION=0.1.1 DEPLOYED=1` and then
`make release-push VERSION=0.1.1`.