1
0
forked from Mirror/wren
Commit Graph

900 Commits

Author SHA1 Message Date
1661f5368f Allow passing a value when first starting a fiber.
If the function the fiber is created from takes a parameter, the value
passed to the first call() or transfer() gets bound to that parameter.

Also, this now correctly handles fibers with functions that take
parameters. It used to leave the stack in a busted state. Now, it's a
runtime error to create a fiber with a function that takes any more
than one parameter.
2017-10-19 20:45:13 -07:00
9661a5b999 Fix a couple of bugs in the REPL.
- Not sure what was going on, but fix #456. It makes more sense for the
  REPL to invoke the compiled code as a fiber than a function anyway.

- Flush stdout before reading from stdin since System.print() no longer
  does that automatically.
2017-10-13 07:58:57 -07:00
91853a7fa9 Fix comment on foreign allocate function.
Fix #453.
2017-10-12 06:37:49 -07:00
2021e086bf Don't automatically flush on every System.write().
It's handy because it ensures writes are flushed to the terminal before
any calls to read from stdin, but it's also gratuitously slow.

Instead, added a Stdout class with an explicit flush() method that can
be called by the user.

Fix #445.
2017-10-09 07:16:05 -07:00
c4b0f83cb3 "ClassCompiler" -> "ClassInfo".
Fix #469.
2017-10-09 06:47:42 -07:00
973b43eb7f Simplify statement compiler code a little. 2017-10-08 10:47:31 -07:00
c38d97b973 Properly detect a missing "}" in a block.
Fix #429.
2017-10-08 10:03:42 -07:00
18449102e8 Parenthesize macro arguments in ALLOCATE_FLEX and ALLOCATE_ARRAY.
Fix #457.
2017-10-08 09:45:06 -07:00
fec54d5021 Avoid undefined pointer difference behavior.
Fix #458.
2017-10-08 09:42:35 -07:00
eba0b97aa2 Merge pull request #472 from KyleCharters/master
Add Num .round
2017-10-06 07:51:55 -07:00
8963a870ff Abort all fibers along a call chain when one aborts. 2017-10-06 07:39:00 -07:00
0f19984017 Merge branch '201703_bubble_exceptions' of https://github.com/JonesAndrew/wren into JonesAndrew-201703_bubble_exceptions 2017-10-06 06:58:27 -07:00
84f2252c68 Add Num .round 2017-09-20 20:27:02 -04:00
a7418d64e6 Remove obsolete comment 2017-05-29 12:02:50 -07:00
889cae5ff1 Free imported module source strings after compiling them.
Fix #430.
2017-04-08 12:38:36 -07:00
7d631276cb Catch errors in the first try() 2017-03-30 21:57:29 -04:00
417ed7aeed Add wren.hpp. 2017-03-25 10:05:33 -07:00
44a95e65c6 Set the token type after an invalid character error.
Otherwise, it still has the previous token's type. This can cause it
to get stuck in a loop in some places in the compiler.

