Commit Graph

1249 Commits

Author SHA1 Message Date
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
720c03cf49 Add System.gc(). 2015-10-24 10:56:27 -07:00
f145662158 "Auxiliary" -> "optional".
Fixes #309.
2015-10-24 09:23:25 -07:00
545a4cbf7e Style example output and errors in the docs. 2015-10-18 15:56:52 -07:00
2174ff31e7 Merge pull request #308 from iwillspeak/master
Add Will Speak to Authors File
2015-10-18 10:35:14 -07:00
bc1de6d9b1 Add Will Speak to Authors File
Add my name to the authors file.
2015-10-18 10:56:11 +01:00
30e7d9e508 Move core.wren to be next to wren_core.wren.inc. 2015-10-17 22:17:10 -07:00
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
3ca480cbf4 Merge branch 'master' of https://github.com/iwillspeak/wren into iwillspeak-master 2015-10-17 20:07:52 -07:00
a3f3e3ce03 Don't try to run the guess_number example from the test script. 2015-10-17 13:29:50 -07:00
2c5926b32b Add guess a number example. 2015-10-17 11:19:25 -07:00
5d6ed0958c Use explicit constant for 2**53. 2015-10-17 11:07:13 -07:00
8436ce1934 Add a random module. 2015-10-17 11:03:15 -07:00
d45c0d7f82 Add Support for \U Style Unicode Escapes
This allows fuky things such as 🚀 and 😀 to be Direclty encoded in
Wren strings.
2015-10-17 10:35:46 +01:00
49601e67c5 Don't require nonstandard __builtin_unreachable() in UNREACHABLE().
Fix #304 (I hope).
2015-10-16 21:51:30 -07:00
29eebe4928 Tweak libuv.py a bit. 2015-10-16 21:33:22 -07:00
82d6453a7e Merge branch 'master' of https://github.com/ppearson/wren into ppearson-master 2015-10-16 21:24:22 -07:00
d431c2eaa8 Start sketching in support for reading from stdin. 2015-10-16 21:05:24 -07:00
c714c53c83 "Library" -> "module". 2015-10-15 19:38:25 -07:00
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
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
06a4e00f31 Store the module debug path in the ObjModule.
Thanks, Michel!
2015-10-14 07:37:13 -07:00
8980d34ee5 Only close an upvalue for a local if there actually is one for it. 2015-10-08 08:06:29 -07:00
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
e968b4bf98 Fix two typos in the docs. 2015-10-03 21:45:59 -07:00
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
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
e41d9eac7c Tweak the embedding docs a bit. 2015-10-02 21:25:55 -07:00
d61d7fd5b4 Don't pass fiber explicitly to primitives.
Thanks, Michel!
2015-10-02 07:51:12 -07:00
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
bacbd85543 Add .isInfinity and .isInteger to Num. 2015-09-30 08:41:43 -07:00
5129597c63 Unify PRIM_ERROR and PRIM_RUN_FIBER. 2015-09-30 07:32:39 -07:00
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
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
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
52b1b7698f Modified libuv.py file to be able to work with Python 2.6 2015-09-24 21:05:08 +12:00
a944ead5b4 Give the docs some love. 2015-09-22 21:19:38 -07:00
505b48fdac Add a real Pygments lexer for Wren (finally!). 2015-09-22 07:59:54 -07:00
36f7d74183 Unify "script" and "project" under "util". 2015-09-22 07:45:58 -07:00
2f9ba2beaa Merge branch 'buildfix' of https://github.com/krypt-n/wren into krypt-n-buildfix 2015-09-21 19:48:08 -07:00
f6083b1756 Simplify how built-in foreign methods and classes are wired up. 2015-09-21 07:58:39 -07:00
9c92d90374 Use python2 executable for libuv buildscripts
Fixes build for systems with python == python3, as long as a python2
executable exists
2015-09-20 00:49:29 +02:00
8ef4ea6186 Allow super calls in static methods. 2015-09-19 15:19:41 -07:00
19f70b4035 Simplify and optimize how keywords are lexed. 2015-09-17 20:51:24 -07:00
dc527c8d86 Add "io" module with beginnings of a File class. 2015-09-16 07:34:49 -07:00
251752fcfb Make join() require parentheses without a separator. 2015-09-16 07:15:48 -07:00
efceee4320 Let the host application control how System prints text. 2015-09-15 23:01:43 -07:00
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
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
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