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