Commit Graph
100 Commits
Author SHA1 Message Date
Bob Nystrom 783a5b750a Get ranges working in string subscripts (again).
Now with UTF-8 hotness!
2015-09-01 22:14:55 -07:00
Bob Nystrom 2e83f056c1 No more default constructors.
Fixes #296.
2015-09-01 08:16:04 -07:00
Bob Nystrom 36f3059e48 Get finalizers working. 2015-08-31 21:56:21 -07:00
Bob Nystrom 1e0a2e6036 Get rid of WrenMethod and just use WrenValue for both.
Thanks, Michel!
2015-08-31 07:57:48 -07:00
Bob Nystrom 1cea3ca3bc Remove redundant ignoreNewlines(). 2015-08-31 07:46:17 -07:00
Bob Nystrom 2b044666ee Reorganize trailing comma code a bit.
- Split out syntax error tests.
- Avoid redundant handling of empty literals.
2015-08-31 07:23:36 -07:00
Bob Nystrom 6559edbc56 Update docs to mention libuv. 2015-08-30 22:38:40 -07:00
Bob Nystrom 556af50f83 Revise low level fiber semantics to play nicer with schedulers.
Now that I'm starting to write a real async scheduler on top of Wren's
basic fiber API, I have a better feel for what it needs. It turns out
run() is not it.

- Remove run() methods.
- Add transfer() which leaves the caller of the invoked fiber alone.
- Add suspend() to return control to the host application.
- Add Timer.schedule() to start a new independently scheduled fiber.
- Change Timer.sleep() so that it only transfers control to explicitly
  scheduled fibers, not any one.
2015-08-30 22:15:37 -07:00
Bob Nystrom 91af02ac81 Merge branch 'master' into libuv
# Conflicts:
#	project/xcode/wren.xcodeproj/project.pbxproj
#	script/wren.mk
#	src/cli/main.c
#	src/cli/vm.c
#	src/cli/vm.h
#	test/api/main.c
2015-08-28 23:13:56 -07:00
Bob Nystrom a11450e722 Install g++-multilib for 32-bit std C++ libs on Travis. 2015-08-28 20:25:26 -07:00
Bob Nystrom 647e70a8be Print output when a command fails in libuv.py. 2015-08-28 20:14:55 -07:00
Bob Nystrom 52f7f96813 Get libuv building for all architectures on Linux. 2015-08-28 19:49:19 -07:00
Bob Nystrom b4deb30a02 Reorganize build scripts for libuv.
- Create separate libs for each architecture. OS X doesn't need this
  (we just build a universal binary), but it will help Linux.
- Move the libuv build stuff into wren.mk where the actual dependency
  on the lib is.
- Download libuv to deps/ instead of build/. That way "make clean"
  doesn't blow it away.
- Don't redownload libuv unless needed.
2015-08-28 19:31:03 -07:00
Bob Nystrom 0ae59be11a Use the same libuv output directory on Mac and Linux. 2015-08-27 07:55:12 -07:00
Bob Nystrom f33b362cc0 Clean up delta_blue benchmark. 2015-08-27 06:25:24 -07:00
Bob Nystrom fa4a8148c9 A little bit of code clean-up. 2015-08-22 07:56:38 -07:00
Bob Nystrom 881824227d Don't count "{" or "}" in the line count. 2015-08-22 07:27:32 -07:00
Bob Nystrom 1c941c0258 Make a helper function for matching and consuming a character. 2015-08-21 23:08:11 -07:00
Bob Nystrom 470d2347ff Store number and string literals directly as a Value in the parser.
Thanks, Michel!
2015-08-21 22:54:30 -07:00
Bob Nystrom eda3f89266 Merge branch 'master' of https://github.com/munificent/wren 2015-08-20 22:34:42 -07:00
Bob Nystrom 610952f727 Update line count in docs. 2015-08-20 22:34:33 -07:00
Bob Nystrom f433237ff2 Merge pull request #297 from Fedjmike/patch-1
readme: Updated line count
2015-08-20 22:34:08 -07:00
Bob Nystrom 40fbf6112b Use "init " as the prefix for initializers. 2015-08-20 22:30:44 -07:00
Bob Nystrom ab3c57d518 Merge branch 'still-seeing-this' of https://github.com/minirop/wren into ctor 2015-08-20 22:23:53 -07:00
Bob Nystrom 4d613fc394 Merge branch 'fix-timer-libuv' of https://github.com/Rohansi/wren into timer 2015-08-20 22:09:52 -07:00
Bob Nystrom 147a0815f2 Tweak style. 2015-08-20 22:08:39 -07:00
Bob Nystrom 95ef53e758 Merge branch 'fix-windows-libuv' of https://github.com/Rohansi/wren into win 2015-08-20 22:07:34 -07:00
Bob Nystrom 7be1fb543b Fix test name. 2015-08-20 22:04:42 -07:00
Bob Nystrom 4ab9c06e2c Merge branch 'exponant-notation' of https://github.com/minirop/wren into science 2015-08-20 22:03:19 -07:00
Bob Nystrom 69b0d34065 Start working on docs for the embedding API. 2015-08-20 22:02:13 -07:00
Bob Nystrom cd5087d222 Get 32-bit and C++ Mac builds happy with libuv. 2015-08-16 10:28:55 -07:00
Bob Nystrom 6be1dce49c Link to rtlib too. 2015-08-16 09:59:53 -07:00
Bob Nystrom 214f72ccf1 Put the libs last? 2015-08-16 09:57:47 -07:00
Bob Nystrom e6b0a89046 Try allowing gnu C99 extensions. 2015-08-16 09:55:50 -07:00
Bob Nystrom bd3a9ad7c6 Try including libuv as an object instead of linking to it. 2015-08-16 09:40:02 -07:00
Bob Nystrom 1f13416724 Remove libuv.a from the objects list. 2015-08-16 09:36:17 -07:00
Bob Nystrom 572ba7c7da Maybe the order of libraries matters... 2015-08-16 09:16:26 -07:00
Bob Nystrom 9608002d65 Try to get pthreads working on Linux (again...). 2015-08-16 09:07:41 -07:00
Bob Nystrom 9b18d38546 Merge pull request #291 from Rohansi/fix-broken-links
Fixed some broken links in the readme
2015-08-15 19:58:42 -07:00
Bob Nystrom 48bdbc7745 First pass at implementing foreign classes.
Most of the pieces are there:

