(benchmark code..) implemented repl completion very first version (string xx) added some builtin renames a bit of comments a bit of cocumentation (sleep interval) added |
||
|---|---|---|
| .vscode | ||
| clib | ||
| doc | ||
| stdlib | ||
| tests | ||
| tmp | ||
| .gitignore | ||
| CMakeLists.txt | ||
| Readme.md | ||
| debug.lsp | ||
| ml.cpp | ||
| ml.h | ||
| ml_date.cpp | ||
| ml_date.h | ||
| ml_io.cpp | ||
| ml_io.h | ||
| ml_string.cpp | ||
| ml_string.h | ||
| ml_util.cpp | ||
| ml_util.h | ||
Readme.md
BUGS
- (read-file "nonexisting/file.csv") shows only "could not open file" - should print filename
TODO
- documentation
- add url of source/inspiration to clib/*.cpp
- add stdtest - to test every functionality
- rename ivaluize
- add instrumentation (time, nr of evals, num of atoms, debug info, debug environment etc)
- add debug support function call could keep call stack
- add better print (coloring output)
- multiline editting (kilo editor)
- execute system command should capture stderr
- add built in for and, or
- add some mem stats to benchmark
- support for (), nil, t, in lsp code replace 0 by nil in logicals
- file functions
- name it here
- string functions
- compare - needed for sorting
- uppper/lower case
- trim
- replace
- regexp functions
- date support
- decode-universal-time
- env functions
- get env
- set env
- format (sprintf)
- setq
- mapcar (funcall, apply)
- syntax highlighting do VS Code
- add hash datatype
Performance
- push_back - repeatedly without reserving size
- range - with for(int i...) and reserving result size can be 3times faster on (range 1 10000)
- mini_sprintf - unnecesary copying between vector and list
- (do ..) repeatedly assign to acc, maybe somewhere else
Install
cp build/ml /usr/local/bin/ml
cp stdlib/*.lsp /usr/local/var/mlisp/
Compile
gcc -o ml -I/usr/local/opt/openssl/include -Iclib -L/usr/local/lib -L/usr/local/opt/openssl/lib -lm -lstdc++ -lcrypto -lssl -Wl,-stack_size -Wl,0x1000000 --std=c++17 ml.cpp ml_io.cpp ml_date.cpp ml_string.cpp ml_util.cpp clib/json11.cpp clib/csvparser.cpp clib/sslclient.cpp clib/printf.cpp clib/linenoise.c
or cmake
Example of use
time ./build/ml -c '(include "../example.lisp") (print (fact 1000))'
./build/ml -f debug.lisp
Links
https://hyperpolyglot.org/lisp https://www.tutorialspoint.com/lisp/index.htm https://github.com/adam-mcdaniel/wisp http://www.ulisp.com/show?1AWG http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/
https://github.com/dropbox/json11
std::vector
https://stackoverflow.com/questions/12271017/initial-capacity-of-vector-in-c https://baptiste-wicht.com/posts/2012/12/cpp-benchmark-vector-list-deque.html
parse http headers in c++
^(?:((?:https?|s?ftp):)\/\/)([^:\/\s]+)(?::(\d*))?(?:\/([^\s?#]+)?([?][^?#]*)?(#.*)?)?
https://stackoverflow.com/questions/25896916/parse-http-headers-in-c
read stdout and stderr from popen
VPS providers
https://www.skysilk.com/cloud/pricing/#classId=Standard§ion=2 https://contabo.com/en/ https://www.hetzner.com/de/
Editor
https://viewsourcecode.org/snaptoken/kilo/07.syntaxHighlighting.html http://antirez.com/news/108 https://github.com/antirez/kilo