Skip to content

Commit 215e57b

Browse files
committed
Update dev docs.
1 parent 22bec11 commit 215e57b

6 files changed

+18
-28
lines changed

CONTRIBUTING.md

-6
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,6 @@ To do so:
3535
All PRs will be considered, but going through the above process significantly
3636
improves your chances of a merge!
3737

38-
## Local development commands
39-
40-
- build: `cabal build -f dev`
41-
- run tests: `cabal test -f dev`
42-
- format files: `ormolu --mode inplace $(git ls-files '*.hs')`
43-
4438
## Back-up / Historic Archives
4539

4640
There's also a [Zulip](https://gren.zulipchat.com) with older

README.md

+11-4
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,17 @@ There are easier ways to install the compiler than compiling the source, you mig
66

77
## Build from source
88

9-
The Gren compiler is written in Haskell, so to build from source you need to have GHC 9.4 (Haskell compiler) and Cabal 3.8 (haskell build tool) installed on your system.
9+
This project uses [devbox](https://www.jetify.com/devbox) for managing dependencies required to build the project. If you don't want to use devbox,
10+
you can find a list of the requried dependencies and their specific versions in `devbox.json`.
1011

11-
You can install these using [ghcup](https://www.haskell.org/ghcup/). By default, ghcup will install an older version of Haskell and Cabal, so you can install and set the required versions using `ghcup tui`.
12+
Since Gren 0.4 the compiler is implemented in two parts. The Gren-portion of the compiler lives in `src`, and once built it acts
13+
as a frontend to the Haskell-portion of the compiler.
1214

13-
Compiling and installing the project should just be a matter of `cabal install`, after which you should be able to run the `gren` command from your command line.
15+
The end goal is for the entire compiler to be written in Gren, but for now you need to build both Gren- and Haskell-portions of the compiler.
1416

15-
Read the `CONTRIBUTING.md` file for some helpful commands for working on the compiler itself.
17+
1. Use `devbox shell` to get a terminal with the required dependencies installed.
18+
2. Use `./build_dev_bin.sh` to build the Haskell-based compiler. You should now have a `./gren` file in your directory.
19+
3. Build the Gren compiler with `npm run prepublishOnly`
20+
4. You can now execute your local build with `GREN_BIN=./gren node ./cli.js`
21+
22+
`GREN_BIN` tells the compiler which Haskell-binary to communicate with. If not specified, it will be downloaded.

ROADMAP.md

+2-13
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,5 @@ Also, keep in mind that this only focuses on the big picture. Major features lik
88

99
## Releases
1010

11-
- December 2023 - Parametric modules, or OCaml functors, to enable defining things like equality, comparisons etc. for your own types and use them in data structures like Dict. This release also removes the "magic" type classes currently in the language, like `number` and `comparable`.
12-
13-
- June 2024 - Stabelization period. Mostly bugfixes and code gen improvements. While we prepare for the next big thing.
14-
15-
- December 2024 - Re-evaluating how concurrency works in the language. More specifically, we'll re-evaluate how `Task`, `Cmd`, `Process` and effect modules work.
16-
17-
- June 2025 - Re-evaluate records and custom types.
18-
19-
- December 2025 - Re-evaluate interop: ports and kernel code.
20-
21-
- June 2026 - Compile to Web Assembly instead of JS. This will give us proper integers, big integers, hopefully smaller asset size and possibly enable future optimizations in codegen.
22-
23-
- December 2026 - The language is considered complete. Both the compiler and core packages will commit to maintaining backwards compatability from here on out.
11+
- June 2025 - Rewrite dependency management in Gren
12+
- December 2025 - Rewrite parser in Gren. Parametric modules. Operators as syntax sugar.

devbox.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.13.4/.schema/devbox.schema.json",
2+
"$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.13.5/.schema/devbox.schema.json",
33
"packages": [
44
"nodejs@20",
55

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "gren-lang",
3-
"version": "0.4.5",
3+
"version": "0.4.6",
44
"description": "Compiler for the Gren programming language",
55
"scripts": {
66
"test": "echo \"Error: no test specified\" && exit 1",
7-
"prepublishOnly": "gren make src/Main.gren --optimize --output=compiler.js",
7+
"prepublishOnly": "npx [email protected] -- gren make src/Main.gren --optimize --output=compiler.js",
88
"prettier": "prettier -w \"!**/*.json\" .",
99
"prettier:check": "prettier -c \"!**/*.json\" ."
1010
},

0 commit comments

Comments
 (0)