Commit Graph

75 Commits

Author SHA1 Message Date
d4acbe8a70 A vertical slice of real libuv integration.
This adds a "timer" module to the CLI that provides a Timer class with
a static sleep() method. Not the most exciting functionality in the
world, but it requires the full hunk of libuv integration:

- The CLI sets up libuv and runs the event loop.
- Added a new directory src/module for CLI modules.
- Updated all the make scripts to handle it.
- Reorganized some other CLI code.
2015-08-07 08:10:55 -07:00
d995dc894c Set working directory for Linux libuv compile. 2015-08-02 10:58:27 -07:00
30752b26be First pass at compiling libuv on Linux. 2015-08-02 10:56:44 -07:00
4a6d7e0428 Integrate libuv into Wren.
- Add a script that downloads and compiles libuv.
- Hook that up to the Makefile so it pulls down libuv on build.
- Add a separate "vm" target that just builds the VM library and skips
  libuv.
- Link to libuv when compiling the CLI.
- Update the XCode project to link to libuv too.

Linux and Windows support isn't done yet, but it should be pretty
straightforward to add to the Python script.
2015-08-02 10:43:38 -07:00
bc822cd4c7 Merge branch 'master' into constructor-methods 2015-07-19 12:49:23 -07:00
6ece2c173b More test runner fixes. 2015-07-19 10:31:55 -07:00
1b27d556e0 Fix bug in test runner. 2015-07-19 09:33:00 -07:00
5fb6186d7d Make constructors just methods.
* Eliminate "new" reserved word.
* Allow "this" before a method definition to define a constructor.
* Only create a default constructor for classes that don't define one.
2015-07-10 09:18:22 -07:00
fa8ac84a8b Fix broken test runner (!).
If a test expected an error and found at least one, it would not fail
on any other expected errors that didn't occur.

Also, some tests were expecting a compile time error message even though
the test script doesn't validate those (yet).

The test function was getting monolithic, so I went ahead and split it
into a separate little class.
2015-07-09 08:06:33 -07:00
2387d4dc31 Grow the call frame array dynamically.
Previously, fibers had a hard-coded limit to how big their stack size
is. This limit exists in two forms: the number of distinct call frames
(basically the maximum call depth), and the number of unique stack
slots.

This fixes the first half of this by dynamically allocating the call
frame array and growing it as needed. This makes new fibers smallers
since they can start with a very small array. Checking and growing as
needed doesn't noticeably regress the perf on the other benchmarks, and
it makes a new fiber benchmark about 45% faster.

The stack array is still hardcoded, but that will be in another commit.
2015-07-01 00:00:25 -07:00
6c135e9941 Show number of expectations in test output. 2015-05-24 09:45:52 -07:00
7084d6bfd5 Add infrastructure to test embedding API. 2015-05-24 09:23:30 -07:00
5ad94fb4da Add ignored to walk() in test.py to clean up list of test dirs. 2015-05-21 09:17:40 -05:00
fc7612c843 Run examples as tests. Would have prevented #266 2015-05-20 10:10:40 -05:00
bead9a3406 Output amalgamation into build/. 2015-04-25 08:38:45 -07:00
796639e371 Fix amalgamation to work with X Macro files 2015-04-16 14:45:22 +02:00
bc7bf2a09f Print LICENSE on top of the amalgamation 2015-04-16 14:45:22 +02:00
c44be6418b Add comments for file start/end 2015-04-16 14:45:22 +02:00
9bcf31e14d Add amalgamation generation script 2015-04-16 14:45:22 +02:00
4dad9cd688 Make builtin statics unambigous 2015-04-16 14:45:22 +02:00
9bdbc05be1 Flush benchmark output after each ".".
Thanks, Michel!
2015-03-30 07:39:21 -07:00
d99a82e6d8 Merge branch 'meta-library' of git://github.com/gsmaverick/wren into gsmaverick-meta-library 2015-03-25 19:21:58 -07:00
e4a785a071 Remove oldSize from allocate API.
binary_trees - wren            .......... 0.29s 0.0048 107.79% relative to baseline
delta_blue - wren              .......... 0.12s 0.0017 106.95% relative to baseline
fib - wren                     .......... 0.30s 0.0042 119.95% relative to baseline
for - wren                     .......... 0.12s 0.0020 107.57% relative to baseline
method_call - wren             .......... 0.15s 0.0256 106.09% relative to baseline
map_numeric - wren             .......... 0.44s 0.0199 105.27% relative to baseline
map_string - wren              .......... 0.14s 0.0049 100.18% relative to baseline
string_equals - wren           .......... 0.30s 0.0032 100.57% relative to baseline

