Bob Nystrom
e3c9324dd9
Merge branch 'master' into iwillspeak-iterative-gc
2015-10-28 07:46:06 -07:00
Bob Nystrom
e985e6fe07
Make sure binary_trees_gc actually stresses GC.
2015-10-28 07:45:52 -07:00
Bob Nystrom
b365c07d7a
Add a benchmark that explicitly invokes the GC.
2015-10-24 11:00:17 -07:00
Bob Nystrom
0f7d4dd4d0
Add a timeout to the test runner.
...
This ensures that when you run the tests while stress testing the GC,
that a pathological test won't hang forever.
2015-10-24 10:58:21 -07:00
Bob Nystrom
720c03cf49
Add System.gc().
2015-10-24 10:56:27 -07:00
Bob Nystrom
f145662158
"Auxiliary" -> "optional".
...
Fixes #309 .
2015-10-24 09:23:25 -07:00
Bob Nystrom
545a4cbf7e
Style example output and errors in the docs.
2015-10-18 15:56:52 -07:00
Bob Nystrom
2174ff31e7
Merge pull request #308 from iwillspeak/master
...
Add Will Speak to Authors File
2015-10-18 10:35:14 -07:00
Bob Nystrom
30e7d9e508
Move core.wren to be next to wren_core.wren.inc.
2015-10-17 22:17:10 -07:00
Bob Nystrom
e5176607d9
Move meta and random to "aux" modules.
...
Wren now has three classes of modules:
- The one magic "core" module that's built in and always needed.
- Auxiliary libraries like "meta" and "random". These do not have any
dependencies, so can be used even when you embed Wren inside an
application. But they're also optional and can be disabled if you
don't need them.
- CLI modules. These ones need libuv and are tied to the CLI wrapper
around the VM.
2015-10-17 22:09:48 -07:00
Bob Nystrom
3ca480cbf4
Merge branch 'master' of https://github.com/iwillspeak/wren into iwillspeak-master
2015-10-17 20:07:52 -07:00
Bob Nystrom
a3f3e3ce03
Don't try to run the guess_number example from the test script.
2015-10-17 13:29:50 -07:00
Bob Nystrom
2c5926b32b
Add guess a number example.
2015-10-17 11:19:25 -07:00
Bob Nystrom
5d6ed0958c
Use explicit constant for 2**53.
2015-10-17 11:07:13 -07:00
Bob Nystrom
8436ce1934
Add a random module.
2015-10-17 11:03:15 -07:00
Bob Nystrom
49601e67c5
Don't require nonstandard __builtin_unreachable() in UNREACHABLE().
...
Fix #304 (I hope).
2015-10-16 21:51:30 -07:00
Bob Nystrom
29eebe4928
Tweak libuv.py a bit.
2015-10-16 21:33:22 -07:00
Bob Nystrom
82d6453a7e
Merge branch 'master' of https://github.com/ppearson/wren into ppearson-master
2015-10-16 21:24:22 -07:00
Bob Nystrom
d431c2eaa8
Start sketching in support for reading from stdin.
2015-10-16 21:05:24 -07:00
Bob Nystrom
c714c53c83
"Library" -> "module".
2015-10-15 19:38:25 -07:00
Bob Nystrom
3b09b35b59
Get rid of source path in module.
...
It wasn't useful anyway since it always had the module name for all but
the main script.
2015-10-15 18:17:42 -07:00
Bob Nystrom
d5b9f0096c
Move Meta to a separate module.
...
Also cleaned up some of the code around loading the core module.
2015-10-15 18:08:56 -07:00
Bob Nystrom
06a4e00f31
Store the module debug path in the ObjModule.
...
Thanks, Michel!
2015-10-14 07:37:13 -07:00
Bob Nystrom
8980d34ee5
Only close an upvalue for a local if there actually is one for it.
2015-10-08 08:06:29 -07:00
Bob Nystrom
24cbb7f399
Fix closures in methods.
...
A local name inside a method should always resolve to a self send even
if there is a local variable with that name outside of the method.
2015-10-05 07:44:51 -07:00
Bob Nystrom
e968b4bf98
Fix two typos in the docs.
2015-10-03 21:45:59 -07:00
Bob Nystrom
76d188e018
Get rid of PrimitiveResult.
...
Primitives still have a return value to indicate normal value returning
versus runtime errors or fiber switching since it minimizes branches
in the common case of a normal value result.
2015-10-03 20:43:12 -07:00
Bob Nystrom
812bc15380
Get rid of the special "call" primitive result type.
...
Instead, Fn.call(...) is a special *method* type that has the same
special sauce. The goal is eventually to get rid of the primitive
result type entirely.
2015-10-03 19:04:11 -07:00
Bob Nystrom
e41d9eac7c
Tweak the embedding docs a bit.
2015-10-02 21:25:55 -07:00
Bob Nystrom
d61d7fd5b4
Don't pass fiber explicitly to primitives.
...
Thanks, Michel!
2015-10-02 07:51:12 -07:00
Bob Nystrom
b7ed774da3
Reading files!
...
- File.close()
- File.open()
- File.read()
- file.readBytes()
And a few other little methods. Still lots more work to do, but it's a
start.
2015-09-30 21:13:36 -07:00
Bob Nystrom
bacbd85543
Add .isInfinity and .isInteger to Num.
2015-09-30 08:41:43 -07:00
Bob Nystrom
5129597c63
Unify PRIM_ERROR and PRIM_RUN_FIBER.
2015-09-30 07:32:39 -07:00
Bob Nystrom
b05a74da19
Revamp how runtime errors and fiber switching is handled.
...
- Add Fiber.transferError(_).
- Primitives place runtime errors directly in the fiber instead of on
the stack.
- Primitives that change fibers set it directly in the VM.
- Allow a fiber's error to be any object (except null).
2015-09-29 22:57:03 -07:00
Bob Nystrom
79354f5a97
Do some work on wrenCall().
...
- Add an explicit va_list version. That lets variadic functions
forward to it.
- Fix a GC bug in wrenCall() with return values.
- Make the call API test not re-enter the VM.
2015-09-29 19:29:10 -07:00
Bob Nystrom
f757c9efac
Better embedding API support (and tests!) for strings with null bytes.
...
- Test that a foreign method can return strings.
- Test that a foreign method can return a string with null bytes.
- Test wrenCall().
- Allow passing NULL for "v" to wrenCall().
- Allow "a" for passing an explicit length byte array to wrenCall().
2015-09-24 08:02:31 -07:00
Bob Nystrom
a944ead5b4
Give the docs some love.
2015-09-22 21:19:38 -07:00
Bob Nystrom
505b48fdac
Add a real Pygments lexer for Wren (finally!).
2015-09-22 07:59:54 -07:00
Bob Nystrom
36f7d74183
Unify "script" and "project" under "util".
2015-09-22 07:45:58 -07:00
Bob Nystrom
2f9ba2beaa
Merge branch 'buildfix' of https://github.com/krypt-n/wren into krypt-n-buildfix
2015-09-21 19:48:08 -07:00
Bob Nystrom
f6083b1756
Simplify how built-in foreign methods and classes are wired up.
2015-09-21 07:58:39 -07:00
Bob Nystrom
8ef4ea6186
Allow super calls in static methods.
2015-09-19 15:19:41 -07:00
Bob Nystrom
19f70b4035
Simplify and optimize how keywords are lexed.
2015-09-17 20:51:24 -07:00
Bob Nystrom
dc527c8d86
Add "io" module with beginnings of a File class.
2015-09-16 07:34:49 -07:00
Bob Nystrom
251752fcfb
Make join() require parentheses without a separator.
2015-09-16 07:15:48 -07:00
Bob Nystrom
efceee4320
Let the host application control how System prints text.
2015-09-15 23:01:43 -07:00
Bob Nystrom
58e4d26648
"IO" -> "System".
...
Get rid of the separate opt-in IO class and replace it with a core
System class.
- Remove wren_io.c, wren_io.h, and io.wren.
- Remove the flags that disable it.
- Remove the overloads for print() with different arity. (It was an
experiment, but I don't think it's that useful.)
- Remove IO.read(). That will reappear using libuv in the CLI at some
point.
- Remove IO.time. Doesn't seem to have been used.
- Update all of the tests, docs, etc.
I'm sorry for all the breakage this causes, but I think "System" is a
better name for this class (it makes it natural to add things like
"System.gc()") and frees up "IO" for referring to the CLI's IO module.
2015-09-15 07:46:09 -07:00
Bob Nystrom
66b89a493f
Combine io.c and vm.c.
...
(This is mainly to free up io.c as a built in module.)
2015-09-13 22:29:47 -07:00
Bob Nystrom
ea5c3b01eb
Add module for Scheduler.
...
Also reorganizes some code to make it easier to add more modules.
2015-09-13 11:32:39 -07:00
Bob Nystrom
f36a795534
Automatically update the string constants when a builtin module changes.
2015-09-13 10:03:02 -07:00
Bob Nystrom
e1cf8e22c3
Merge pull request #300 from jesskay/patch-1
...
Correct platform.system() call
2015-09-12 10:45:18 -07:00
Bob Nystrom
1a27593993
Error if a class tries to inherit from null.
...
Fix #246 .
2015-09-12 10:14:04 -07:00
Bob Nystrom
e1f979e78a
Don't use string length in map benchmark (since it's slow now).
2015-09-12 09:59:30 -07:00
Bob Nystrom
92c2b2d5e0
Copy edit the string docs.
2015-09-12 09:42:31 -07:00
Bob Nystrom
fe143644b3
Rationalize string lengths.
...
The .count getter on string returns the number of code points. That's
O(n), but it's consistent with the rest of the main string API.
If you want the number of bytes, it's "string".bytes.count.
Updated the docs.
Fixes 68. Woo!
2015-09-11 21:33:26 -07:00
Bob Nystrom
c0b5ec9f15
Move codePointAt() to separate CodePointSequence class.
2015-09-11 07:56:01 -07:00
Bob Nystrom
bda9ad880a
Flesh out string byte handling a bit:
...
- Get rid of public byteAt(_) method on strings. It's redundant and
longer than .bytes[_].
- Implement bytes.count natively so it's O(1).
2015-09-10 23:52:18 -07:00
Bob Nystrom
adcb5bccba
Simplify emitConstant().
...
Thanks, Michel!
2015-09-09 06:44:26 -07:00
Bob Nystrom
1df7565bb9
Fix bug in passing a range as the string subscript.
2015-09-08 20:59:47 -07:00
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