- You can declare a foreign class.
- It will call your C function to provide an allocator function.
- Whenever a foreign object is created, it calls the allocator.
- Foreign methods can access the foreign bytes of an object.
- Most of the runtime checking is in place for things like subclassing
  foreign classes.

There is still some loose ends to tie up:

- Finalizers are not called.
- Some of the error-handling could be better.
- The GC doesn't track how much memory a marked foreign object uses.
2015-08-15 12:07:53 -07:00
Bob Nystrom 7a79b8fac6 Simplify the API tests.
Use fewer test suites with more tests in each one since there's so much
boilerplate for defining an API test.
2015-08-13 09:09:27 -07:00
Bob Nystrom 8e791c70c0 Getting farther... 2015-08-08 09:14:52 -07:00
Bob Nystrom 0c5c291d85 Try to make Linux and libuv love each other. 2015-08-08 09:06:40 -07:00
Bob Nystrom eaaaca7cd2 Enable POSIX extensions when compiling stuff that uses libuv. 2015-08-08 08:57:57 -07:00
Bob Nystrom 8d90e093ea Try to get libuv working on Linux (again).
It seems to want to build to a different output directory on Mac and
Linux. I can't fix that, so just make our Makefile accommodate.
2015-08-08 07:40:27 -07:00
Bob Nystrom bb7485d46b Use the same libuv build directory on Linux. 2015-08-08 07:20:07 -07:00
Bob Nystrom 9845ed5126 Tests for Timer.sleep(). 2015-08-08 07:17:30 -07:00
Bob Nystrom 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
Bob Nystrom 254729d067 Merge branch 'master' into libuv 2015-08-07 07:57:32 -07:00
Bob Nystrom 56d4d3e671 Allow passing WrenValues to wrenCall(). 2015-08-07 07:57:23 -07:00
Bob Nystrom 07615ed1f2 Merge branch 'master' into libuv 2015-08-06 23:15:55 -07:00
Bob Nystrom 0b97b27cf4 Add an API for storing handles to values outside of the VM.
It's pretty bare bones now, but it lets you get a reference to an object
from a foreign call and then return it later.
2015-08-06 22:24:15 -07:00
Bob Nystrom 59ff15d26a Merge branch 'master' into libuv 2015-08-06 21:37:13 -07:00
Bob Nystrom a1424f8371 Be more explicit about fulling initializing Signature structs.
Thanks, Michel!
2015-08-06 07:34:19 -07:00
Bob Nystrom d18ee3068a Make wrenFindVariable() also take a module.
Thanks, Michel!
2015-08-06 07:13:11 -07:00
Bob Nystrom 0631f3b109 Fix deadlock bug in map insertion. 2015-08-06 06:55:30 -07:00
Bob Nystrom d995dc894c Set working directory for Linux libuv compile. 2015-08-02 10:58:27 -07:00
Bob Nystrom 30752b26be First pass at compiling libuv on Linux. 2015-08-02 10:56:44 -07:00
Bob Nystrom 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
Bob Nystrom 71ab3ca887 Use "construct" instead of "this" to define constructors. 2015-07-21 07:24:53 -07:00
Bob Nystrom ed8ec262e4 Fix example in README. 2015-07-20 07:34:30 -07:00
Bob Nystrom bc822cd4c7 Merge branch 'master' into constructor-methods 2015-07-19 12:49:23 -07:00
Bob Nystrom 6ece2c173b More test runner fixes. 2015-07-19 10:31:55 -07:00
Bob Nystrom 71eda0e427 Make an inline function for getting the fn for a call frame.
Thanks, Michel!
2015-07-19 10:16:54 -07:00
Bob Nystrom e42893fe4c Clean up macros and fix non-nan-tagged and non-computed-goto modes. 2015-07-19 10:16:27 -07:00
Bob Nystrom 1b27d556e0 Fix bug in test runner. 2015-07-19 09:33:00 -07:00
Bob Nystrom 214794db67 Fix a tiny typo. 2015-07-19 09:10:42 -07:00
Bob Nystrom fd637e46bc Fix a couple of style nits. 2015-07-18 14:17:39 -07:00
Bob Nystrom d91c06d18b Tweak IO library a bit:
- Reword some docs.
- Make IO.printAll() public.
- Require () on read.
2015-07-18 14:09:00 -07:00
Bob Nystrom ea2bad3272 Merge pull request #286 from BarabasGitHub/string_equals-py
Added string_equals.py to benchmarks
2015-07-18 11:21:49 -07:00
Bob Nystrom c095b72976 Reorganize community docs a bit. 2015-07-18 11:19:52 -07:00
Bob Nystrom 18165db204 Update Travis config to allow container-based builds. 2015-07-10 10:35:25 -07:00
Bob Nystrom 861d906fc2 Ensure signature type is correctly initialized. 2015-07-10 10:27:32 -07:00
Bob Nystrom a389fdea67 Fix implicit conversion. 2015-07-10 09:22:04 -07:00
Bob Nystrom 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
Bob Nystrom 0ddaa2517c Merge branch 'fix-tests' 2015-07-09 08:09:19 -07:00
Bob Nystrom 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
Bob Nystrom 8b445447e4 Merge pull request #281 from sbrl/master
Add myself to the AUTHORS and correct a small typo
2015-07-01 16:07:51 -07:00
Bob Nystrom a44e07deba Some minor doc cleanups and tweaks. 2015-07-01 08:11:10 -07:00
Bob Nystrom 70cc371379 Merge pull request #275 from sbrl/master
Document the IO class
2015-07-01 06:44:27 -07:00
Bob Nystrom 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
Bob Nystrom 18dcd3ce3d Reuse primitive for returning this.
Thanks, Michel!
2015-06-30 07:39:43 -07:00
Bob Nystrom 4a15653c66 Add isEmpty to Sequence.
Thanks, Michel and Thorbjørn!
2015-06-30 06:52:29 -07:00
Bob Nystrom ed6d7c5084 Implement toString directly on Class.
Thanks, Michel!
2015-06-28 15:33:37 -07:00
Bob Nystrom 1a87f52e9d Eliminate duplication between CODE_CALL and CODE_SUPER handling.
Also improves perf:

