Commit Graph
100 Commits
Author SHA1 Message Date
Bob Nystrom b32c445f96 Show constructing "blondie" instance in functions doc.
Fix #432.
2017-03-23 21:22:07 -07:00
Bob Nystrom 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
Bob Nystrom 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
Bob Nystrom 907db83e1c Merge branch 'user-data' of https://github.com/foobit/wren into foobit-user-data 2017-03-22 07:12:26 -07:00
Bob Nystrom 8d313be3ce Make it an error to skip or take a negative count. 2017-03-15 07:22:44 -07:00
Bob Nystrom 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
Bob Nystrom c84b8109a4 Tweak comments. 2017-03-15 07:10:23 -07:00
Bob Nystrom 627e9edc23 Merge branch 'fix362' of https://github.com/bytemaster/wren into bytemaster-fix362 2017-03-15 07:09:31 -07:00
Bob Nystrom 9efb18bae2 Typo: "seperator" -> "separator". 2017-03-15 07:06:07 -07:00
Bob Nystrom 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
Bob Nystrom 860e596b8a Test wrenSetSlotNull(). 2017-03-03 07:57:50 -08:00
Bob Nystrom f14d13a6bf Mention libm in docs. 2017-03-02 07:17:03 -08:00
Bob Nystrom 22ae382ac5 Proofread configuring the VM. 2017-02-12 14:58:16 -08:00
Bob Nystrom 18f8f48bb6 Docs for configuring the VM. 2017-02-12 11:04:38 -08:00
Bob Nystrom 996a607026 More work on embedding docs.
- Revise the earlier pages and tighten them up some.
- Write the docs for foreign methods.
2017-02-12 10:14:37 -08:00
Bob Nystrom 4fe3ad3f8b Docs for Num.log and Num.pow(). 2017-01-20 07:24:46 -08:00
Bob Nystrom 3faec25c4c Merge branch 'num-features' of https://github.com/underscorediscovery/wren into underscorediscovery-num-features 2017-01-20 07:20:55 -08:00
Bob Nystrom c6eb0be990 Remove the negative number tests for bitwise not.
They were inadvertently relying on undefined behavior in C and we get
different results on some compilers.

Until we decide how we want the operation to behave, for now, just
leave it unspecified.
2017-01-12 22:17:33 -08:00
Bob Nystrom d301fefac2 Add a comment explaining the ci targets. 2017-01-12 21:55:35 -08:00
Bob Nystrom 5ddd783ff5 Use strtoll() for hex literals to handle 64-bit ones even on 32-bit. 2017-01-12 21:53:21 -08:00
Bob Nystrom 0cc00c41c0 Simplify test runner output a little. 2017-01-12 21:38:06 -08:00
Bob Nystrom 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
Bob Nystrom 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
Bob Nystrom 252265c80b Merge branch 'travis-build-configurations' of https://github.com/iwillspeak/wren into iwillspeak-travis-build-configurations 2017-01-12 20:19:52 -08:00
Bob Nystrom f03647cbf0 Merge branch 'gc-32-bugfix' of https://github.com/iwillspeak/wren into iwillspeak-gc-32-bugfix 2017-01-12 18:53:14 -08:00
Bob Nystrom 479ca7ec6d Improve explanation of single-expression blocks.
Fix #390.
2017-01-12 11:05:03 -08:00
Bob Nystrom 0a2bc4a8a7 More copy editing. 2017-01-12 07:11:01 -08:00
Bob Nystrom fc6a7e5d18 Tweak some docs a little. 2017-01-12 07:10:19 -08:00
Bob Nystrom b9f53f71fb Reset API stack a fiber is aborted from wrenCall(). 2016-11-01 08:40:16 -07:00
Bob Nystrom 51e50e6cc4 Free libuv data before resuming after an error. 2016-11-01 08:39:30 -07:00
Bob Nystrom 57f34fab95 Fix assignment test. 2016-10-08 10:51:19 -07:00
Bob Nystrom e7cabbb5e4 Reset the API stack after a foreign constructor returns. 2016-08-28 08:23:27 -07:00
Bob Nystrom d331cbf43d Ensure macro parameter is parenthesized. 2016-08-27 21:44:39 -07:00
Bob Nystrom b59eeaf2d1 Support "--version" in the CLI to print the version. 2016-08-27 17:38:14 -07:00
Bob Nystrom 09ef904d32 Use DBL_MIN instead of DBL_EPSILON for Num.smallest. 2016-08-27 17:25:32 -07:00
Bob Nystrom b8b0f36521 Merge branch 'num-properties' of https://github.com/Nelarius/wren into Nelarius-num-properties 2016-08-27 17:18:21 -07:00
Bob Nystrom 0a4f1b370c Revise embedding docs a bit. 2016-08-26 07:11:50 -07:00
Bob Nystrom a8cf1c9d71 Const correct a couple of functions.
Thanks, Michel!
2016-08-16 07:43:54 -07:00
Bob Nystrom 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
Bob Nystrom 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
Bob Nystrom 500c7b0426 Add List constructors to docs. 2016-08-04 06:28:41 -07:00
Bob Nystrom 3666eae013 Tweak new list constructors.
- Remove List.new(_). I was convinced by the issue discussion that
  using it is probably a bad idea. We don't want to encourage more nulls
  in the world than there are already are. So let's see if we can live
  without it and just have List.filled(). That way users think about
  what they're creating a list *of*.