Thanks, Michel!
2015-03-25 07:45:29 -07:00
8c4e5eeea8 Show standard deviation and other tweaks in benchmark script. 2015-03-25 07:26:45 -07:00
82fceb8361 Give makefile prettier output. Pretty! 2015-03-24 07:51:48 -07:00
d438edc8d0 Remove some redundant warnings settings. 2015-03-22 22:17:29 -07:00
efa6f32d25 Merge branch 'w-extra' of git://github.com/verpeteren/wren into verpeteren-w-extra 2015-03-22 21:49:31 -07:00
a937bd1cf9 Adds a Meta library with an eval function for interpreting code inline. 2015-03-22 14:17:02 -07:00
3974d8101d Merge pull request #223 from bjorn/master
Fixed the source locations used by script/generate_builtins.py
2015-03-18 07:55:18 -07:00
be11d09bd8 Store hash code in strings.
Makes string equality and string map keys much faster.
Also did some other general string clean-up.
2015-03-18 07:09:03 -07:00
9f32de7047 Added -Wextra to compile flags
-Wextra does several extra checks during the compiling. Unfortunately one of the extra check is for unused parameters.
Several functions have unused parameters (mostly the WrenVM* vm).
2015-03-17 07:29:09 +01:00
034ab3c2af Clean up code for creating strings in the VM. 2015-03-15 22:32:20 -07:00
b7081c36b4 Update metrics script to new file layout. 2015-03-15 22:07:06 -07:00
aebc7c08b0 Fixed the source locations used by script/generate_builtins.py 2015-03-15 15:55:51 +01:00
92c17e81f6 Reorganize source files.
This makes it clear which files are part of the VM (i.e. the Wren library)
and which are part of the CLI. Makes a directory for the latter so it has
some room to grow.

This probably totally broke the VS project. If you can fix that, send me
a PR!
2015-03-14 15:00:50 -07:00
64eccdd9be Reorganize tests and benchmark scripts.
Mainly to get rid of one top level directory. But this will
also be useful when there are tests of the embedding API.
2015-03-14 12:45:56 -07:00
d1b48a7213 Ugh, fix test script. 2015-03-14 09:49:55 -07:00
db9e5737f6 Handle malformed UTF-8 output in test runner.
Thanks, Michel!
2015-03-14 08:47:31 -07:00
3ff56d48ee Normalize path handling on Windows in test script. 2015-03-13 07:26:23 -07:00
208ae9f7f2 Handle cc not being defined by MSYS for MinGW. 2015-03-01 09:25:48 -08:00
59796bcf5d Document benchmark runner. 2015-02-27 21:34:07 -08:00
8408e862a3 Clean up the test script a bit. 2015-02-27 07:22:27 -08:00
6e680f89bf Merge branch 'master' of https://github.com/munificent/wren 2015-02-24 22:08:57 -08:00
b5e5f80d8c Fix some signed-unsigned mismatches. 2015-02-24 21:56:33 -08:00
03595703e2 Merge pull request #185 from MarcoLizza/baseline_in_benchmark_dir
Fixed benchmark baseline-file creation path.
2015-02-24 19:49:29 -08:00
512baa2aff Fixed benchmark baseline-file creation path. 2015-02-23 10:01:57 +01:00
a8a5805895 Fix test script. 2015-02-22 10:42:21 -08:00
037a2bdb66 Massive Makefile clean up!
- "make all" builds all combinations of configurations
- Binaries are built to "bin"
- (For convenience, the release interpreter also goes in the top level dir)
- Libraries are built to "lib"

This will also make it easier to support building and testing other
configurations like Nan tagging versus union, computed goto, etc.
2015-02-22 10:19:23 -08:00
3802609644 Store benchmark baseline file in benchmark/. 2015-02-21 13:49:02 -08:00
911d5e374f Add benchmark for string map keys. 2015-02-11 22:41:59 -08:00