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