Liking cljdoc? Tell your friends :D

Advanced tooling for Convex Lisp and the CVM

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:

ProjectPurpose
:project/app.fuzzCLI multicore fuzzy tester, generates and tests random Convex Lisp forms
:project/breakAdvanced generative test suite for the CVM ; novel smart contract testing
:project/clojurifyConvex <-> Clojure data conversions, quick evaluation, useful test.check generators
:project/cvmHandling Convex data and the CVM, low-level utilities
:project/runConvex Lisp Runner and REPL, advanced terminal environment

Releases

Released applications and libraries:

ProjectLibraryCljdocDownload
:project/cvmClojarscljdoc/
:project/clojurifyClojarscljdoc/
:project/runClojarscljdocCVX runner

Structure

Each project follows a predictable structure:

  • Project details are exposed in a dedicated README
  • All source is located under the ./src directory of each project or subproject
  • Source is subdivided by language (eg. clj, cvx) and then by purpose (eg. main, test)
  • All scripts and tasks are located and executed at the root of this repository

Conventions

The following conventions are enforced in READMEs and source files:

  • Namespaces shorten convex into $: convex.cvx -> $.cvm
  • Symbols referring to collections are pluralized with + at the end: items -> item+

Setup

Following sections are only useful for managing this repository or experimenting with a clone/fork.

Clojure Deps

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.

Babashka and tasks

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

Dev

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.

License

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 Helins
Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close