Commit 41c60d9b authored by Nicolas Lenz's avatar Nicolas Lenz

Move tooling ideas

parent d2893db9
......@@ -190,28 +190,7 @@ Do we want a JavaScript or WebAssembly backend?
### Tooling
Good and unified tooling right from the start is very important for a language and its acceptance. Negative Example: Haskell, that wasn't actually usable before Stack was introduced about 2016 (!). Also IDE integration is important.
One tool for everything: `lightfold` command line tool is compiler, interpreter, shell, build system, formatter etc. in a single convenient place, like with Go, but less weird.
- `lightfold compile test.lightfold` compiles a file with a `main` function into a binary and can be used to create unlinked object files.
- `lightfold shell test1.lightfold test2.lightfold …` starts an interactive shell with the files loaded. Just `lightfold shell` or `lightfold` starts a blank shell.
- `lightfold run test.lightfold` or simply `lightfold test.lightfold` executes the file.
- `lightfold build` builds a project following the directions in the `project.yaml` file.
- `lightfold test` runs a Lightfold test suite.
- `lightfold fmt test.lightfold` formats a source file following the standardized coding conventions and an optional custom format specification.
- `lightfold lint test.lightfold` is a static analyzer that gives hints on how to improve a source file, and auto-apply them if possible. Can also do safe renaming.
- Integrate into `compile`?
- `lightfold doc` generates documentation (via Pandoc?).
- `lightfold language-server` starts a language server for editors supporting the protocol.
What to use for config files?
- **YAML:** Human-friendly but ambiguous syntax and worse: [ambiguous semantics](https://github.com/cblp/yaml-sucks), might not be a good idea to support that
- [**strictYAML:**](https://hitchdev.com/strictyaml/) YAML without the suck
- **TOML:** Already used by Rust and looks nice, tailor-made to be used in config files, well-known syntax, better spec
- **Something native:** Should be avoided, but still a possibility
- **XML or JSON:** No.
See [toolstack repo](https://git.eisfunke.com/software/lightfold/toolstack).
### Debugging
......@@ -220,7 +199,6 @@ Debugging needs to be easy and comprehensive.
- Tracing option that outputs what functions were called with what values in what order, without changing the code
- Debugger with breakpoints?
## Misc
- Look into the various [GHC language extensions](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment