^title 0.3.0 released!
5 June 2020
---
In this post we'll cover 0.3.0 and the goals for 0.4.0 [#](#goals-for-0.4.0).
## About the 0.3.0 release
Let's revisit our goals from [the last blog post](1-0.2.0-and-beyond.html),
and mark what we managed to get done:
- VM / CLI split [#](#vm--cli-split)
- Build consistency/reliablity [#](#build-consistencyreliability)
- Web build for embedding in docs [#](#web-build-for-embedding-in-docs)
- Prebuilt releases [#](#prebuilt-releases)
## The details
### VM / CLI split
With 0.3.0 we've separated the CLI from the Wren repo,
and updated the docs to make the distinction clearer.
The [CLI now has its own corner of the docs](../cli), so that the modules
and API docs aren't overlapped like before. This opens up space for the
CLI to get better, fuller documentation, and removes confusion about
built in modules vs ones that are in the CLI only.
The code structure is clearer, too, and all the tests and utils are now specific.
### Build consistency/reliability
Previously, builds on Windows could be a little fickle, and there was sometimes
issues with the dependencies on the CLI side.
To solve this, premake is now used to generate platform specific project files that
'just work', making it a one step process to build the VM or CLI. Both projects
now have a `projects/` folder which includes ready to go project files for primary platforms.
The original `Makefile` and `util/wren.mk` no longer exist, so there might be some work needed
to reintegrate if you relied on those. You can find the updated makefile in `projects/make/`, or `projects/make.mac/`.
The **amalgamated build** was fixed too, so that embedding in your own project is as simple as
including a single c file (and the `wren.h` header).
On the **CLI** side, the pre-build steps were removed and dependencies vendored in repo,
so that the project just builds with less potential points of error, especially across platforms.
And finally the **docs**! Previously [SASS](https://sass-lang.com/) was used, and code highlighting
was done at generation time using pygments, a python code highlighter. Both of these dependencies
have been removed, code highlighting is now done on the client side instead (see another reason why below).
The benefit here that it is now _easy_ to edit the docs, just a simple python command, no setup!
### Web build for embedding in docs
The goal was two part here, one is to have a page to just try out Wren.
Type in some code, run it. That's the first big step and we've now got that on the docs page.
example. some(). functions(). here()This isn't as elegant as we'd want for this form of API, so **in 0.4.0 the goal is** allowing a newline, as you'd expect:
example .some() .functions() .here()This doesn't seem like a big deal but when your calls are wider, longer and possibly accept block functions. It's hard to read, and can be less fun to track down a missing `.` in a big chunk of code.
example. some {|args, and, stuff| ... }. here()**C Side APIs** Some APIs for dealing with `Map` have been proposed several times, it's time to bring that into the API. There's some additions for `List` as well, like a helper to set an element in a list. **Other goals** There's a few more things but I'm still exploring their viability. Keep an eye on the [PRs/issues](https://github.com/wren-lang/wren) or the [0.4.0 label](https://github.com/wren-lang/wren/pulls?q=is%3Apr+is%3Aopen+label%3A0.4.0) to see when they're discussed. ## Till next time --- - [The Wren Blog RSS](http://wren.io/blog/rss.xml) - Join the [discord community](https://discord.gg/Kx6PxSX) - Visit the [wren-lang organization](https://github.com/wren-lang) on GitHub to get involved. - Follow the developers [@munificentbob](https://twitter.com/munificentbob) or [@ruby0x1](https://twitter.com/ruby0x1) on twitter