- Added some more tests.
- Correctly handle being given a negative size.
2016-08-03 22:42:31 -07:00
Bob Nystrom 3de394e8a1 Merge branch 'new-list-constructors' of https://github.com/mooxen/wren into mooxen-new-list-constructors 2016-08-03 22:34:08 -07:00
Bob Nystrom 6845328661 Tweak String.indexOf(_,_) a bit.
- Simplify the arithmetic a little in wrenStringFind().
- Allow the start to be negative.
- Even more tests.
- Docs.
2016-08-03 22:19:34 -07:00
Bob Nystrom e5dce527ac Merge branch 'string-indexof-startindex' of https://github.com/underscorediscovery/wren into underscorediscovery-string-indexof-startindex 2016-08-03 21:51:46 -07:00
Bob Nystrom 83bb043327 Merge branch 'forgotten-bytecode' of https://github.com/minirop/wren into minirop-forgotten-bytecode 2016-08-03 21:45:09 -07:00
Bob Nystrom 60a0353a27 Tweak list C API:
- Rename "size" -> "count" to be consistent with other usage.
- Remove "Slot" from the function names, since that's implicit.
- Make the getListElement() just move the element to another slot. This
  matches other APIs where we distinguish accessing a value and
  converting it to some specific type.
2016-07-28 08:06:36 -07:00
Bob Nystrom b8675e2d91 Merge branch 'get_slot_list_values' of https://github.com/dradtke/wren into dradtke-get_slot_list_values 2016-07-28 07:53:19 -07:00
Bob Nystrom 5418e4f8f3 Add MapEntry to core to let maps be directly iterated.
Fix #372.
2016-07-06 07:17:07 -07:00
Bob Nystrom fcfb053dc1 Merge branch 'verbose-make' of https://github.com/bfontaine/wren into bfontaine-verbose-make 2016-07-06 06:51:12 -07:00
Bob Nystrom d7524898dc Merge pull request #376 from paulsapps/master
Fix build, return false instead of NULL
2016-07-06 06:46:35 -07:00
Bob Nystrom 0837917307 Use a hash function for numbers that doesn't tend to zero low bits.
Just pulling the raw words out of a double means integers often map to
hashes with zero low bits. Then when we map that to an entry in the map,
all small integers end up in entry zero, leading to tons of collisions.

This mixes the bits around some like Java does to fix that.

Makes the map_numeric benchmark about 18% faster on my machine. On a
contrived benchmark that just uses keys up to 1000, this makes it 52x
(yes, *times) faster.
2016-06-27 08:13:45 -07:00
Bob Nystrom 4e94195f26 Properly handle tombstones when inserting items into a map.
Previously, you could get into a state where a key was present in the
map, but after a tombstone in the probe sequence. If they key was added
again, it stopped at the first tombstone and added it there, resulting
in the key being in the map multiple times.

Fix #373.
2016-06-27 07:14:52 -07:00
Bob Nystrom bc29f43bbd Allow hosts with no module loader to still load optional modules.
If the host doesn't set a loadModuleFn at all in the config, it should
still be able to load random, meta, etc.
2016-06-27 07:08:08 -07:00
Bob Nystrom 9c3163d533 Only reset the TTY if we created the stdin stream. 2016-06-09 19:16:41 -07:00
Bob Nystrom 6ece314863 Reset the TTY before closing the underlying stdin stream. 2016-06-09 19:16:41 -07:00
Bob Nystrom 33cf8f7b31 Fall back to a simpler REPL if it seems like ANSI escapes won't work. 2016-06-09 19:16:41 -07:00
Bob Nystrom f47e128978 Tab-completion in REPL based on module variables. 2016-06-09 19:16:41 -07:00
Bob Nystrom 98514188b0 More shortcuts:
- Ctrl-B: Move cursor left.
- Ctrl-F: Move cursor right.
- Ctrl-K: Delete everything after cursor.
- Ctrl-L: Clear screen.
- Ctrl-U: Clear line.
- Ctrl-N: Next in history.
- Ctrl-P: Previous in history.
2016-06-09 19:16:41 -07:00
Bob Nystrom 2ba264bc29 Add history to REPL. 2016-06-09 19:16:41 -07:00
Bob Nystrom bc7f1de758 Execute input in the REPL.
Guesses whether the input is an expression or statement and handles it
appropriately. Finally, after over a year, the Wren REPL automatically
prints "3" if you type in "1 + 2". \o/
2016-06-09 19:16:41 -07:00
Bob Nystrom 689cd42269 Start writing the REPL in Wren.
It doesn't actually execute code yet, but it:

