Next Perpendicular Moonlanding
    Have ideas to improve npm?Join in the discussion! »

    @calcit/procs

    0.2.108 • Public • Published

    Calcit Runner

    An interpreter runtime for Calcit snapshot file.

    Running Calcit Editor with compact=true caclcit-editor enables compact mode, which writes compact.cirru and .compact-inc.cirru instead of Clojure(Script). And this project provides a runner for compact.cirru, written on Nim for low overhead.

    A compact.cirru file can be:

    {} (:package |app)
      :configs $ {} (:init-fn |app.main/main!) (:reload-fn |app.main/reload!)
      :files $ {}
        |app.main $ {}
          :ns $ quote
            ns app.main $ :require
          :defs $ {}
            |main! $ quote
              defn main! () (+ 1 2)
            |reload! $ quote
              defn reload! ()
          :proc $ quote ()

    APIs implemented in Calcit Runner is mostly learning from Clojure.

    Usage

    Install dependency:

    brew install fswatch sdl2 cairo
    nimble test --threads:on -y

    Build binaries:

    nimble build --threads:on

    There are currently 2 commands cr and cr_once:

    cr compact.cirru # watch by default
    
    cr compact.cirru --once # run only once
    
    cr compact.cirru --init-fn='app.main/main!' # specifying init-fn
    
    cr -e="range 100" # eval from CLI
    
    cr --emit-js # compile to js
    cr --emit-js --mjs # compile to mjs
    cr --emit-js --emit-path=out/ # compile to js and save in `out/`
    
    cr --emit-ir # compile to intermediate representation
    
    cr_once # bundled without wathcer and SDL2, for CI only

    For linux users, download pre-built binaries from http://bin.calcit-lang.org/linux/ .

    Development

    Dependent modules, besides SDL2 and Cairo:

    Alias in dev mode:

    # rerun program on changes
    nimble watch
    
    # just run once
    nimble once
    
    # demo of eval from CLI
    nimble e
    
    # for emitting js
    nimble genjs
    
    # for emitting ir
    nimble genir

    Modules

    :configs $ {}
      :modules $ [] |phlox/compact.cirru

    Calcit Runner use ~/.config/calcit/modules/ as modules directory. Paths defined in :modules field are just loaded as files based on this directory, which is: ~/.config/calcit/modules/phlox.caclit.nim/compact.cirru.

    To load modules in CI environment, create that folder and clone repos manually.

    License

    MIT

    Keywords

    none

    Install

    npm i @calcit/procs

    DownloadsWeekly Downloads

    299

    Version

    0.2.108

    License

    none

    Unpacked Size

    136 kB

    Total Files

    13

    Last publish

    Collaborators

    • avatar