^title Getting Started ## Trying out the language If you'd like to try Wren, you have a few options. * **In your browser.** You can try Wren **[right here](./try/)**! * **On your computer.** The [Wren CLI](cli) project is a downloadable executable to run scripts with access to file io and more. See the [Wren CLI docs](cli). * **Embedded in your code.** See how to [build and embed Wren](#embed-the-vm) below. And then read the [embedding guide](embedding)! Once you have somewhere to explore, it's time to [learn the language](syntax.html). --- ## Embed the VM **The Wren Virtual Machine** is the core of the language that executes Wren source code. It is just a library, not a standalone application. It's designed to be [embedded][] in a larger host application. It has no dependencies beyond the C standard library. You can use it as a static library, shared library, or simply compile the source into your app. ### Building Wren To build the Wren library, we look inside the `projects/` folder. In here you'll find ready to go projects for `Visual Studio`, `XCode` and tools like `make`. * **Windows** Open `wren.sln` inside `projects/vs2019/` (or `vs2017`), hit build. * **Mac** Open `wren.xcworkspace` inside `projects/xcode/`, hit build. * **Linux** Run `make` inside of `projects/make/`. In each case, **there will be library files generated into the root `lib/` folder**. These are what you'll link into your project, based on your needs. * **Static Linking** `wren.lib` on Windows, `libwren.a` elsewhere. * **Dynamic Linking** `wren.dll` on Windows, `libwren.so` on Linux, and `libwren.dylib` on Mac. Note that the default build will also generate `wren_test` inside of `bin/`, a binary that is used to run the language tests. It can execute simple scripts. **Other platforms** If your platform isn't explicitly supported, it is recommended that you include the Wren source in your project for a portable experience. ### Including the code in your project **all source files** The alternative to building via the provided projects is to include the wren source code in your project. Since it has no dependencies this is simple, all the code in `src/` comes along. There's a readme in `src/` for details. **'amalgamated' build** If you want an even simpler way, there's an 'amalgamated' build (often called `blob`, or `unity` builds.). This is _all of the wren source code in one file_. This file can be generated by running `python3 util/generate_amalgamation.py > build/wren.c`, which saves the generated output in `build/wren.c`. Include `build/wren.c` and `src/include/wren.h` in your project code and you're good to go. Ideally later we can automate generating this and include it in the repo. --- [embedded]: embedding If you run into bugs, or have ideas or questions, any of the following work: * Join the [discord community][discord]. * Ask on the [Wren mailing list][list] (which is pretty quiet). * Tell us on twitter at [@munificentbob][twitter] or [@ruby0x1][twitter0x1]. * [File a ticket][issue] at [the GitHub repo][repo]. * The CLI also has [tickets][issue_cli] and a [GitHub repo][repo_cli] too. * Pull requests are welcome. [discord]: https://discord.gg/Kx6PxSX [list]: https://groups.google.com/forum/#!forum/wren-lang [twitter]: https://twitter.com/intent/user?screen_name=munificentbob [twitter0x1]: https://twitter.com/intent/user?screen_name=ruby0x1 [issue]: https://github.com/wren-lang/wren/issues [repo]: https://github.com/wren-lang/wren [issue_cli]: https://github.com/wren-lang/wren-cli/issues [repo_cli]: https://github.com/wren-lang/wren-cli