- Supports left and right arrow keys for moving the cursor.
- Ctrl-C, Ctrl-D, Ctrl-A, and Ctrl-E for navigating.
- Syntax highlights the line (!).

The next step is to do a rough parse so that we can tell if the line
is an expression, statement, or needs more input. That will tell us
whether we need to interpret it at the top level (statement) and not
worry about a result, evaluate it as an expression and print the result,
or read more lines.
2016-06-09 19:16:41 -07:00
Bob Nystrom 59e9eb127e Add wrenAbortFiber().
Thanks, @underscorediscovery!
2016-06-09 19:14:21 -07:00
Bob Nystrom 8657a42c21 Merge pull request #366 from underscorediscovery/patch-2
fix range docs to introduction
2016-05-27 07:23:41 -07:00
Bob Nystrom 78deace9a4 Merge pull request #365 from underscorediscovery/patch-1
docs; iterator protocol link relative to core/ not modules/
2016-05-27 07:23:07 -07:00
Bob Nystrom 2b0878ec6d Platform.isWindows. 2016-05-21 12:53:21 -07:00
Bob Nystrom 6002cc4d65 Add Stdin.isTerminal. 2016-05-21 12:51:11 -07:00
Bob Nystrom 06731f66d4 Add a Platform class.
- Rename the "process" module to "os".
- Add Platform to it.
- Static "name" method.
- Static "isPosix" method.
- Docs and tests!
2016-05-21 12:44:17 -07:00
Bob Nystrom 6bcc64eb61 Wren 0.1.0!
There's nothing new in this "release", but now is as good a time as any
to start versioning. Going forward, I plan to do periodic releases and
update the changelog so users can see what's going on.
2016-05-21 10:53:05 -07:00
Bob Nystrom 0a060a9678 WrenValue -> WrenHandle. 2016-05-20 20:55:28 -07:00
Bob Nystrom 5d98d20175 Add Stdin.isRaw. 2016-05-20 15:19:18 -07:00
Bob Nystrom 500dd41ccd Add Stdin.readByte(). 2016-05-20 11:50:14 -07:00
Bob Nystrom 872cfdcd42 Mention the subreddit on the community docs.
Fix #360.
2016-05-20 10:02:57 -07:00
Bob Nystrom 1d252d1970 First draft of docs for calling Wren from C. 2016-05-19 16:01:54 -07:00
Bob Nystrom d64af5d6a5 Fix output formatting in Firefox. 2016-05-19 09:30:38 -07:00
Bob Nystrom befe90501b Start writing comprensive embedding docs.
- Break embedding out into a separate section with multiple pages.
- Document the constraints on the API.
- Document the slot array and WrenValue.

Still lots more to do, but getting there...
2016-05-16 08:09:14 -07:00
Bob Nystrom 856390c3fa Merge pull request #357 from hoop33/master
Fix typo
2016-05-04 13:29:59 -07:00
Bob Nystrom 2ce5913501 Correctly count subscript parameters in wrenMakeCallHandle().
Fixes #351.
2016-05-04 06:29:44 -07:00
Bob Nystrom 3b7446738c Merge pull request #354 from ElFeesho/master
Fix typos and re-word explanation of gc heapGrowthPercentage
2016-05-03 12:27:16 -07:00
Bob Nystrom 2f066f0b66 Merge pull request #355 from hoop33/master
Fix typo
2016-05-03 12:26:39 -07:00
Bob Nystrom 33ce3677f3 Merge pull request #353 from radarhere/patch-1
Fixed typo
2016-05-03 10:19:10 -07:00
Bob Nystrom 94eb22cd9d Merge pull request #348 from crimsun/patch-1
Clarified grammatical inversion
2016-05-02 21:54:42 -07:00
Bob Nystrom 020b1b7661 Merge branch 'master' of https://github.com/munificent/wren 2016-05-02 16:23:56 -07:00
Bob Nystrom 66e7def128 Style nits. 2016-05-02 16:23:52 -07:00
Bob Nystrom 1f37068b39 Oops, correct year that C++ was standardized. 2016-05-02 16:23:08 -07:00
Bob Nystrom 18b638b797 Merge pull request #347 from ianmackenzie/patch-1
Fix small typo in method call documentation
2016-04-15 10:13:54 -04:00
Bob Nystrom 694186810b Test that multiple closures of the same code are unequal. 2016-03-26 14:22:38 -07:00
Bob Nystrom 6dc4286ffa Always wrap functions in closures.
This has a couple of pros:

