This monorepo offers a variety of applications and libraries written in Clojure for working with the Convex Virual Machine and Convex Lisp.
Overview of main folders in the ./project directory:
Project | deps.edn alias | Purpose |
---|---|---|
app/fuzz | :project/app.fuzz | CLI multicore fuzzy tester, generates and tests random Convex Lisp forms |
break | :project/break | Advanced generative test suite for the CVM ; prime example of testing Convex Lisp thoroughly |
clojurify | :project/clojurify | Convex <-> Clojure data conversions, quick evaluation, useful test.check generators for testing |
cvm | :project/cvm | Handling Convex data and the CVM, low-level utilities |
run | :project/run | Convex Lisp Runner and REPL, advanced terminal environment |
Each project follows a predictable structure:
./src
directory of each project or subprojectclj
, cvx
) and then by purpose (eg. main
, test
)The following conventions are enforced in READMEs and source files:
convex
into $
: convex.cvx
-> $.cvm
+
at the end: items
-> item+
This repository rely on the Clojure command line tools. Familiarity with Clojure Deps is required.
Alias names follow the convention established in Maestro. For instance, see project aliases in table above.
All scripting is done using Babashka, a fast Clojure interpreter that comes with a powerful task runner. Follow this simple installation process.
All tasks are written in ./bb.edn and can by listed by running in your shell:
bb tasks
Printed list shows all current tasks available for managing this repository: starting dev mode, running some tests, compiling, etc.
A task typically requires one or several aliases from deps.edn
and sometimes CLI arguments.
For instance:
# Starts project 'CVM' in dev mode which is an alias in `deps.edn` + personal `:nrepl` alias
$ bb dev :project/cvm:nrepl
# Testings all namespaces for project 'break' and dependencies
$ bb test :project/break
Following directory structure, each project typically has a dev_templ.clj
file in its Clojure dev files which requires useful namespaces.
This file can be copied in the same directory to dev.clj
for hacking and trying thing out. Those dev.clj
files are effectively private and will
not appear in this repository.
For example, see :project/all
dev directory.
Copyright © 2021 Adam Helinski, the Convex Foundation, and contributors
Licensed under the Apache License, Version 2.0
Can you improve this documentation? These fine people already did:
Adam Helinski & Adam HelinsEdit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close