Fix #428.
2017-03-23 21:19:20 -07:00
02bcefcbe4 Add test for user data.
Also moved the VM parameter in the error callback to be first like it
is in other callbacks.
2017-03-22 07:26:19 -07:00
907db83e1c Merge branch 'user-data' of https://github.com/foobit/wren into foobit-user-data 2017-03-22 07:12:26 -07:00
8d313be3ce Make it an error to skip or take a negative count. 2017-03-15 07:22:44 -07:00
9f93119377 Merge branch 'take_and_skip' of https://github.com/bjorn/wren into bjorn-take_and_skip 2017-03-15 07:15:00 -07:00
c84b8109a4 Tweak comments. 2017-03-15 07:10:23 -07:00
627e9edc23 Merge branch 'fix362' of https://github.com/bytemaster/wren into bytemaster-fix362 2017-03-15 07:09:31 -07:00
9fcdf3dc0a Merge branch '201703_split_replace' of https://github.com/JonesAndrew/wren into JonesAndrew-201703_split_replace 2017-03-15 07:04:56 -07:00
32aa43d1df Split and replace in wren. 2017-03-07 21:15:06 -05:00
18f8f48bb6 Docs for configuring the VM. 2017-02-12 11:04:38 -08:00
f5d9443d0a Added Sequence.take and Sequence.skip
These lazy iterator producing methods are useful when working with
arbitrary sequences and you need to skip or take some number of elements
at the start.
2017-02-10 21:43:59 +01:00
3faec25c4c Merge branch 'num-features' of https://github.com/underscorediscovery/wren into underscorediscovery-num-features 2017-01-20 07:20:55 -08:00
cdce553f5a fixed new api issue in cli 2017-01-19 22:58:52 -05:00
dc2f2d9e41 support for user defined state data associated with the WrenVM object 2017-01-19 22:54:25 -05:00
5ddd783ff5 Use strtoll() for hex literals to handle 64-bit ones even on 32-bit. 2017-01-12 21:53:21 -08:00
33a73ef1d5 Avoid using fpclassify() to detect infinity and nan.
It's not supported in C++98. Instead, use isnan() and isinf(), which
seem to work? If nothing else, they are used elsewhere in Wren, so if
we're not going to use them here, we should fix the other places too.
2017-01-12 21:34:11 -08:00
e8dfb1bf10 Don't test bitwise operations on operands that don't fit in u32.
The current behavior is undefined in C when converting the double to a
u32, so the tests fail on some compilers. For now, I'm just removing
those parts of the tests because I'm not sure what I want the behavior
to be. Modulo? Truncate? Runtime error?
2017-01-12 21:32:50 -08:00
04a7c9b5c8 Improve Travis Build & Test Coverage
Build Wren for more targets, and run the test suite on both 32 and 64
bit builds.

 * Update the build config to test both with and without NAN_TAGGING
   defined.

 * Updatest `util/test.py` to take the executable suffix as a
   parameter. This allows the makefile to control which binaries will be
   tested.

   Adds a new target to the makefile to be run by travis, this runs the
   test suite against all of the configurations it builds.

 * Gcc on some 32 bit platforms was complaining about numeric overflows
   when -INFINITY was used. Update the logic for converting a double to
   a string to not explicitly check against the literal values.

 * Make CI builds run the tests on both 64 _and_ 32 bit builds.

 * If I limit the number of CPUs on my MBP I can get some of the tests
   to time out, I'm imagining that the specs of the Travis Macs means
   that the same is happening there too. Updated the test script to
   allow an extra few seconds for the test to complete successfully
   before killing it.

 * Due to slight differences in accuracy in some computations tests were
   failing on 32 bit builds. Stop comparing things quite as exactly in
   the cases where it is causing issues.

   For some reason 12.34 was refusing to compare equal to itself. Bad
   show 12.34 :-/. I've also updated the test so it doesn't leak handles
   even if the assertions fail.

 * Double-cast from `double` to `uint32_t` to prevent undefined
   behaviour on overflow of basic integers. This should hopefully
   prevent 32 bit test failures on Linux.

 * Move to a version of LibUV with a fix for the 32 bit build error on
   Travis.
2016-12-29 17:52:38 +00:00
cefb50f944 Fix Bug in GC Reallocation Calculation
Updates the way we calculate thenext GC to make sure that we're not
already past the threshold. This was causing endless garbage collections
on 32 bit builds in `test/language/deeply_nested_gc.wren`.
2016-12-29 17:52:38 +00:00
b9f53f71fb Reset API stack a fiber is aborted from wrenCall(). 2016-11-01 08:40:16 -07:00
51e50e6cc4 Free libuv data before resuming after an error. 2016-11-01 08:39:30 -07:00
a2868913c5 Add .log to Num 2016-10-31 17:22:32 -02:30
955e92761d Add .pow(_) to Num 2016-10-31 17:22:13 -02:30
a3aaad83ea Fix bug #362 calling Foreign methods
I assume that invoking callForeign that the apiStack should be restored
to it's original value, rather than reset to NULL.
2016-10-26 13:51:29 -04:00
e7cabbb5e4 Reset the API stack after a foreign constructor returns. 2016-08-28 08:23:27 -07:00
d331cbf43d Ensure macro parameter is parenthesized. 2016-08-27 21:44:39 -07:00
b59eeaf2d1 Support "--version" in the CLI to print the version. 2016-08-27 17:38:14 -07:00
09ef904d32 Use DBL_MIN instead of DBL_EPSILON for Num.smallest. 2016-08-27 17:25:32 -07:00
b8b0f36521 Merge branch 'num-properties' of https://github.com/Nelarius/wren into Nelarius-num-properties 2016-08-27 17:18:21 -07:00
a8cf1c9d71 Const correct a couple of functions.
Thanks, Michel!
2016-08-16 07:43:54 -07:00
febb1b0437 Use a map to check for constant collisions.
Doing an O(n) lookup was too slow.
2016-08-16 07:43:34 -07:00
08eceb7382 Check for duplicates when adding constants.
This saves a little memory, but, more importantly, allows us to support
functions with large numbers of repeated constants.
2016-08-16 07:24:04 -07:00
50fa77356e Add largest, smallest properties to Num class 2016-08-04 21:15:55 +03:00