binary_trees - wren            106.96% relative to baseline
delta_blue - wren               99.84% relative to baseline
fib - wren                     114.97% relative to baseline
for - wren                     123.32% relative to baseline
method_call - wren             112.80% relative to baseline
map_numeric - wren             111.36% relative to baseline
map_string - wren               93.73% relative to baseline
string_equals - wren           106.15% relative to baseline
2015-06-28 10:58:48 -07:00
Bob Nystrom 080514cffb Tweak arguments to runInterpreter().
Thanks, Michel!
2015-06-27 08:56:52 -07:00
Bob Nystrom aa37bdc780 Include method name in block argument debug name. 2015-06-27 08:36:20 -07:00
Bob Nystrom bf730bb953 More tests for invalid code points. 2015-06-27 08:11:58 -07:00
Bob Nystrom 7baef81a4e Clean up a bit. 2015-06-26 23:01:07 -07:00
Bob Nystrom 8c538e4048 Merge branch 'leaks' of https://github.com/NomAnor/wren into NomAnor-leaks 2015-06-26 22:49:24 -07:00
Bob Nystrom 3196735f39 Add block arguments and operators to syntax example. 2015-06-26 22:14:32 -07:00
Bob Nystrom 8ce4879de5 Clean up getting modules.
Thanks, Michel!
2015-06-23 07:15:22 -07:00
Bob Nystrom 2c95ae2d2e Make "is" just another infix operator.
Thanks, Michel!
2015-06-19 07:58:07 -07:00
Bob Nystrom 327b40bba7 Remove unnecessary null checks before calling wrenMarkObject().
Thanks, Michel!
2015-06-18 07:52:05 -07:00
Bob Nystrom 291ddf3961 Merge pull request #271 from BarabasGitHub/vs-proj
Fixed project files for visual studio.
2015-06-18 07:37:58 -07:00
Bob Nystrom 73a2101505 Merge branch 'fix-super' 2015-06-02 07:33:48 -07:00
Bob Nystrom 3cdfaea797 Statically dispatch super() calls. Fix #250. 2015-06-02 07:33:39 -07:00
Bob Nystrom 08f0937f89 Fix NaN tagging diagrams. 2015-06-02 07:14:19 -07:00
Bob Nystrom 06feba4861 Merge branch 'master' into fix-super 2015-05-27 06:57:20 -07:00
Bob Nystrom d66556b713 Add API tests for returning null or numbers. 2015-05-24 10:04:24 -07:00