Docs
This commit is contained in:
parent
303ca9e825
commit
93a0d2b101
3 changed files with 62 additions and 51 deletions
51
README.md
51
README.md
|
|
@ -635,56 +635,7 @@ break> x
|
||||||
- [Clojure in the Shell](https://lambdaisland.com/blog/2019-12-05-advent-of-parens-5-clojure-in-the-shell) by Arne Brasseur
|
- [Clojure in the Shell](https://lambdaisland.com/blog/2019-12-05-advent-of-parens-5-clojure-in-the-shell) by Arne Brasseur
|
||||||
- [Clojure Tool](https://purelyfunctional.tv/issues/purelyfunctional-tv-newsletter-351-clojure-tool-babashka/) by Eric Normand
|
- [Clojure Tool](https://purelyfunctional.tv/issues/purelyfunctional-tv-newsletter-351-clojure-tool-babashka/) by Eric Normand
|
||||||
|
|
||||||
## Developing Babashka
|
## [Developing Babashka](doc/dev.md)
|
||||||
|
|
||||||
To work on Babashka itself make sure Git submodules are checked out.
|
|
||||||
|
|
||||||
``` shellsession
|
|
||||||
$ git clone https://github.com/borkdude/babashka --recursive
|
|
||||||
```
|
|
||||||
|
|
||||||
To update later on:
|
|
||||||
|
|
||||||
``` shellsession
|
|
||||||
$ git submodule update --recursive
|
|
||||||
```
|
|
||||||
|
|
||||||
You need [Leiningen](https://leiningen.org/), and for building binaries you need GraalVM.
|
|
||||||
|
|
||||||
### REPL
|
|
||||||
|
|
||||||
`lein repl` will get you a standard REPL/nREPL connection. To work on tests use `lein with-profiles +test repl`.
|
|
||||||
|
|
||||||
### Adding classes
|
|
||||||
|
|
||||||
Add necessary classes to `babashka/impl/classes.clj`. For every addition, write
|
|
||||||
a unit test, so it's clear why it is added and removing it will break the
|
|
||||||
tests. Try to reduce the size of the binary by only adding the necessary parts
|
|
||||||
of a class in `:instance-check`, `:constructors`, `:methods`, `:fields` or
|
|
||||||
`:custom`.
|
|
||||||
|
|
||||||
The `reflection.json` file that is needed for GraalVM compilation is generated
|
|
||||||
with:
|
|
||||||
|
|
||||||
lein with-profiles +reflection run
|
|
||||||
|
|
||||||
### Test
|
|
||||||
|
|
||||||
Test on the JVM (for development):
|
|
||||||
|
|
||||||
script/test
|
|
||||||
|
|
||||||
Test the native version:
|
|
||||||
|
|
||||||
BABASHKA_TEST_ENV=native script/test
|
|
||||||
|
|
||||||
### Build
|
|
||||||
|
|
||||||
To build this project, set `$GRAALVM_HOME` to the GraalVM distribution directory.
|
|
||||||
|
|
||||||
Then run:
|
|
||||||
|
|
||||||
script/compile
|
|
||||||
|
|
||||||
## Related projects
|
## Related projects
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
{:cljdoc.doc/tree
|
{:cljdoc.doc/tree
|
||||||
[["Readme" {:file "README.md"}]]}
|
[["Readme" {:file "README.md"}]
|
||||||
|
["Developing Babashka" {:file "doc/dev.md"}]]}
|
||||||
|
|
|
||||||
59
doc/dev.md
Normal file
59
doc/dev.md
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
# Developing Babashka
|
||||||
|
|
||||||
|
To work on Babashka itself make sure Git submodules are checked out.
|
||||||
|
|
||||||
|
``` shellsession
|
||||||
|
$ git clone https://github.com/borkdude/babashka --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
To update later on:
|
||||||
|
|
||||||
|
``` shellsession
|
||||||
|
$ git submodule update --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
You need [Leiningen](https://leiningen.org/), and for building binaries you need GraalVM.
|
||||||
|
|
||||||
|
## REPL
|
||||||
|
|
||||||
|
`lein repl` will get you a standard REPL/nREPL connection. To work on tests use `lein with-profiles +test repl`.
|
||||||
|
|
||||||
|
### Adding classes
|
||||||
|
|
||||||
|
Add necessary classes to `babashka/impl/classes.clj`. For every addition, write
|
||||||
|
a unit test, so it's clear why it is added and removing it will break the
|
||||||
|
tests. Try to reduce the size of the binary by only adding the necessary parts
|
||||||
|
of a class in `:instance-check`, `:constructors`, `:methods`, `:fields` or
|
||||||
|
`:custom`.
|
||||||
|
|
||||||
|
The `reflection.json` file that is needed for GraalVM compilation is generated
|
||||||
|
with:
|
||||||
|
|
||||||
|
lein with-profiles +reflection run
|
||||||
|
|
||||||
|
## Test
|
||||||
|
|
||||||
|
Test on the JVM (for development):
|
||||||
|
|
||||||
|
script/test
|
||||||
|
|
||||||
|
Test the native version:
|
||||||
|
|
||||||
|
BABASHKA_TEST_ENV=native script/test
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
To build this project, set `$GRAALVM_HOME` to the GraalVM distribution directory.
|
||||||
|
|
||||||
|
Then run:
|
||||||
|
|
||||||
|
script/compile
|
||||||
|
|
||||||
|
|
||||||
|
## Binary size
|
||||||
|
|
||||||
|
Keep notes here about how adding libraries and classes to Babashka grows the binary size.
|
||||||
|
|
||||||
|
On macOS:
|
||||||
|
|
||||||
|
2020/01/08, 303ca9e825d76a4a45bc4240a59139d342c13964: 36.9MB
|
||||||
Loading…
Reference in a new issue