cwal

All files named ”s2/s2.h”
Login

All files named ”s2/s2.h”

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

History for s2/s2.h

2022-01-21
06:35
Renamed to include/wh/cwal/s2.h. Got s2sh and s2sh2 building. Moved public s2 headers into include/wh/cwal. check-in: [4eca93fd0b] user: stephan branch: build-reorg, size: 0 )
2021-10-22
03:12
Ported in recent cwal_printf() additions from libfossil. Updated doxygen config to enable markdown. Patched several doc complaints from doxygen. file: 2f5e7bd780 check-in: [26f500e220] user: stephan branch: trunk, size: 221685 )
2021-07-26
05:30
Added s2 pragma(rc IDENTIFIER). file: 8029077d8c check-in: [2da6fedf35] user: stephan branch: trunk, size: 221775 )
2021-07-24
04:27
Changed cwal_size_t to cwal_midsize_t in s2_strftime() signature. file: b513f15eba check-in: [52105c3d0f] user: stephan branch: trunk, size: 221787 )
2021-07-12
14:22
Removed part of s2_config.h.in which had no effect in the amalgamation build. Updated a reference to C89/C99 compatibility. file: e08a1ca037 check-in: [c8a55be2fc] user: stephan branch: trunk, size: 221757 )
2021-07-11
22:27
Minor doc tweak to previous commit. file: 089451de3b check-in: [2825316e10] user: stephan branch: obase-isa-hash2, size: 221951 )
22:06
CWAL_OBASE_ISA_HASH is mostly implemented and seems to basically work, but cwal_hash_take_props() still has to be reimplemented. file: 93c35d43c4 check-in: [273b214789] user: stephan branch: obase-isa-hash2, size: 221911 )
2021-06-26
11:27
Renamed s2/*.c to remove the extraneous s2_ prefix. Unrelated touchups in t10n/*. file: 691b7893f1 check-in: [3311efa964] user: stephan branch: trunk, size: 221820 )
11:09
s2 internals: one tiny step towards eventually switching to a different token impl. file: a3788e1848 check-in: [c6541e0c36] user: stephan branch: trunk, size: 221823 )
09:30
Removed s2_rc_cstr() and s2_rc_cstr2(), now that we have cwal_rc_cstr_fallback(). file: f5c5971ce3 check-in: [9bb5de51f2] user: stephan branch: trunk, size: 221823 )
08:16
Added cwal_rc_cstr_fallback() to allow us to get rid of s2_rc_cstr() so that being-factored-out t10n/c9n code can make use of cwal_rc_cstr() to report non-core-cwal result code strings. s2 now registers a fallback for its S2_RC_xxx codes. file: ba6ebf54bf check-in: [e679463d26] user: stephan branch: trunk, size: 222326 )
2021-06-25
22:30
Initial go at removing s2_error class, now that that's been moved over to cwal_error. Seems to work but needs more testing to ensure that script location information is still correct when reporting errors. Also (only remotely related) removed the c9n-related bits from s2/ since that work is now going on over in t10n/. file: 1eb0fa20f0 check-in: [d69c75ff2a] user: stephan branch: s2-remove-err-obj, size: 221663 )
2021-06-24
07:47
More work on the standalone t10n/c9n subsystem. file: dc8dd3ce0c check-in: [24029cb1d9] user: stephan branch: trunk, size: 226728 )
05:25
Ported much of the s2_error infrastructure to cwal_error in the core lib for use by the pending t10n/c9n modules (and similar code). file: 965f023a28 check-in: [3d41e2d40f] user: stephan branch: trunk, size: 226728 )
04:30
Initial work as splitting s2's tokenization bits into a standalone sub-lib which depends only on cwal, not s2. file: a95efd0fab check-in: [241d125806] user: stephan branch: trunk, size: 226727 )
2021-03-25
00:41
Doc typo fix. file: 6bdcc63670 check-in: [1a3480115a] user: stephan branch: trunk, size: 226725 )
2020-08-29
07:27
Removed nameLen member from the s2 tokenizer classes (over-engineering). More tweaking of the c9n bits but a path to consolidating them with t10n in s2_eval is no clearer now than it was a month ago. It might be time to fork off s2.5 or some such and port s2_eval.c over to c9n. Or maybe we could use a higher-level tokenizer/token abstraction to consolidate the two, rather than trying to hide c9n behind t10n. file: 711378420e check-in: [711c9c3123] user: stephan branch: trunk, size: 226723 )
2020-08-27
10:43
Split S2_T_Heredoc (new) from the previously dual-nature S2_T_SquigglyBlock, which previously represented both {...} and heredocs, for historical tokenizer-level reasons. file: d5ab4a1abf check-in: [a0266ba0e4] user: stephan branch: s2-c9n-baby-steps, size: 226584 )
2020-04-24
07:04
Added s2_is_dir(), s2_mkdir(), s2_mkdir_p(), s2.fs.mkdir(), and s2.fs.dirIsAccessible(). file: 335e64f365 check-in: [6e75e23d9d] user: stephan branch: trunk, size: 226434 )
2020-02-27
23:05
Added s2.json.clone(). file: 15fe519713 check-in: [bfc518b40b] user: stephan branch: trunk, size: 223379 )
2020-02-21
04:21
s2 enums are now always hashes, instead of schizophrenic hashes/objects. This required a few minor changes, e.g. typeinfo(ishash/hashash) no longer eval to true for enumcs, and anEnum.# now works. Testing uncovered an unrelated assertion failure caused by a stale s2_engine::opErrPos pointer (fixed). file: 78aa1535a0 check-in: [c46a39fd75] user: stephan branch: trunk, size: 223071 )
2020-02-18
10:10
Added s2.ob.capture(). Should have done that years ago. Incidental internal cleanups in the OB layer. file: 523d2283dd check-in: [6df4b9a581] user: stephan branch: trunk, size: 222722 )
2020-02-10
12:07
Cleanups in the define()-related API docs and error reporting. file: 4182d920fb check-in: [ca44adceef] user: stephan branch: trunk, size: 221162 )
2020-02-08
17:20
Replaced s2's clampdown mode with a flags-based approach (see s2.h's s2_disabled_flags enum). Added --s2-disable=flag,names,list to s2sh/s2sh2. file: 08c9ac232b check-in: [7dbb093d4e] user: stephan branch: trunk, size: 220992 )
2020-02-03
17:15
s2_cstr_to_rc(), which drives the string-to-exception-code mechanism, e.g. exception(CWAL_RC_ERROR,...) is now O(1) instead of O(N), by applying the same hash function we use for keyword/typeinfo/pragma entries. file: f2630817fe check-in: [d244e00a8e] user: stephan branch: trunk, size: 218297 )
2020-02-02
09:00
s2: introducing "User Keywords" (UKWDs). Clients may now install constant symbols which resolve during the keyword lookup phase, so they're faster than var/const lookups, but they cost some memory and should be used judiciously to avoid a slight performance hit. Also added the define() keyword function to create them from script-space. file: 1e7c990130 check-in: [226dd49cad] user: stephan branch: trunk, size: 218365 )
2020-01-30
17:25
An effort at extending s2's constructor support to allow Functions to act as their own JS-style ctors. It basically works but cannot, due to a new level of indirection, be made to work inuitively with the inherits keyword, so the effort is being sidelined for now. file: 2fb900ecef check-in: [54451bdf90] user: stephan branch: s2-instance-prototype, size: 215947 )
2020-01-20
10:45
Added enum s2_pf_search_policy to provide symbolic names for the 3 policies. Related cleanups in code using s2_pf_search(). Added s2_home_get(). file: c60a1ddd98 check-in: [42783dfc69] user: stephan branch: trunk, size: 215706 )
00:01
Added s2_tokenize_path_to_array(). PathFinder constructor now accepts its arguments as arrays (old behaviour) or PATH-style strings (new behaviour). file: 8f88d4a83f check-in: [cfdeaaef9d] user: stephan branch: trunk, size: 214371 )
2020-01-18
19:16
Reimplemented the s2 import() function in C (was script code, so it went from 6 lines to more than 70), and added new ways to call it. file: 6d012b41fa check-in: [7af9cb2fe1] user: stephan branch: trunk, size: 212334 )
10:54
Finally added the import keyword, implemented similarly to s2out. While testing, discovered that typename/typeinfo(name) unnecessarily duplicate their strings sometimes, and patched that. file: 47e5d62d4f check-in: [56bcb9fae7] user: stephan branch: trunk, size: 211219 )
04:52
Added s2.PathFinder.tokenizePath() and related C-level APIs. file: fc391240a2 check-in: [ce2c6857e9] user: stephan branch: trunk, size: 210833 )
2020-01-16
05:24
Renamed confusingly-named S2_PRINT_OPT_RETURN_SELF flag to S2_PRINT_OPT_RETURN_CALLEE and added S2_PRINT_OPT_RETURN_THIS flag. Reordered s2_cb_print_helper() params and fixed the handling of its 3rd (formerly its 2nd) parameter to not emit a space before the first value when that argument is >0 (found by accident - that case has never actually been used). file: c3cedf8fe4 check-in: [4b6b9f39db] user: stephan branch: trunk, size: 210239 )
04:47
cwal_printf() %p now uses lower-case hex (was upper case). Efficiency hack in s2out impl: bypassed an unneeded function proxy call in s2.operator<<(). Added s2_engine::stash stats to s2sh metrics output. s2.io.output() and friends now prepend a 0x prefix when outputing a native address via the %p cwal_printf() format option. file: 6e045e05da check-in: [38c02a3714] user: stephan branch: trunk, size: 209028 )
2020-01-06
15:19
More work crawling towards compiled token chains. It's looking less and less as though it will gain us more than about 6-8% of execution speed, though, at least for the unit tests. We'll see (if the compiled version can be adequately hidden behind s2_ptoker, that is, but that's as yet uncertain). file: 0326ad24ae check-in: [a071956dca] user: stephan branch: trunk, size: 209017 )
08:49
Doc fix. Heredoc slurping now counts lines/cols as it goes. Removed a seemingly extraneous call to s2_check_interrupted(). file: ff53beccab check-in: [252ce60c8b] user: stephan branch: trunk, size: 208729 )
2019-12-31
06:26
The morning documentation rounds. file: 17c38cf3e8 check-in: [8b905c16a9] user: stephan branch: trunk, size: 208677 )
2019-12-30
16:35
Added trace-assert and trace-token-stack pragmas. Related minor refactoring, symbol renaming, and docs. file: b4c8632218 check-in: [6d39f4ad9f] user: stephan branch: trunk, size: 208314 )
07:43
Enabled s2 pragma() and added docs for it. The tokenizer now has a flag which tells it to permit '-' as a legal identifier character so that longer pragma (and, eventually, typeinfo) tags can be written like a-b-c instead of abc. (Hmmm... It might be interesting to allow those as keys in object/hash literals.) file: d3939d5c70 check-in: [439f5c71ce] user: stephan branch: trunk, size: 208537 )
2019-12-28
09:19
Found a decent way to implement custom exception types in s2. That uncovered a minor fix in s2_throw_value() and led so a bout of documentation. file: 5882f8bd64 check-in: [330a937990] user: stephan branch: trunk, size: 207840 )
2019-12-20
17:35
s2: improved error reporting for invalid \Uxxxxxxxx sequence in a string literal, which previously fatally killed scripts with no error location info. It now triggers a syntax error, which catch{} is capable of downgrading to an exception, but that behaviour is arguable because this same error is, due to the shape of the API, indistinguishable from other invalid UTF8. file: c5c5d5ba2a check-in: [e458b2a5fd] user: stephan branch: trunk, size: 206384 )
2019-12-17
02:38
Style change: globally removed commas after 'i.e.,'. file: e93670d2d8 check-in: [6100e95be2] user: stephan branch: trunk, size: 205727 )
02:36
Global style change: removed commas from 'e.g.,'. Style guides disagree on whether that comma is 'required'. IMO it just adds noise and its intent is strongly implied without requiring the comma. file: 219829ffc7 check-in: [040a1c6ac4] user: stephan branch: trunk, size: 205728 )
2019-12-12
00:32
More cleanups, some relevant to this branch, some only remotely related. This unfortunately increases the sizeof(cwal_obase) on 32-bit builds by 4 (2?) bytes, but we desperately needed more flag bits for container flags. Forgot to mention that the previous commit stole another refcount bit (7 flag bits in total). file: 0f358badff check-in: [db9f4b10f3] user: stephan branch: multi-iteration, size: 205732 )
2019-12-10
14:11
Added CWAL_CONTAINER_DISALLOW_PROTOTYPE_SET flag and CWAL_RC_DISALLOW_PROTOTYPE_SET result code, which are the prototype-set counterparts of CWAL_CONTAINER/RC_DISALLOW_PROP_SET, and applied them to s2_seal_container()-sealed objects (which includes the new s2out). Reworked s2 enum construction so that setting the prototype property there is well-defined (though probably ill-advised, and replacing enum prototypes may yet be removed as a feature). Removed some dead code. file: 262a8efa1b check-in: [9484a7e93e] user: stephan branch: trunk, size: 205815 )
11:11
Added s2out keyword, which operates the same way that s2.io.output historically has. Minor tweaks in s2.tmpl() related to handling of the output function. Added s2_eval_cstr_with_var() and s2_seal_container(), both minor restructurings related to the s2out changes. This unfortunately revealed (again) a potential shortcoming in the handling of the CWAL_CONTAINER_DISALLOW_PROP_SET flag, in that it's still possible (but probably(?) should not be) to replace s2out's prototype. file: 0bcedd8efa check-in: [394c5bbfa4] user: stephan branch: trunk, size: 205901 )
2019-12-09
09:09
Experimentally added the __using() function-like s2 keyword. file: 3a17c542bc check-in: [a009b47e67] user: stephan branch: trunk, size: 203446 )
2019-12-07
08:43
s2: Added placeholder for the potential future ?. operator. Shaved 2k memory by shrinking the default size of the function script file name hash and added a metric to count how much reuse we get from that hash. file: 9c91105f88 check-in: [8cfe21fd57] user: stephan branch: trunk, size: 203310 )
2019-09-11
20:31
Incidental internal doc touchups and removal of one unnecessary #if block. No functional changes. file: 877d91faa8 check-in: [e15d5c7b72] user: stephan branch: trunk, size: 203128 )
2019-08-03
21:33
Added array.operator+=(), which behaves like array.push() except that it returns 'this'. file: c8ff1a0cbf check-in: [332549317a] user: stephan branch: trunk, size: 202663 )
20:09
Minor internal optimization for mult./div./mod. operators. file: f90db981e3 check-in: [2265446732] user: stephan branch: trunk, size: 202549 )
2019-07-19
05:51
s2_cb_seal_object() now returns the last value passed to it. file: 1fb42e61c2 check-in: [4ae60c8413] user: stephan branch: trunk, size: 202447 )
05:47
Added s2_cb_seal_object(). Correct the setting of s2sh's history file name from the S2SH_HISTORY_FILE environment variable. file: e296aed40a check-in: [450a903bf4] user: stephan branch: trunk, size: 202379 )
2019-07-02
17:55
Minor FILE module cleanups and additions. Edit: plus unrelated s2.h doc tweaks which slipped in because their own commit failed due to a locked repo db and i didn't notice. file: 9f2ecc685c check-in: [a7e7f4ef80] user: stephan branch: trunk, size: 201761 )
17:46
Updated s2_module_load() docs to remove all obsolete references to the v1 module init interface. s2_module_init() now explicitly performs the init in a new cwal scope, so that module init routines may be willfully sloppy in their cwal_value cleanup (the script binding of loadModule() already implicitly did this, but now the C-level API explicitly does). file: 81de01e9ae check-in: [505b752863] user: stephan branch: trunk, size: 201763 )
2018-12-18
19:27
Improved configuration checks related to stat(), chdir(), getcwd(). cwal_config.h now honors HAVE_CONFIG_H to include config.h for "pre-configuration" (to potentially simplify amalgamation configuration). file: 607d22c98d check-in: [9a995d51a3] user: stephan branch: trunk, size: 201306 )
2018-11-27
14:00
More docs. Removed unnecessary s2_engine::cache::keyEnum. file: 0f3a32e326 check-in: [23b38f294a] user: stephan branch: trunk, size: 201307 )
07:38
Added doxygen support, adjusted some docs to squelch doxygen warnings, removed several deprecated functions. Edit: doh, it seems we already had the doxygen files, they were just long forgotten and i overwrote them with copies from another source tree. file: a5b9765250 check-in: [73251240a6] user: stephan branch: trunk, size: 200705 )
2018-11-26
16:42
Added s2/mod/tmpl, and other minor refactoring/tinkering in support of that. file: 6a323dde6c check-in: [75e05db982] user: stephan branch: trunk, size: 200662 )
15:27
Refactoring of the print() and s2.io.output() functions to support upcoming experiments. file: 2294c73136 check-in: [aede375051] user: stephan branch: trunk, size: 199986 )
14:39
Tinkering with recursive vacuum. TL;DR: it can work in _very limited_ circumstances, but often not enough to run it periodically (it's expensive). file: bb7a4e1185 check-in: [7010376835] user: stephan branch: trunk, size: 197977 )
12:04
Tinkering with recursive vacuuming (which breaks horribly, so it's turned off, of course). file: 2178a47c4c check-in: [151a9db261] user: stephan branch: trunk, size: 197772 )
10:40
Removed an invalid TODO. Minor formatting tweaks. The previous commit really should have been part of _this_ commit, not its own previous commit :/. file: 20fe0d3ddf check-in: [25d87ee8d3] user: stephan branch: trunk, size: 197127 )
10:24
Minor cost-correctness improvements. file: 9d6634fa73 check-in: [dea8b92b24] user: stephan branch: trunk, size: 197345 )
09:59
Improvements in various compile-time configuration checks. Added a couple s2 functions in prep for some module-related changes. file: 74ddf72e7e check-in: [bd5c8fc100] user: stephan branch: trunk, size: 197004 )
2018-11-25
14:14
s2_eval_filename() now stat()s the target and fails if it's a directory, as trying to s2.import('some-dir') leads to confusing CWAL_RC_OOM errors. file: e1e48d26ae check-in: [a9eb7376cd] user: stephan branch: trunk, size: 197449 )
2018-11-24
13:48
Added some missing API docs. file: 56ec4a0439 check-in: [aaa930bc8f] user: stephan branch: trunk, size: 197365 )
10:41
minor doc updates. file: e1086d70cb check-in: [3f54d5d346] user: stephan branch: trunk, size: 197205 )
04:43
doc updates. file: 9dfadd56fb check-in: [256023d328] user: stephan branch: trunk, size: 197050 )
2018-11-23
17:44
More docs, removed an unused struct member. file: 8733df08dd check-in: [700a499fd6] user: stephan branch: trunk, size: 197049 )
15:50
doc typo file: 84f5f435ef check-in: [e9f27c08d5] user: stephan branch: trunk, size: 194342 )
15:09
More minor cleanups and docs for the scope push/pop changes. It's ready to be merged into the trunk :). file: b15a75fe7f check-in: [92565f3d07] user: stephan branch: scope-push-pop-hooks, size: 194343 )
14:43
Snapshot. Lots of cleanup of the new s2_scope mechanism. Removed some now-obsolete s2 scope-handling functions. file: e8769d4289 check-in: [b7de2a8e38] user: stephan branch: scope-push-pop-hooks, size: 193777 )
12:26
Snapshot. The new scope push/pop mechanism is in place and working (it was tedious but surprisingly painless to do). Valgrind is happy, but there's still lots of API docs to fix, functions to rename, and memory cost comparisons with the trunk version to do. file: 6c61cb1a74 check-in: [e07567160b] user: stephan branch: scope-push-pop-hooks, size: 195473 )
09:55
Snapshot - seem to have gotten the new s2_scope infrastructure in place and working, but now comes the real work: swapping out the existing bits with this. file: ada224406f check-in: [166008b65a] user: stephan branch: scope-push-pop-hooks, size: 196804 )
00:55
doc updates, removed one dead declaration. file: faa125b55a check-in: [3d6c258964] user: stephan branch: trunk, size: 195013 )
2018-11-22
16:40
s2_install_functions() can now optionally install into the current scope, instead of just into a target container. file: 4d8e2e1b7c check-in: [bb5859d8ce] user: stephan branch: trunk, size: 193912 )
2018-11-20
10:17
Added autosetup to implement a configure script, as the module-level configuration is getting to be problematic/annoying without this level of infrastructure. There are still some integration left to clean up, but it essentially works. file: 48508bc392 check-in: [76af91a08c] user: stephan branch: trunk, size: 193814 )
03:15
Added s2.time.mstime(), doc updates, removed a small bit of dead code. file: ca74a24081 check-in: [76183e9b6d] user: stephan branch: trunk, size: 193789 )
2018-11-19
06:50
doc updates. file: f04efa78db check-in: [a200836e00] user: stephan branch: trunk, size: 191877 )
2018-10-28
10:55
Minor internal/doc touchups to s2_strftime(). file: 81463fa9af check-in: [79fe4e7ebd] user: stephan branch: trunk, size: 191735 )
2018-09-24
09:16
Added a 'time' module test. Minor internal time module modernization. file: f74c937ee2 check-in: [54bf5dbf9d] user: stephan branch: trunk, size: 191716 )
2018-09-21
11:14
Minor comment/doc tweaks. file: 98e2105c4f check-in: [b3aa740c22] user: stephan branch: trunk, size: 191339 )
2018-09-19
17:38
minor doc/comment tweaks. file: 39561bc993 check-in: [fd8df9dc5d] user: stephan branch: trunk, size: 191205 )
2018-08-16
13:02
minor doc updates. file: bc63be8b89 check-in: [3a53d544b7] user: stephan branch: trunk, size: 191205 )
2018-05-09
14:40
Build tweaks to more easily support modules which simply compile in an s2 script. Added the s2.iterate module. file: 20efd826e5 check-in: [0a93b0e69f] user: stephan branch: trunk, size: 191011 )
2018-05-08
16:50
Minor generic cleanups. file: 9439778907 check-in: [c72ba83cbe] user: stephan branch: trunk, size: 190855 )
2018-05-07
23:31
minor internal tinkering. file: dd631bd3da check-in: [9211afe535] user: stephan branch: trunk, size: 189882 )
11:22
minor doc tweaks. file: 2486094fbd check-in: [456322605f] user: stephan branch: trunk, size: 189037 )
2018-05-06
17:10
minor doc tweaks, removed some unneeded code. file: cc00b27a41 check-in: [360c4740b6] user: stephan branch: trunk, size: 188930 )
16:34
minor doc touchups. file: da1e59bb15 check-in: [9a5e7c45ea] user: stephan branch: trunk, size: 188846 )
2018-01-03
21:03
minor cleanups. file: d55adccfc2 check-in: [66a86a81d1] user: stephan branch: trunk, size: 188271 )
15:05
Removed the v1 s2 plugin init interface. file: 6d02df6283 check-in: [fa16637e69] user: stephan branch: trunk, size: 188675 )
14:06
removed some unused code. file: 39f873f5c7 check-in: [31bad6f93c] user: stephan branch: trunk, size: 193270 )
2018-01-02
04:28
generic tinkering. file: 889a248a47 check-in: [bbba146715] user: stephan branch: trunk, size: 193642 )
2018-01-01
22:05
Minor tweaks and hacks. Accidentally discovered a new category of parse errors involving certain keywords within a ternary expression, and partially "resolved" them. file: 50d5a27bb2 check-in: [972ed85e26] user: stephan branch: trunk, size: 193482 )
16:02
Far too much tweaking in the s2 loadable module bits. file: dc02cb23e1 check-in: [d9164fb176] user: stephan branch: trunk, size: 194179 )
12:54
s2 loadable module macro additions (previous commit requires this). file: 137fcf3b7c check-in: [be491bf9f5] user: stephan branch: trunk, size: 192353 )
10:51
doc tweaks. file: 19a6769d79 check-in: [12765f3bd5] user: stephan branch: trunk, size: 191909 )
2017-12-31
23:01
Spontaneously invented a 'v2' init interface for s2 loadable modules, to help consolidate how their result values are used. Still need to port most of the plugins to it, though. file: 513ff090da check-in: [ebacbcb3d6] user: stephan branch: trunk, size: 191858 )
17:46
Modularized the s2-to-C module build bits. Fixed broken static plugins (a macro resolution problem). file: 47d99b7177 check-in: [b99c040786] user: stephan branch: trunk, size: 185751 )
2017-12-28
23:39
minor internal cleanups, fixed a broken assert. file: 7ad953e985 check-in: [0e7ea6ac92] user: stephan branch: trunk, size: 185600 )
22:04
minor internal cleanups. file: 3127ab895d check-in: [15ac630931] user: stephan branch: trunk, size: 185948 )
04:43
random tinkering in the cwal_convert C++ bits. file: a3c385dc44 check-in: [9a2c2cdbf6] user: stephan branch: trunk, size: 185889 )
02:12
Added s2_set_from_script_v(). file: 614c673b52 check-in: [f784922b14] user: stephan branch: trunk, size: 185809 )
2017-12-27
19:46
Added s2_ptoker::nextToken to allow lookaheads to communicate their findings back to the s2_ptoker_next_token(), which now uses those results to skip tokenization in many cases (approx 10041 of them in the current amalgamated UNIT.s2). file: de69a310f6 check-in: [e8d43a070d] user: stephan branch: trunk, size: 185387 )
2017-12-26
17:26
more interceptor tinkering. file: 8a1b5782e0 check-in: [c468ab9e14] user: stephan branch: trunk, size: 185388 )
16:28
Cleanups and preliminary work for adding property interceptors to the core via alternative getter/setter APIs. file: 741b549b04 check-in: [ed485b7b8b] user: stephan branch: trunk, size: 185291 )
2017-12-25
12:05
insignificant internal cleanups. file: 5cf3da1d4e check-in: [3481b1494e] user: stephan branch: trunk, size: 185282 )
2017-12-12
18:12
Disabled s2 property interceptors for the time being (will likely try moving this into the cwal core at some point). file: 9a475d98e2 check-in: [7c0211d829] user: stephan branch: s2-interceptors, size: 185256 )
2017-12-07
01:40
Seem to have gotten s2 property interceptors working, but there is much, much testing and experimentation to be done (opportunities for side-effects abound). file: ac9aedfd66 check-in: [8d58c40828] user: stephan branch: s2-interceptors, size: 185254 )
2017-12-06
10:32
Refactored typeinfo(isnewing) to be able to work intuitively in subscopes within the ctor call and extended it to optionally take an expression. file: cf071864ee check-in: [d26a553167] user: stephan branch: trunk, size: 184384 )
2017-12-05
14:11
moved some functionality around. file: 3067c7736e check-in: [f52f15779b] user: stephan branch: trunk, size: 184282 )
10:11
tiny internal cleanups/typos. file: 84bf82d3ab check-in: [e5464b6a7e] user: stephan branch: trunk, size: 183642 )
2017-12-02
09:25
Added s2_trigger_exit(). file: d5d8d6fc82 check-in: [b1eae4252b] user: stephan branch: trunk, size: 183643 )
2017-12-01
15:36
Moved s2's sweep ticker from the engine to the scope, making sweep/vacuum more predictable when multiple script-side scopes are involved. file: ca0832f09b check-in: [67ba813e28] user: stephan branch: trunk, size: 182103 )
2017-11-27
15:47
Added s2_ob_reserve(). Fixed a cwal_buffer::self misuse. file: 461f838452 check-in: [dc093206a2] user: stephan branch: trunk, size: 182148 )
2017-11-24
23:23
minor s2 module tinkering. file: 14790db146 check-in: [1b0ba8a488] user: stephan branch: trunk, size: 181123 )
2017-11-16
06:52
Got basic infrastructure in place for building s2 the loadable modules as static modules which get linked directly in to s2sh. file: d07c9da10e check-in: [21be566a6f] user: stephan branch: trunk, size: 180980 )
02:38
Minor cleanups to s2's interruption handling, in prep for future changes where the signal handler sets a flag outside of s2_engine, rather than touching a specific s2_engine instance. file: 67eaf76cd9 check-in: [d739e68e06] user: stephan branch: trunk, size: 179281 )
02:00
minor notes and API renaming in prep for other changes. file: c4d2284441 check-in: [869e66b530] user: stephan branch: trunk, size: 179274 )
2017-11-15
12:32
s2 strings now support integer-key property access to access individual characters (functionally equivalent to string.charAt()). However, testing that revealed a hole in the eval-holder handling which had to be patched. file: eef400b6cf check-in: [d2dd4ed8bc] user: stephan branch: trunk, size: 178967 )
2017-11-13
20:25
typo fix file: 5c570e1b2d check-in: [46dbe59026] user: stephan branch: trunk, size: 177845 )
12:26
minor utility API renaming and additions. file: d2ae16c7bf check-in: [d8df88227b] user: stephan branch: trunk, size: 177849 )
09:38
Moved ownership of s2's eval-holder array from the eval() routine to s2_scope. This cuts allocations drastically when recycling is disabled, reducing the unit test amalgamation alloc counts by about 1/3rd and saving 1M of total alloc'd memory. The savings when recycling is on are minimal but better than nothing. file: b22f56e2a5 check-in: [61f4780ed8] user: stephan branch: trunk, size: 176335 )
08:39
Refactored s2's incr/decr operators for better ref/unref handling and readability (that's the last of them). Unrelated minor s2_engine struct refactoring. Valgrind is happy - ship it\! file: 3f7b00e99a check-in: [19787f3a50] user: stephan branch: trunk, size: 175617 )
2017-11-12
16:42
Re-enabled the "eval value holder" to work around an "interesting" value lifetime conflict until a better (less memory-costly) solution can be found (if one can - it is a tricky situation: see notes around EVAL_USE_HOLDER in s2_eval.c). file: 3dee3b4e17 check-in: [e5adf161e4] user: stephan branch: trunk, size: 175592 )
10:49
Discovered and applied gcc's -Wextra warning level, plus patched up violations it caught (mostly missing struct member initializers). file: 180b31ab81 check-in: [f13f6c3c4b] user: stephan branch: trunk, size: 175527 )
2017-11-11
18:33
minor doc additions. file: 2bd3cb804d check-in: [f0a5e26dc2] user: stephan branch: trunk, size: 174921 )
2017-11-10
20:52
Added s2.fs.fileIsAccessible() (same func as s2.PathFinder.fileIsAccessible). Doc additions for fsl_fstat() and friends. file: a4fea67331 check-in: [2b7393cc8b] user: stephan branch: trunk, size: 174814 )
2017-11-08
16:35
Added s2.shell.tokenizeLine() for potential use in upcoming(?) script code. file: fd0c59694b check-in: [f0051dbf0d] user: stephan branch: trunk, size: 174247 )
10:40
Added s2_enum_builder API to enable creation of s2 enums from C code. file: 90b4ee230a check-in: [4ea3759581] user: stephan branch: trunk, size: 172466 )
08:37
Moved filesystem-related APIs from s2.io to s2.fs. file: 59ce2c731e check-in: [474633d583] user: stephan branch: trunk, size: 168150 )
2017-11-07
13:17
doc typo fix. file: 2c7c0d4828 check-in: [d81f8f44be] user: stephan branch: trunk, size: 167731 )
13:06
imported GLOB/LIKE pattern matching from sqlite3. Added s2.glob(glob,haystack[,globStyle]). file: d43d1ca1c6 check-in: [4eac2f17a9] user: stephan branch: trunk, size: 167730 )
2017-11-03
15:16
minor doc update file: 30e21ea136 check-in: [218f657ca4] user: stephan branch: trunk, size: 165409 )
15:12
Added s2.io.chdir(). file: af6d193dc0 check-in: [bc5c9cc25c] user: stephan branch: trunk, size: 165354 )
12:01
Consolidated duplicated functionality of s2_cb_toss() and s2_cb_throw() into the latter function. file: d10efd6277 check-in: [f9ebe4a8ed] user: stephan branch: trunk, size: 164763 )
01:39
Tinkering with the module loader to try to bend things such that we can choose to link (or not) certain modules into s2sh statically. That doesn't yet work because the build process for each module can be arbitrarily complex, and hooking those in to s2sh's build would be more difficult than i'm ready/willing to futz with right now. file: 84e754747a check-in: [0ea9d180a5] user: stephan branch: trunk, size: 164647 )
2017-11-02
22:49
Added s2.io.stat() (stat(2)/lstat(2) wrapper). file: 6a231b48f7 check-in: [9166d087df] user: stephan branch: trunk, size: 163204 )
19:40
Added s2.io.getcwd() (getcwd(2) wrapper) and some beginnings of infrastructure for an eventual wrapper for stat(2)/lstat(2). file: b3162ced3e check-in: [c653066de5] user: stephan branch: trunk, size: 160816 )
2017-10-13
09:47
Added Array.filter(), imported from an old test script. file: 3902107b16 check-in: [94278945cb] user: stephan branch: trunk, size: 158752 )
2017-10-05
17:09
Merged (private) strlen-rewrite branch. This eliminates the 'length of 0 means to use cwal_strlen()' semantics from the major APIs (there may be a couple small outliers). My hands managed to survive, with the left pinky being only ever so slightly sore. file: 03220ea019 check-in: [ef477c5d1e] user: stephan branch: trunk, size: 158710 )
2017-03-23
16:15
Fixed a broken assertion, a parse error for prefix --/++, added Function.bind(), and minor tokenization reductions. file: 51bb3357e2 check-in: [09b7fbcab5] user: stephan branch: trunk, size: 158815 )
2017-03-13
01:13
incomplete and ill-thought-out tinkering for "compiling" a token chain. file: 3e5c84ccfe check-in: [a279ed9183] user: stephan branch: mistake, size: 158197 )
2016-09-11
17:53
More features and bug fixes. Made notes about known memleaks. Started preliminary tests with valgrind. file: 1ea1f5d1be check-in: [15edc81e11] user: calebg branch: s2_ffi, size: 157669 )
2016-09-02
16:16
Using the avcall lib to replicate stack frames. Works like a charm. Most primitive types aralready supported. file: 1b0d57e5a3 check-in: [133ca72aeb] user: calebg branch: s2_ffi, size: 157669 )
2016-09-01
18:15
A (VERY ALPHA) Foreign Function Interface implementation that allows calling system functions (like setenv, mount, fopen, etc) directly from s2sh. file: ceada9f9f9 check-in: [20a4347076] user: calebg branch: s2_ffi, size: 157619 )
2016-08-19
20:22
merged in s2-op-dotdot for new :: overloadable operator. file: 087feae559 check-in: [2567a4c1b8] user: stephan branch: trunk, size: 156962 )
15:46
minor API additions needed by [4ece7a7f47], minor doc tweaks. file: 740e954d95 check-in: [16d2a20ab1] user: stephan branch: trunk, size: 156850 )
2016-08-18
17:41
switched from enum..entry to enum::entry. file: 1f355c99b2 check-in: [03131fd977] user: stephan branch: s2-op-dotdot, size: 155837 )
15:20
Experimentally recycled the unused .. op to provide semantics which are a cross between the "." and "->" ops, and implemented it for enums so that (enum.entry.value) shortens to (enum..entry). file: ae260ecdb1 check-in: [68630ad3ca] user: stephan branch: s2-op-dotdot, size: 155804 )
2016-05-27
12:59
Defining _DEFAULT_SOURCE per the recommendation on this page: http://man7.org/linux/man-pages/man7/feature_test_macros.7.html
"Since glibc 2.20, this macro is deprecated. It now has the same effect as defining _DEFAULT_SOURCE, but generates a compile-time warning (unless _DEFAULT_SOURCE is also defined). Use _DEFAULT_SOURCE instead. To allow code that requires _BSD_SOURCE in glibc 2.19 and earlier and _DEFAULT_SOURCE in glibc 2.20 and later to compile without warnings, define both _BSD_SOURCE and _DEFAULT_SOURCE.
file: 79ddef5088 check-in: [69ae13ab2a] user: calebg branch: trunk, size: 155725 )
2016-03-12
11:05
Initial impl of function() using(...) {...}. file: 775b73cb35 check-in: [09e0fc4005] user: stephan branch: trunk, size: 155662 )
2016-03-05
19:28
Added UDF support to the sqlite3 module. file: d22f39d411 check-in: [41fc75d22f] user: stephan branch: trunk, size: 155666 )
15:07
A couple s2 API additions to ease porting in the sqlite3 module from libfossil. file: e04bdb36e0 check-in: [1683be45a0] user: stephan branch: trunk, size: 155624 )
2016-02-28
11:06
merged in trunk, resolved conflicts (i hope - one of them was ugly). file: cfdfb4461e check-in: [b15b89624b] user: stephan branch: s2-array-of-int-op, size: 155187 )
2016-02-25
21:42
refactored pairs as tuples (fixed-length arrays). Still need to add foreach() support. file: e0f9950f60 check-in: [5cc361ae64] user: stephan branch: cwal_value_pair, size: 154547 )
19:25
merged in trunk. file: 9333d13b8a check-in: [ec839ef681] user: stephan branch: cwal_value_pair, size: 154546 )
2016-02-17
20:36
Minor doc addition. file: f3f8374841 check-in: [da37e32731] user: stephan branch: trunk, size: 154441 )
2016-02-16
14:29
merged in trunk file: 1c90a8615a check-in: [7658116a71] user: stephan branch: cwal_value_pair, size: 154300 )
2016-02-15
19:37
wrote what turned out to be a novella on plans for/thoughts on improving s2_estack to notably improve s2's internal value ref/unref handling (now that my understanding of the intricacies ref handling in the context of temp values, in particular in conjunction with string interning (or value interning in general), has finally caught up to the code\!). file: 26d823296f check-in: [dcf19ee9c8] user: stephan branch: trunk, size: 154195 )
2016-02-14
16:46
Experimentation with having s2 figure out that if an object implements operator+, then s2 can use that to synthesize operator+= if that's not already overridden. It only works if operator+ returns 'this', which isn't always feasible for that operator. It's disabled, but the code is in place for later tinkering. file: ce0784c331 check-in: [420eae38e8] user: stephan branch: trunk, size: 146019 )
13:28
Added experimental foreach keyword to s2. file: 7b343808ed check-in: [d68eaaaf18] user: stephan branch: trunk, size: 146003 )
2016-02-13
15:59
merged in trunk. file: 2e9c94eaa0 check-in: [e3fccff59e] user: stephan branch: s2-array-of-int-op, size: 146464 )
15:59
Merged in trunk, as it's about to get messy with planned internal refcount refactoring. file: 477826daab check-in: [da81a83408] user: stephan branch: cwal_value_pair, size: 145930 )
03:34
Fixed an error location info bug where a 'catch' translating a syntax error to an exception muddled up the location. file: c94bd68f9b check-in: [ca0f52e27a] user: stephan branch: trunk, size: 145825 )
2016-02-12
01:09
Added cwal_value_pair type, but shortcomings elsewhere make it clean up improperly when there's recursion involved (because it's not a full-fledged container, and is not privy to the cleanup treatment involved). Not sure if this is yet worth the hassle (and it asserts() now in s2 in very simple cyclic cases). They also can't be made explicitly vacuum-safe with the current code. file: 2fd097ac38 check-in: [f505331bdb] user: stephan branch: cwal_value_pair, size: 145897 )
2016-02-10
19:39
Changed .. op precedence (now same as unary ops), added some unit tests. file: 4dd2afda66 check-in: [1914628491] user: stephan branch: s2-array-of-int-op, size: 146431 )
18:46
Added experimental X..Y op, which resolves to an array of integers in the inclusive range X..Y. There's some thinking left to do on its real utility and operator precedence. file: ed0bfbd5ae check-in: [667f998399] user: stephan branch: s2-array-of-int-op, size: 146321 )
18:15
Had to move s2_prototype_shash(ed)() back to the public API because libfossil uses it. file: 3c047760a4 check-in: [23634ad42d] user: stephan branch: trunk, size: 145792 )
2016-02-06
17:06
Refactored how s2 functions keep their imported symbols. Requires 1 fewer KVP and they are no longer subject to being erased by Object.clearProperties(). PS: this makes it feasible for us to swap out their source code at runtime. Not necessarily sane (think: changing it during recursion), but technically feasible. file: 7c479c7480 check-in: [e5e31d9f83] user: stephan branch: trunk, size: 144871 )
02:10
insignificant internal tinkering. good night. file: 9894d2d3c9 check-in: [acb850a4e1] user: stephan branch: trunk, size: 145450 )
2016-02-05
19:38
a number of doc updates, internally restructured how keywords determine whether an EOL is an alias for EOX, and limited it to certain keywords (due to a buggy interpretation found while testing unrelated stuff). Added s2.Buffer.slice() to copy byte ranges. A bit of further s2 internal-vs-public code-moving and minor cleanups. file: 102f4ff7a0 check-in: [bd2fa6618f] user: stephan branch: trunk, size: 145122 )
16:27
Added infrastructure for s2 ternary ops to handle the ':' part when it is inside a newer implicit scope than the '?' part. This is currently only done/allowed for eval-family keywords which have a non-block RHS. file: 1cc51925e6 check-in: [67f02a58d5] user: stephan branch: trunk, size: 149226 )
11:14
split up the s2 APIs into internal/public parts. file: 60f6ec26f4 check-in: [efa2b6c8b8] user: stephan branch: trunk, size: 148585 )
09:48
Went ahead and renamed 's2::new' to __new. The former was just me being anal. i'm over it. file: 76f4f99bdd check-in: [88fa8f60e0] user: stephan branch: trunk, size: 167585 )
2016-02-03
15:31
Refactored s2_minify_script() to take its input from a cwal_input_f() and send it to a cwal_output_f(), instead of explicitly using cwal_buffer. Fixed a case in the s2_get() family of funcs which caused properties to be skipped over in cases involving prototypes which are of Hash type and have the dot-op-hash-lookups flag. Experimentally tried deriving s2.Buffer from hash and setting that flag: the unit tests work but it is disabled because the implications on the prototype chain/methods bug me. file: 38f1567cf3 check-in: [199c722a3e] user: stephan branch: trunk, size: 167593 )
2016-02-02
19:25
Added miniz and (theoretically, but untested and too tired) zlib support. Added s2.Buffer.compress/uncompress/isCompressed/uncompressedSize() and the Buffer.compression flag to determine if un/compress() are functional. The new unit tests demonstrate the API. file: eeaa149f92 check-in: [fc568b29ce] user: stephan branch: trunk, size: 166715 )
2016-01-31
12:58
minor s2-internal cleanups in prep for some internal ref/unref handling experimentation. file: 59842c77e5 check-in: [4a11a6b32e] user: stephan branch: trunk, size: 162067 )
2016-01-30
03:58
enhanced typeinfo(isnewing) to remove the 2nd (now internally derived) parameter. file: 080e2bc32b check-in: [b81dac8243] user: stephan branch: trunk, size: 161454 )
2016-01-29
21:54
mostly touchups in the C++ layer, plus a small bit of API renaming. file: 67574914ab check-in: [e4ade7f536] user: stephan branch: cpp-placement-new, size: 161429 )
2016-01-26
19:36
An overhaul of the internals of the 'new' keyword to move some of that functionality in the public API and reduce some code duplication. Still works the same. Added typeinfo(isnewing EXPR) which evals to true if EXPR is current in the process of being new'd (i.e. if it is the 'this' object created by the 'new' keyword for the ctor call). Might look for a better name/place for that operation. file: d6d728756c check-in: [4d2069388b] user: stephan branch: trunk, size: 161429 )
2016-01-25
20:38
some internal cleanups of value ref/unref handling and save an allocation of a yet another array for argv of the new() op. file: aa8eece674 check-in: [d7e57497a7] user: stephan branch: trunk, size: 157679 )
2016-01-24
17:01
s2 new X() now pushes an entry to the call stack, else the errors are hard to follow when the ctor throws. Fixed a corner case in s2_throw_value() which caused the error location props to be set on the wrong container when inheriting from the Exception type. Other minor tinkering. file: bc3c614fc1 check-in: [09a407c621] user: stephan branch: trunk, size: 157228 )
01:57
added a param to s2.Object.toJSONString() to specify how cycles are handled (error or strings). file: 76ea66c215 check-in: [502f8f5f59] user: stephan branch: trunk, size: 157209 )
01:27
added a "volatile" specifier to s2_engine::flags::interrupted. file: 9b4a4ea028 check-in: [ccf28ea9c4] user: stephan branch: trunk, size: 156727 )
2016-01-23
12:09
renamed s2_new_function2() to s2_new_callback(). file: c2256f5468 check-in: [89a724ee0f] user: stephan branch: trunk, size: 156718 )
11:36
added s2_add_ctor_method() and s2_add_ctor_callback() to simplify constructor injection. file: a61455eea5 check-in: [1ea6373c3f] user: stephan branch: trunk, size: 156391 )
2016-01-22
01:45
added s2_minify_script() and friends. Discovered that ctrl-c interruption is not working, for unknown reasons - possibly a recent regression, but i don't remember touching those bits recently. file: fabd30a513 check-in: [afdabee3e3] user: stephan branch: trunk, size: 154659 )
2016-01-21
20:40
changed the key used by Function.importSymbols() to store the imported symbols (it's now an internal/shared Unique-type value). file: c99579561d check-in: [f6e20f650f] user: stephan branch: trunk, size: 153701 )
09:04
Minor restructuring of how s2_ptoken_create_value() works, sharing values from s2_engine::stash. Saves a handful of allocs and allocations across the board. Renamed the "__new" magic method to "s2::new", despite its unsightliness. file: d79d6b0525 check-in: [3d2f02e3ef] user: stephan branch: trunk, size: 153075 )
2016-01-15
11:12
insignificant comment/test tweaks. file: 7673fa4ee8 check-in: [6a05fd60f4] user: stephan branch: trunk, size: 151550 )
2016-01-10
05:45
minor tinkering with interrupt flag handling, doc additions. file: 6e2037b3b6 check-in: [c0bcb77c9e] user: stephan branch: trunk, size: 151528 )
2016-01-09
18:08
merged in s2-scope-hashes branches - thought it had already been done :/. file: a91533e76b check-in: [1526166a76] user: stephan branch: trunk, size: 151516 )
17:14
fixed missing source location info for the 'fatal' keyword. Improved interrupt checking, added source location info (if known) to the interrupt message. Made elvis a separate operator (not alias of |||) so that error messages show the proper operator symbol. file: 520dd0eb0f check-in: [ff5029f230] user: stephan branch: trunk, size: 150836 )
2016-01-08
17:09
large batch of tweaks, largely related to the hash-vs-objects work, but also an attempt at guaranteeing under/overflow behaviour on integer ops. file: 48aca5d400 check-in: [4d688d1ffc] user: stephan branch: s2-scope-hashes, size: 151471 )
14:55
large batch of tweaks, largely related to the hash-vs-objects work, but also an attempt at guaranteeing under/overflow behaviour on integer ops. file: 5c6f94d34d check-in: [b79462d915] user: stephan branch: s2-scope-hashes, size: 150885 )
2016-01-07
16:17
improved s2_cb_value_compare(). a bit. file: bad5cdbcf8 check-in: [607d7966e3] user: stephan branch: trunk, size: 150791 )
15:24
added s2.compare(value1,value2). file: c8fb42cb89 check-in: [5772449a00] user: stephan branch: trunk, size: 150174 )
2016-01-06
17:51
some extra parenthesizing and docs. file: 3b0ade5508 check-in: [40a1c45dde] user: stephan branch: enum-with-value, size: 150158 )
17:15
a batch of minor tinkering and cleanups. file: cb880a8cd7 check-in: [8cbea14422] user: stephan branch: enum-with-value, size: 150003 )
2016-01-05
23:30
minor internal tweaking/cleanups. file: a70f8cdb5c check-in: [a5d85d398a] user: stephan branch: enum-with-value, size: 149968 )
14:07
minor doc tweaks and fixes. file: 2d965cd57f check-in: [d53c6a40e7] user: stephan branch: enum-with-value, size: 149980 )
2015-08-14
15:08
enum enries with value pseudoproperty seems to work. Let's think on it a while before integrating it. file: 7ab0c33378 check-in: [3aa469f15c] user: stephan branch: enum-with-value, size: 149492 )
14:09
enums with values, but accessing that value requires more special-casing than i would like. file: 03d5633071 check-in: [f88c7a2382] user: stephan branch: enum-with-value, size: 149171 )
2014-12-19
10:36
swapped offset/flags arg order in mod_porex.exec(). And accidentally committed a bunch of stuff i wanted to trash. Dammit. file: 215dc96fba check-in: [e15cd4ba72] user: stephan branch: trunk, size: 149122 )
2014-12-17
22:09
added a couple missing struct member inits. file: 294ea451ed check-in: [b6ca87c4a5] user: stephan branch: trunk, size: 148949 )
2014-12-13
22:20
After a 3.5-day Typing-Verbot, i exercised my hand implementing some low-hanging fruit in the s2 typeinfo keyword. Fixed a return type inconsistency in cwal_value_exception_part(). Some minor efficiency hacks in the cwal_value_XXX_part() routines. Added the missing cwal_value_object_part(). Now back to the Typing-Verbot. file: d4aa6c6730 check-in: [339cea5e4d] user: stephan branch: trunk, size: 148862 )
2014-12-09
18:58
s2: s2_cb_file_accessible (a.k.a. s2.PathFinder.isAccessible()) now fails on clampdown level 2 or higher. file: 617ec30316 check-in: [cfa3996381] user: stephan branch: trunk, size: 148885 )
17:34
s2: more tweaking of refunref calls. Fixed an endless loop when given this invalid construct: 1 ? eval {2 : 3}. It is now aware that the colon in the subexpr cannot belong to the ? on the left, and errors out. Improved ternary op error reporting for certain errors. file: a59ba97a68 check-in: [c4f5620926] user: stephan branch: trunk, size: 148744 )
2014-12-08
20:40
moved s2_refunref() to the core cwal_refunref() and reimplemented it there to be notably more efficient (since it has direct access to the internals). s2: caught another formerly stray temporary value in the short-circuiting logical/ternary ops. Allocs in the s2 amalgamated unit tests are up notably since yesterday (but still lower than last week) but my fingers are killing me so investigating why will have to wait. file: 312000d1c5 check-in: [5ebcca7477] user: stephan branch: trunk, size: 147683 )
2014-12-07
16:20
minor refactoring and cleanups related to the new container flags/behaviours. file: acf16f27ed check-in: [8335982e35] user: stephan branch: trunk, size: 148101 )
04:29
Migrated from using the result code CWAL_RC_ACCESS to CWAL_RC_IS_VISITING in many cases to avoid ambiguities in their interpretation in higher-level code. Cached a few more commonly-used strings. file: 53f85460a8 check-in: [52824f4adc] user: stephan branch: trunk, size: 146742 )
00:24
s2: API renaming. file: e4fa3f7a15 check-in: [8f7e99dc95] user: stephan branch: trunk, size: 146534 )
2014-12-06
23:49
More enum work. Added s2_hash_grow_if_loaded() and s2.Hash.growIfLoaded(). Refactored object/hash literal parser to not require an intermediate Object when in hash mode. file: ad988b056f check-in: [8385ea0f08] user: stephan branch: trunk, size: 146421 )
20:34
s2: more on enums. file: 6447166b5a check-in: [32d3c8ca65] user: stephan branch: trunk, size: 146027 )
16:30
core: more work on the various container flags, s2: more work on the enum keyword, other minor cleanups. file: 501ce1bce4 check-in: [8c61a703a0] user: stephan branch: trunk, size: 143570 )
01:40
s2: API renaming, more work on the 'new' keyword. file: a877275294 check-in: [874963ab8e] user: stephan branch: trunk, size: 142663 )
2014-12-05
22:44
more work on the container flags, added a couple missing cwal_value_is_XXX() variants, minor API renamings. file: 53fa659ea9 check-in: [38060dc5e9] user: stephan branch: trunk, size: 142078 )
19:50
s2: removed the s2_scope::refHolder experiment (the last round of ref/unref magic made it obsolete), fixed a lifetime bug in the "new" keyword when the ctor returned one of its arguments. file: e57f19edd5 check-in: [d10f915466] user: stephan branch: trunk, size: 141788 )
18:39
s2: added experimental support for two styles of hash literals using the object literal modifier {# ...} and {## ...}. file: 84f03c413b check-in: [7f2fbe0dbd] user: stephan branch: trunk, size: 141979 )
17:33
Changes in semantics how cwal_prop_set() and friends report various cases, so that we can move some constraint checks into cwal, so that s2 does not have to do duplicate lookups to get the same feature. file: 999d893899 check-in: [6dbf89b73c] user: stephan branch: trunk, size: 141627 )
14:07
s2: added the long-overdue s2_install_functions(), refactored some places to use it instead of macros. file: e89e418af9 check-in: [23308bbea9] user: stephan branch: trunk, size: 140548 )
11:37
s2: more work on integrating the 'unique' type, added s2sh -safemode flag to s2sh to disable file i/o APIs (for use in Caleb's demo page). file: 50e60311f8 check-in: [29f4657ea7] user: stephan branch: trunk, size: 138785 )
11:25
s2: more work on integrating the 'unique' type, added s2sh -safemode flag to s2sh to disable file i/o APIs (for use in Caleb's demo page). file: 8781ea7191 check-in: [1977b92f84] user: stephan branch: trunk, size: 138769 )
00:09
s2: minor tinkering, added a todo. file: 7d26fbaf31 check-in: [dbd84d317a] user: stephan branch: trunk, size: 138156 )
2014-12-04
16:50
s2: applied ref/unref-combo hack to operator operands where feasible. This resolves (x++) stranding a value in a higher scope in _some_ (common) contexts (such contexts can now clean up such a newly-reprobated value immediately). This does not save any memory in the unit tests because i am careful about value upscoping there, but in s2sh-based tests with sweep logging enbled this seems to have resolved the x++ problem for some cases. file: b1d798c96e check-in: [a6753f3afa] user: stephan branch: trunk, size: 137892 )
2014-12-02
20:48
s2: making experimental use of the cwal container-type flags to tell the dot operator to resolve Hash entries instead of Object properties for hashes flagged with this. Experimental, but seems to work provided one uses the s2-level get/set abstractions instead of direct cwal-level access. Removed the tableSize property from Hash instances b/c it is broken since resizing was added. file: 126c7b86f9 check-in: [05d22320c1] user: stephan branch: trunk, size: 137474 )
17:11
s2: some experimentation with holding more refs so that we have to do less ref-babysitting elsewhere. It works but causes a 20x increase in integer value allocations, and a 2+x overall value allocation count (basis: s2 amalgamated unit tests). It's disabled, but the code is left as food for thought later on. file: f1fabc1dff check-in: [2b2d10d588] user: stephan branch: trunk, size: 136695 )
07:31
typo fix in as-yet-unused enum. file: cc82939a1f check-in: [b9c9b44e8e] user: stephan branch: trunk, size: 136450 )
2014-12-01
21:51
s2: sketching out some uses for per-container flags, more experimentation with the "new" keyword. file: 027ccac51e check-in: [662fa2bbb3] user: stephan branch: trunk, size: 136452 )
19:11
s2: improved script-side error reporting for (non-exception) errors triggered via s2_set() and s2_set_v(), in that get converted to exceptions so they have file/line/column info. file: 108e5b49b2 check-in: [7913df9593] user: stephan branch: trunk, size: 133475 )
2014-11-30
12:46
added s2_scope_pop2(). file: 881a2760b4 check-in: [08ea6ffd40] user: stephan branch: trunk, size: 133350 )
2014-11-29
16:33
more metrics-related tinkering. file: e63ead0315 check-in: [624ffc5926] user: stephan branch: trunk, size: 133019 )
2014-11-26
20:50
s2: minor cleanups, renamed new==>constructor to new==>__new for symmetry with the typename==>__typename. file: e15af0db84 check-in: [d9bea6b0b4] user: stephan branch: trunk, size: 133019 )
2014-11-21
21:09
minor doc update file: 828e807b3a check-in: [dc2389df97] user: stephan branch: trunk, size: 130730 )
13:06
s2: op && now has the same precedence as || (it was previously one higher). file: 970490e245 check-in: [0a6a94e708] user: stephan branch: trunk, size: 130321 )
2014-11-20
21:14
s2: Number.toString() now supports a Buffer.appendf()-compatible formatting flag. file: 733be81a7b check-in: [ec8a14af48] user: stephan branch: trunk, size: 130325 )
2014-11-19
20:07
s2: minor refactoring to get at the string-to-rc bits from other places, then extended exception(CODE,MESSAGE) to accept an enum entry name (string) as the first argument. file: 59e27a52f5 check-in: [a73b96a6c5] user: stephan branch: trunk, size: 129792 )
18:40
s2: squeezed a bit more reuse out of the cached "prototype" string, in the form of using it in a couple more contexts instead of allocating new strings. file: e34a843a18 check-in: [e688e4238d] user: stephan branch: trunk, size: 129239 )
2014-11-16
15:54
s2: optimizations in the new Exception.codeString() bits, and fixed a missing break. file: 8b50d81c86 check-in: [cb9cebd131] user: stephan branch: trunk, size: 129253 )
13:48
s2: added s2.getResultCodeHash(), a map of CWAL_RC_xxx and S2_RC_xxx for script space. Other minor tinkering. file: 3c3f0b70df check-in: [e40a358147] user: stephan branch: trunk, size: 129256 )
2014-11-15
13:57
fixed some missing docs, cleaned up cycle detection error reporting. file: c4ae1a7d28 check-in: [9a10bc4c84] user: stephan branch: trunk, size: 128251 )
12:09
Added s2.json.stringify(). file: 7d85a68454 check-in: [592a9be1bf] user: stephan branch: trunk, size: 128248 )
2014-11-14
18:36
s2: minor tinkering, extended Exception.codeString() a bit. s/isDereffable/isDerefable/g. file: 339f150ff1 check-in: [12afba3491] user: stephan branch: trunk, size: 128036 )
16:17
s2: implemented the exception keyword: exception(message) or exception(code,message) creates (does not throw) an exception object, with the former creating an exception equivalent to what throw normally does. file: abbe438e85 check-in: [fec3c2c90e] user: stephan branch: trunk, size: 127897 )
13:29
Added s2.isDereffable(). file: 56cb6e8ab2 check-in: [48a15eb8ea] user: stephan branch: trunk, size: 127511 )
13:15
s2: made "exception" a reserved keyword. file: 00b701492a check-in: [051c424f83] user: stephan branch: trunk, size: 127114 )
10:32
s2: minor refactoring, moved fork() binding out of the shell, into the public binding API. file: da3bb82b9b check-in: [4f17506ec4] user: stephan branch: trunk, size: 127095 )
00:01
s2: minor cleanups and test code improvements. file: 809c794233 check-in: [fb98fd8a1b] user: stephan branch: trunk, size: 125700 )
2014-11-13
22:11
s2: fixed descrepancy between (eval -> return 1; 2) vs (eval -> 'return 1'; 2) by adding a flags param (and accompanying enum) to s2_eval_ptoker(). file: 7f9d32522a check-in: [7fcae16c57] user: stephan branch: trunk, size: 125776 )
16:21
s2: got .. operator working. file: 9d4afd555c check-in: [72e68223c5] user: stephan branch: s2-dotdot-op, size: 124820 )
2014-11-07
16:27
s2: alternate .. op impl. ALMOST works, except that the incr/decr ops have some as yet unknown problem with it. file: d57b45ceb6 check-in: [0caec2dbb6] user: stephan branch: s2-dotdot-op, size: 124818 )
2014-11-06
17:34
Added experimental X.. op, a unary postfix op which is short for X.prototype. Not yet sure how i feel about it. file: a8eb8221c0 check-in: [93e4b68884] user: stephan branch: s2-dotdot-op, size: 124714 )
2014-11-04
13:11
minor comment tinkering. file: 4c637623a1 check-in: [e4d4ebbee2] user: stephan branch: trunk, size: 124542 )
2014-10-31
08:44
s2: fixed Function.call() to accept a non-object "this", other minor cleanups. file: cac1f2e817 check-in: [0519af4688] user: stephan branch: trunk, size: 124495 )
2014-10-29
16:23
s2: improved handling of the colon in ternary-if, improved the is-interrupted checking a bit. file: 2a7c0962f8 check-in: [ee070c6ec2] user: stephan branch: trunk, size: 124290 )
2014-10-13
20:15
s2: reverted [ee718b4feb] (turns out it added an inconsistency), minor internal tweak to where s2 remembers the 'current script' (s2_ptoker), minor doc updates. file: 294bf2da78 check-in: [657cdfa9fc] user: stephan branch: trunk, size: 123274 )
2014-10-11
18:25
s2: Added directory handling policy option to s2_pf_search(), but does not work on non-Unix due to missing is-this-a-directory() bits. Fixed a pair of broken is-dir checks (wrong argument passed). file: 962806096e check-in: [1e657aed8e] user: stephan branch: trunk, size: 123254 )
2014-10-06
18:44
s2: added an experimental approach to cap script-side call depth, in order (mainly) to catch what appears to be infinite recursion and thereby avoid a segfault. An error is triggered if the cap is exceeded (unless the environment segfaults before then for lack of stack space). file: 1683889178 check-in: [ed747de194] user: stephan branch: trunk, size: 122646 )
2014-10-05
06:16
s2: refactoring of some string-to-number code. Made String.operator+ and += const, to avoid clients changing the physics via redefining them. file: b56f830b49 check-in: [8a9ce07b7d] user: stephan branch: trunk, size: 121546 )
2014-09-03
21:52
minor docs before bed. file: ad4fdd5db0 check-in: [a4524d1331] user: stephan branch: trunk, size: 120984 )
2014-09-01
17:40
s2: added rand(3) workalike, but have no real good place to bind it, so it's in the Integer prototype, i.e. called like 0.rand(). file: 2c778d39c9 check-in: [8b2916e0ec] user: stephan branch: trunk, size: 119840 )
2014-08-30
04:22
more work on the s2 interruption. file: abc817de1c check-in: [0d4158e5f6] user: stephan branch: trunk, size: 119616 )
2014-08-29
12:12
s2: experimenting with the ability to interrupt a running script, e.g. via Ctrl-C handler. Results look fairly promising but not perfect. Added Buffer|String.evalContents() and minor API changes to accommodate them. file: aac3a3530a check-in: [cdf401e000] user: stephan branch: trunk, size: 117501 )
2014-08-27
21:21
a round of commenting/docs. file: 46d85b1860 check-in: [90dc687e12] user: stephan branch: trunk, size: 116370 )
2014-08-25
17:43
s2: added s2_cb_is_callable() and s2.isCallable() to simplify some script code. file: b17c1d8522 check-in: [91bc0544fa] user: stephan branch: trunk, size: 112541 )
2014-08-23
13:00
s2: array.integer access no longer binds the array as "this" for calls resulting from that access. Added infrastructure to allow us different between "this-binding" and "non-this-binding" operations better. file: 602c3e0bbb check-in: [1801b84e11] user: stephan branch: trunk, size: 112314 )
2014-08-22
12:10
s2: empty functions (no params and empty body) no longer store their source, nor do they get the various call-local variables (argv, this, imported symbols), and they otherwise do less work when called. Params list is no longer parsed when it is empty, nor is the body (but because params lists can have side effects, we cannot completely optimize out a func with params but no body). file: 98ac9fccbb check-in: [ce97684b46] user: stephan branch: trunk, size: 111903 )
2014-08-16
17:25
s2: minor restructuring to allow some of the currently core functionality to be loaded via DLLs instead (or in addition to). file: 1f091e2621 check-in: [a77fb28977] user: stephan branch: trunk, size: 111864 )
2014-08-15
13:16
added cwal_buffer_fill_from_filename2(), patched s2_eval_filename() to use it (to avoid hypothetical corner cases involving non-NUL-terminated X-/Z-strings). file: 0970795ae1 check-in: [4c8879eff0] user: stephan branch: trunk, size: 111763 )
11:32
s2: more work on the # operator and the internal conventions around dot-like operators. file: 1364861d8a check-in: [c3372f8f72] user: stephan branch: trunk, size: 111547 )
2014-08-14
17:32
s2: Added the experimental H#K (hash search) operator. Only usable in read contexts, not assignments. file: 82bd87fc3c check-in: [79d7152597] user: stephan branch: trunk, size: 111352 )
2014-08-10
12:42
(failed) experimentation with taking more refs during the main s2 eval loop. file: cdd27ab556 check-in: [216eb214b2] user: stephan branch: trunk, size: 110905 )
2014-08-09
11:07
s2: refactored int/double shared funcs into a shared prototype, added parseInt(), parseDouble(), parseNumber(). file: a7ded7579e check-in: [91c40a7e41] user: stephan branch: trunk, size: 110441 )
08:47
added s2.io.realpath(), patched require.s2 to use it. file: 393c42577f check-in: [f54dba503e] user: stephan branch: trunk, size: 110442 )
2014-08-01
19:47
s2_engine now dlcloses modules, though i really know better than to do so so. Build tweaks. file: a28d912578 check-in: [e66d37216a] user: stephan branch: trunk, size: 109791 )
2014-07-26
18:52
s2: added script file name to s2_error class, and got it working in more contexts. file: 6b98fc9c84 check-in: [2285eb16ea] user: stephan branch: trunk, size: 109631 )
2014-07-20
13:41
s2: added s2.io.flush(). file: 6669c5c4bc check-in: [2315509a76] user: stephan branch: trunk, size: 109212 )
2014-07-18
14:40
s2: ported in strftime() impl from th1ish. file: 3d552b64b1 check-in: [066ab7f7a2] user: stephan branch: trunk, size: 108978 )
10:35
s2: doc updates. file: 0caf0fdd07 check-in: [1ce6b1f02b] user: stephan branch: trunk, size: 107162 )
2014-07-16
23:34
s2: Added Function.sourceCode(). file: 1c5fefa612 check-in: [02e3aa3a10] user: stephan branch: trunk, size: 107061 )
22:55
s2 now takes over cwal's top-most scope. file: 09edd9ca3a check-in: [640daaf522] user: stephan branch: trunk, size: 106923 )
2014-07-14
20:31
s2: minor touchups in the tmpl code. file: 0f688fe364 check-in: [194f36f84b] user: stephan branch: trunk, size: 105963 )
20:16
s2: ported in tmplish (s2.tmpl()), with minor mods, added s2.io.output/print(). file: d6e71854c6 check-in: [e66a6f2525] user: stephan branch: trunk, size: 105963 )
2014-07-11
21:59
s2: added =~ and !~ overload-only ops, improved (but not perfected) error reporting for second-pass eval errors, improved the shell extension demo a bit. file: 485c942eae check-in: [d24921a38c] user: stephan branch: trunk, size: 97301 )
20:03
s2: mostly build-related stuff, getting s2sh client-extensible. file: 3efb15610c check-in: [cc53da0c53] user: stephan branch: trunk, size: 96627 )
17:28
s2: (failed) experimentation with hijacking the cwal top scope (breaks e->prototypes). Added some test script code. file: 773874941c check-in: [ab2a7477d1] user: stephan branch: trunk, size: 98182 )
15:32
s2: ported in sleep() and mssleep(), installed as s2.time.ms/sleep(). Other minor cleanups along the way. file: 0581deb964 check-in: [03c1247d01] user: stephan branch: trunk, size: 97943 )
2014-07-10
19:32
s2: changed -> precedence to equal the dot-op, as this is the closest symbol we have to the dot-op available for generic overloading. file: d8567180b6 check-in: [ffc6274c2a] user: stephan branch: trunk, size: 96576 )
19:07
s2: overhauled the scope subsystem, adding the s2_scope abstraction layer. Moved the sweep/vacuum guard levels, which are always scope-specific anyway, into that. Ooops - and i now see that the overloadable -> operator (which i thought was checked in last night) is also here. Wanted that done separately :/. file: ed047653fe check-in: [f18c8ff4ed] user: stephan branch: trunk, size: 96611 )
2014-07-08
20:58
s2: ported the "ob" API. file: ae887b69b0 check-in: [f7f7e7dff7] user: stephan branch: trunk, size: 97109 )
19:36
Tiny cleanups. file: 5ee8f621af check-in: [a968b498fa] user: stephan branch: trunk, size: 88454 )
2014-07-07
20:29
s2: added a getenv(3) script binding. file: 2c736c9b12 check-in: [2f4e931872] user: stephan branch: trunk, size: 87663 )
19:01
s2: ported in module loader and sample module. file: 158caddfb1 check-in: [460a4cf3ef] user: stephan branch: trunk, size: 87413 )
17:56
s2: ported in PathFinder class from th1ish, plus some related infrastructure. file: 5faa64d342 check-in: [a609daa8f4] user: stephan branch: trunk, size: 80363 )
16:30
s2: minor internal cleanups, ported in the JSON parsing API from th1ish. file: 0030be7825 check-in: [683900d70d] user: stephan branch: trunk, size: 75253 )
2014-07-06
20:21
s2: Minor return type changes in Buffer.append/appendf/fill(). file: 77f61a1593 check-in: [9aadb8679d] user: stephan branch: trunk, size: 74071 )
14:47
s2: stack traces :). file: 0860db69cd check-in: [ef50df7221] user: stephan branch: trunk, size: 74517 )
12:16
s2: got line/column counting in funcs working, but it is not yet caught by exceptions. __FLC works, though. file: 43ddeec348 check-in: [a43400f6da] user: stephan branch: trunk, size: 74200 )
10:17
s2: alternative impl of script func storage which uses a central hashtable to hold the body bytes. Not yet sure about mem costs. file: 4e4fb2dbb7 check-in: [6ce7937b3a] user: stephan branch: s2-funcs, size: 74042 )
09:10
s2: a different impl of script func state, using c-strings. no lifetime issues, but the alloc costs are a mixed bag - bit savings in small scripts and big costs in large ones. Gonna try a hash-based entry next... file: f34577b359 check-in: [d39faa10ac] user: stephan branch: s2-funcs, size: 74019 )
2014-07-05
16:01
s2: minor internal cleanups, added interactive-by-default if isatty(stdin) to the shell. file: 0fa972ea3f check-in: [21addb0266] user: stephan branch: trunk, size: 74089 )
2014-07-04
23:56
s2: chasing (have not found) an inexplicable bug which causes an overridden unary (not binary) op in a local object causes op overloading of binary + to fail for strings afterwards. No theories yet. Some work on re-doing some overloading semantics. file: e044fcd700 check-in: [8ebbff72f4] user: stephan branch: trunk, size: 73995 )
18:22
s2: added ++/-- for obj.property. Added s2_engine::metrics::nextTokenCalls. file: 832eb8b1f1 check-in: [e5558631f0] user: stephan branch: trunk, size: 73818 )
15:14
s2: got ++prefix, postfix++ working for plain identifiers. ++obj.prop and obj.prop++ are pending. file: bd0fe41fec check-in: [3562112748] user: stephan branch: trunk, size: 72986 )
2014-07-03
21:52
s2: started work on an interactive shell mode using linenoise for input. file: 3808669240 check-in: [04c0d82c9d] user: stephan branch: trunk, size: 72953 )
18:46
s2: added the "combo" assignment operators for simple identifiers (X+=Y and friends). X.Y+=Z and friends coming up. file: 100264306d check-in: [06089df159] user: stephan branch: trunk, size: 72444 )
2014-07-02
22:07
s2: minor tinkering, mostly with how to adjust error location info for script function bodies. file: 8221d1dd4c check-in: [25aebe67d6] user: stephan branch: trunk, size: 72009 )
18:18
s2: ported in the Hash class, other minor cleanups. file: 6e9a7ef949 check-in: [62a274945f] user: stephan branch: trunk, size: 70357 )
2014-07-01
21:26
s2: ported in the Buffer class, a number of other tweaks. TODO: finish buffer unit tests. file: 17f5f4a13c check-in: [5f6b5a8f85] user: stephan branch: trunk, size: 69465 )
17:33
s2: ported in the Integer and Double prototypes. file: 3fa0ba86f2 check-in: [073c88573c] user: stephan branch: trunk, size: 69413 )
2014-06-30
15:23
s2: finally got emacs to stop indenting for the extern "C" blocks, so reformatted. file: 6c9fcf57b8 check-in: [f5c8a0fdfc] user: stephan branch: trunk, size: 69308 )
2014-06-29
21:41
s2: started porting in some of the stack trace infrastructure and improving s2_ptoker a bit. file: ad27734fb9 check-in: [54ea5fa5e9] user: stephan branch: trunk, size: 71726 )
13:57
s2: improved func call support (lifetimes invalidated prematurely), fixed a stale pointer usage, added function NAME(){...} option, recycle s2_func_state, added some metrics for func state. file: 9788a4ef1d check-in: [479f623b39] user: stephan branch: trunk, size: 71230 )
2014-06-28
18:24
s2: calling script-created funcs seems to be working working. Error location info is wrong (it's relative to the function), but we'll eventually find a way around that. file: a09fafda0b check-in: [ef7556dbf5] user: stephan branch: trunk, size: 70402 )
13:16
minor doc addition. file: 80c7622da6 check-in: [e6b2caf3b3] user: stephan branch: s2-semicolons, size: 69721 )
02:44
side effects of tonight's gc debugging session. Fixed return/refcount keyword ordering. file: b57dfcada3 check-in: [5800e99ab7] user: stephan branch: s2-semicolons, size: 69573 )
2014-06-27
18:59
s2: more work on the semicolon changes, added 'continue' keyword, keywords are now looked up via bsearch(). file: 5d13b8eacd check-in: [4b2b66692b] user: stephan branch: s2-semicolons, size: 69610 )
14:32
minor comment/doc changes. file: 6343505bb9 check-in: [4f8c55b008] user: stephan branch: trunk, size: 69050 )
2014-06-25
22:12
minor commenting and test code before bed. file: 46c5f669ec check-in: [0987507659] user: stephan branch: trunk, size: 68830 )
21:44
s2: added if/else. Turned off string interning by default in the shell. file: 9142316848 check-in: [5c27b8123d] user: stephan branch: trunk, size: 68830 )
19:20
s2: added break keyword, fixed sweepup in eval-file subscopes, added global s2 object and s2.import(), several minor cleanups and fixes. file: 338119114e check-in: [cb6ce80c0b] user: stephan branch: trunk, size: 67559 )
2014-06-24
22:33
removed some dead code. file: a5ad04d51f check-in: [e1d9a313f8] user: stephan branch: trunk, size: 67107 )
22:32
Moved auto-propagation of return/break/etc values (back) into the cwal core. s2: added refcount keyword. Fixed EOL handling for keyword RHS parsing (most require that the RHS start on the same line, or optionally treat EOL as an empty/undefined result, e.g. return/exit). file: d9421193be check-in: [7cc1a0c00c] user: stephan branch: trunk, size: 67203 )
19:55
s2: added return/throw/fatal/exit keywords, all specializations of eval/scope. file: 05ef0ffb6e check-in: [e33a2d68a3] user: stephan branch: trunk, size: 68769 )
2014-06-23
21:47
s2: more prototype infrastructure and minor cleanups. file: 23b087c65d check-in: [b55395df97] user: stephan branch: trunk, size: 68258 )
2014-06-22
17:11
s2: added the catch keyword, fixed the typename keyword evaluating past a neighboring comma. file: 85f053aeaf check-in: [b44ac6f822] user: stephan branch: trunk, size: 64639 )
15:51
s2: improvements in error location reporting. Ported in remaining Object prototype bytes from th1ish. file: ead3cde5c1 check-in: [af591152f3] user: stephan branch: trunk, size: 64639 )
12:26
more work on the s2 prototype-level infrastructure. file: 6d98051027 check-in: [37d1fb55b4] user: stephan branch: trunk, size: 62163 )
09:42
s2: added func/method call() support. This breaks obj.(prop) access, but that was arguable fluff, anyway, so it's been removed. file: 7d9c71f8fd check-in: [4c045a135e] user: stephan branch: trunk, size: 61123 )
2014-06-21
21:20
Minor op precedence tweaks (conformance) and uninitialized var fix (thanks, valgrind). file: aae18ec40e check-in: [b0f2e2f99c] user: stephan branch: trunk, size: 61103 )
20:14
s2: added unset keyword to remove vars and properties. file: 686d9376e8 check-in: [7789635439] user: stephan branch: trunk, size: 61091 )
18:15
Added object literals (JS/JSON-like). {SquigglyStrings} are now always object literals unless context/a keyword changes that. file: 8684b1394a check-in: [4f6e3866a8] user: stephan branch: trunk, size: 60718 )
14:50
s2: added PHP-style array-append operator, imported a bit more prototypes infrastructure, improved valgrind testing a bit. Added inherits operator. Keep forgetting to check in. file: f5fa113dfb check-in: [6e0c316928] user: stephan branch: trunk, size: 60951 )
01:16
Got s2's basic assignment op working. file: a3d425a786 check-in: [5a29248cf9] user: stephan branch: trunk, size: 60037 )
2014-06-20
22:32
cleanups in s2 error reporting/handling. file: b69b3acd9e check-in: [336caed0e0] user: stephan branch: trunk, size: 59997 )
18:48
s2: fixed a newline-slurping bug which caused expressions to bleed together. Added infrastructure for propagating return/exit/break values. file: 3c7ff642b5 check-in: [edd8c19dfc] user: stephan branch: trunk, size: 58282 )
2014-06-19
16:29
converted more tokenization errors to syntax errors. file: 49e0dbfabe check-in: [ebeaa3c5c6] user: stephan branch: trunk, size: 55525 )
15:45
More exception-vs-fatal error distinctions. Lots of tinkering with sweep-up, fixing some cleanup timings. file: 725d4ac773 check-in: [f3e77e10f9] user: stephan branch: trunk, size: 55472 )
10:10
bending around the s2 exception/error infrastructure a bit, in prep for throwing exceptions. file: 496f437d60 check-in: [d7399dd09b] user: stephan branch: trunk, size: 54801 )
00:20
added var/const decl to s2. file: a7cbccf80d check-in: [5e6e89ac41] user: stephan branch: trunk, size: 52423 )
2014-06-16
21:47
minor cleanups before bed. file: 294083bfcc check-in: [d8ff1745bb] user: stephan branch: trunk, size: 51860 )
20:17
More work on operator overloading, +/- ops, got unary +/- on strings doing the right thing. file: 461037a721 check-in: [8bee802f30] user: stephan branch: trunk, size: 51860 )
18:54
Added more prototypes infrastructure. Implemented string+string op via operator overloading. Lots of minor tinkering. file: ce609cf118 check-in: [fba5a0c999] user: stephan branch: trunk, size: 51533 )
2014-06-15
21:13
Added the 'typename' keyword to s2 - works like in th1ish. Made the dollar sign a legal identifier character. file: 4ed0f5259a check-in: [14eb0459bf] user: stephan branch: trunk, size: 48825 )
19:41
Seem to have gotten sweep-up working how i want it in s2. file: 40e4faf365 check-in: [2239164d8f] user: stephan branch: trunk, size: 48703 )
15:12
Error reporting cleanups. {squigglies} may now contain only script-legal tokens, leaving heredocs as the generic catch-all string type. May want to re-think this limitation later. file: 42ca572ac7 check-in: [41ebd75fbd] user: stephan branch: trunk, size: 47065 )
12:50
added very basic s2 shell (stdin only). Discovered some EOL-related problems along the way. file: d371337c50 check-in: [948fb7e49e] user: stephan branch: trunk, size: 46826 )
11:06
Started adding script name infrastructure to the error reporting. Fixed assert() to honor skip mode. file: 947267dd22 check-in: [c3edf01eca] user: stephan branch: trunk, size: 46826 )
09:28
More s2 refactoring/code moving, added assert keyword. Finally broke the 2kb RAM barrier with 67 allocs across 201 test scripts. file: 6c31316485 check-in: [9b23787767] user: stephan branch: trunk, size: 46864 )
07:50
ported in more prototypes stuff, but need to restructure for testing. file: 18a05f42ca check-in: [5fe65e8b2a] user: stephan branch: trunk, size: 40587 )
2014-06-14
21:46
changed some API semantics which had been bugging me. file: b7c415702b check-in: [d46589d735] user: stephan branch: trunk, size: 40534 )
21:35
s2 ternary if seems to work. file: c66b62184d check-in: [9bfa64c94b] user: stephan branch: trunk, size: 40517 )
17:10
added ||| ("Or3") operator (with JS || semantics) and changed || to use bool-only results (like most languages). file: f582b94aef check-in: [30af8e98c8] user: stephan branch: trunk, size: 40512 )
15:17
added null/undefined/true/false keywords to s2. file: 6e1e33ac36 check-in: [423d1709df] user: stephan branch: trunk, size: 40429 )
11:32
more internal s2 refactoring. file: 4849a48173 check-in: [4e270a462d] user: stephan branch: trunk, size: 40343 )
2014-06-13
19:10
ported in the major var/property APIs and some more infrastructure. Found a nice solution to the identifier-vs-string resolution problem, so OBJ.PROP works now. Fixed {squiggly} support i broke when fixing (parens|braces). file: 21f78c1134 check-in: [6b75da09a6] user: stephan branch: trunk, size: 40157 )
2014-06-12
22:35
More s2 (surprise!). Added initial OBJ.PROP support, but it currently just resolves to its RHS. file: 29b7c7bfb0 check-in: [1ef73de222] user: stephan branch: trunk, size: 35216 )
16:54
refactored the eval-related code a bit to take a set of flags. Cleaned up test script output a bit. file: 21fe525f88 check-in: [bbaf777cdd] user: stephan branch: trunk, size: 34820 )
2014-06-11
21:37
more s2 cleanups, mostly in syntax error detection. file: af0c12b273 check-in: [f0ceba8432] user: stephan branch: trunk, size: 33968 )
17:06
more st==>ptoker renaming. file: a8e22f9105 check-in: [ebffa08159] user: stephan branch: trunk, size: 33473 )
17:00
Make S2_T_EOF non-0, S2_T_INVALID==0 (and make that an API guaranty). Fixed related breakage which assumed NUL==EOF. file: aef39eb6d3 check-in: [33a842fe9d] user: stephan branch: trunk, size: 33465 )
16:47
minor s2 tweaks before trying more invasive changes. file: c08729b20d check-in: [767e218c1a] user: stephan branch: trunk, size: 33068 )
2014-06-10
22:41
good night, s2. file: 3cff77d949 check-in: [a54e62f03c] user: stephan branch: trunk, size: 33035 )
21:49
Lots more s2 cleanups, touchups, pull-ups, and other forms of ups. Well, okay, no pull-ups. Chuck Norris already did all of those. Twice. Valgrind clocks in at 46 mallocs using 1240 bytes of RAM for 82 test scripts totaling 1737 bytes of script code on the ODroid (32-bit ARM). file: df6c024a06 check-in: [e9d18ebc18] user: stephan branch: trunk, size: 31365 )
19:24
Finally got the multi-semicolons behaviour i wanted wrt s2 eval. file: 9a4b6bc85b check-in: [f0aa01005f] user: stephan branch: trunk, size: 29799 )
2014-06-09
17:15
more s2. added comparison ops. file: 16b37d5072 check-in: [cc3e8acbe2] user: stephan branch: trunk, size: 29799 )
12:52
more work on s2. added heredocs. cleaned up test code basis. file: 3e48782e86 check-in: [11be7e573e] user: stephan branch: trunk, size: 29673 )
09:53
Added a mechanism for s2 to support th1ish-like 'adjusted' tokens, to support squiggly strings and heredocs. file: 0408148660 check-in: [22641e8a72] user: stephan branch: trunk, size: 29298 )
2014-06-08
23:49
more work on s2... file: c168740a37 check-in: [0f0c7757be] user: stephan branch: trunk, size: 29299 )
15:22
more s2 refactoring towards the ability to tokenize single expressions at a time. file: 3c11d1abc8 check-in: [f1ccf9ad92] user: stephan branch: trunk, size: 29705 )
11:15
more s2 refactoring, working towards expression-level parsing and short-circuit skipping. file: 9d8febfc3a check-in: [704cceeb3e] user: stephan branch: trunk, size: 29407 )
2014-06-07
18:34
Seem to have gotten the precedences working. For now. file: 4ddb3fa3f2 check-in: [74863c58b7] user: stephan branch: trunk, size: 26726 )
15:47
more tinkering with s2. file: df52bbd250 check-in: [245717259d] user: stephan branch: trunk, size: 26026 )
10:28
more work on the error propagation bits. file: 1cfab71d44 check-in: [e8a6f25b60] user: stephan branch: trunk, size: 25966 )
08:52
started adding some infrastructure for non-exception error reporting in s2. file: b41b893a7b check-in: [12a26287ab] user: stephan branch: trunk, size: 23768 )
2014-06-06
23:20
more cleanups in the calculator. file: 0dc8d0d677 check-in: [982d16c897] user: stephan branch: trunk, size: 22627 )
22:17
s2 calculator is coming along. file: 562d2936de check-in: [6382ebced0] user: stephan branch: trunk, size: 22585 )
20:19
Got the most basic of calculator running in s2. file: b999c4f4f1 check-in: [86a3a5181a] user: stephan branch: trunk, size: 22165 )
18:39
s2: got basic tokenizer in place. file: c0d59482e5 check-in: [43c1df5ce8] user: stephan branch: trunk, size: 21264 )
2014-06-05
21:40
more s2 tinkering. bed time again. file: 800a5aa940 check-in: [8078407025] user: stephan branch: trunk, size: 20697 )
20:46
more s2 refactoring. bed time. file: 237d34e630 check-in: [41818e5b28] user: stephan branch: trunk, size: 20502 )
20:30
Added more s2 operators, fixed token recycling to actually recycle. file: a0b83f4ff6 check-in: [0e2d36e2c3] user: stephan branch: trunk, size: 19356 )
18:26
Cleanups in s2, implemented multiply/divide/modulo ops. file: e57439b3bc check-in: [b0e033e337] user: stephan branch: trunk, size: 18512 )
2014-06-04
22:09
implemented PoC unary/binary add/subtract ops in s2. file: f1d1fb8cd1 check-in: [e929071170] user: stephan branch: trunk, size: 12007 )
2014-06-03
22:32
Got some basic PoC in place for s2. file: f1f5c4445d check-in: [0e11ae0e16] user: stephan branch: trunk, size: 8129 )
20:53
Added: tinkering with some ideas for a stack-machine-based interpreter. nothing useful yet. file: 619f31622a check-in: [f4eb30ae39] user: stephan branch: trunk, size: 7684 )