- It simplifies some code that used to have to check whether a called
  thing is a bare function or a closure.
- It's faster because we don't need to do the above checks every time
  something is called.
- It lets us more precisely type some fields that used to be Obj*
  because they could hold an ObjClosure* or ObjFn*.

The cost is that we allocate a closure every time a function is
declared, even if it has no upvalues. Since functions are called way
more often than they are declared, this is still a net win.

On my Mac laptop:

api_call - wren            0.06s 0.0020 104.73%
api_foreign_method - wren  0.32s 0.0040 101.89%
binary_trees - wren        0.23s 0.0057  98.82%
binary_trees_gc - wren     0.79s 0.0170  98.46%
delta_blue - wren          0.13s 0.0031 101.36%
fib - wren                 0.23s 0.0038 103.15%
fibers - wren              0.04s 0.0017  98.97%
for - wren                 0.08s 0.0017 107.81%
method_call - wren         0.12s 0.0024  98.60%
map_numeric - wren         0.31s 0.0052 103.93%
map_string - wren          0.11s 0.0113  97.97%
string_equals - wren       0.20s 0.0023 107.75%
2016-03-26 14:00:17 -07:00
Bob Nystrom a5f95b90e9 Lazy load optional libraries and let the host override them. 2016-03-17 07:49:43 -07:00
Bob Nystrom 984fa1ddd1 Use errorFn for runtime errors. 2016-03-17 07:17:03 -07:00
Bob Nystrom 66b7acd862 Remove unneeded includes. 2016-03-17 07:04:09 -07:00
Bob Nystrom c5855a6fe9 Squashed commit of the following:
commit f93ec6430f9629b5a28765a3961379d1e8296e50
Author: Bob Nystrom <robert@stuffwithstuff.com>
Date:   Wed Mar 16 08:03:25 2016 -0700

    Tiny tweaks.

commit 332a08fe33cddffec82dbd377ee0c941a0066f64
Merge: a673981 14b7a08
Author: Bob Nystrom <robert@stuffwithstuff.com>
Date:   Wed Mar 16 08:01:00 2016 -0700

    Merge branch 'errorFn' of https://github.com/ppvk/wren into ppvk-errorFn

commit 14b7a086ce3dae1b12697319bc2894048fad469f
Author: Paul VanKeuren <paul.vankeuren@gmail.com>
Date:   Tue Mar 15 11:33:37 2016 -0500

    missing semicolon, accessing vm through parser in

commit 924eaa1f9d3fbb26dc07d3ac8be7dc00287138d9
Author: Paul VanKeuren <paul.vankeuren@gmail.com>
Date:   Tue Mar 15 11:25:32 2016 -0500

    fixed missing errorFn in wren.h

commit 3761df111f9dce3bd67407754675c9efbbf2c0b4
Author: Paul VanKeuren <paul.vankeuren@gmail.com>
Date:   Tue Mar 15 11:23:51 2016 -0500

    Added an errorFn to the CLI

commit d51137b4abe339a3f07d7e2f4c5ee0d8d062a009
Author: Paul VanKeuren <paul.vankeuren@gmail.com>
Date:   Tue Mar 15 11:21:16 2016 -0500

    Added a WrenErrorFn typedef, an errorFn slot in WrenConfiguration.  exits early if  is not defined, otherwise it runs the errorFn .
2016-03-16 08:04:03 -07:00
Bob Nystrom a6739819b2 Report undefined variable errors on the line where they are used.
This also more importantly ensures the error message for one has a
bounded length even if the variable name is pathologically long.
2016-03-16 08:00:28 -07:00
Bob Nystrom 1478d6b7e2 Add a few comments. 2016-03-16 07:27:03 -07:00
Bob Nystrom 6f0ee7e52b Merge branch 'master' of https://github.com/RallyTronics/wren into RallyTronics-master 2016-03-16 07:23:24 -07:00
Bob Nystrom 678051c5e1 Tweak makefile formatting. 2016-03-16 07:22:18 -07:00
Bob Nystrom 38699e3a81 Rearrange the code a bit for duplicate method detections. 2016-03-15 07:15:55 -07:00
Bob Nystrom c1cea30131 Merge branch 'no-duplicate-methods' of https://github.com/Qard/wren into Qard-no-duplicate-methods 2016-03-15 06:54:49 -07:00
Bob Nystrom 001db02c81 Remove unused DUP opcode. 2016-03-13 22:11:21 -07:00
Bob Nystrom 22a95265f2 Simplify the formatting used to print compile errors.
Avoids using multiple calls to fprintf() to print a single compile
error. This should make it easier to allow the host to provide a
callback function to print errors.
2016-03-11 21:30:54 -08:00