cwal

All files named ”include/wh/cwal/cwal.h”
Login

All files named ”include/wh/cwal/cwal.h”

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

History for include/wh/cwal/cwal.h

2022-05-01
23:53
Preemptive hypothetical corner-case fix for the previous checkin: only unset the cycle-breaking flag if this invocation was the one which set it. This would seem to make no difference unless some code ignores a being-propagated cycle-check error and invokes the cyclic propref when that error case is propagating (which would be an API violation). Minor doc touchups. file: 7feaa0c1f0 check-in: [181e7ecb0e] user: stephan branch: trunk, size: 425549
03:59
Corrected the cwal_propref recursion check. It previously only caught the case when the initial being-resolved propref was recursed into but will now catch the case when a sub-invocation recurses into/via itself without re-invoking the initial propref resolution. file: 5c206fbaa7 check-in: [a40e9df122] user: stephan branch: trunk, size: 425476
2022-04-14
04:15
More tinkering with the fabled recursive vaccuum. This one fails in the whcl.fs init code but only in the whole constellation, not when run in isolation, and only with the right combination of sweep/vac intervals (==1/5). file: a81852a4cf check-in: [376d3d165f] user: stephan branch: trunk, size: 426128
2022-04-13
13:05
Removed cwal_engine_vacuum_v2(). Its initial impl was not only fundamentally broken, but i can't get what it was _trying_ to do to work. file: 6aded8f4e5 check-in: [0d5c78b8d8] user: stephan branch: trunk, size: 425981
2022-04-12
07:45
Added some explanatory comments to cwal_engine_vaccum_v2()'s impl. file: 90af6b2780 check-in: [57de7431dc] user: stephan branch: trunk, size: 428143
07:17
Introducing cwal_engine_vacuum_v2(). Edit: alas, this was premature and flawed :(. file: 7cfaca51ac check-in: [3f92c0f509] user: stephan branch: trunk, size: 428144
2022-04-11
13:04
More work on whcl propref handling after adding weak support. This essentially works but breaks one of the unit tests in such a way as to raise legitimate questions about which failure modes we want/need to propagate and which we can/should hide by simply returning the undefined value. Still undecided. file: c0fcea185a check-in: [9e375fc4b1] user: stephan branch: propref-weakref, size: 425981
11:06
Weakly-referenced proprefs seem to work, but more testing is needed. The most glaring open bug is that whcl's 'unset X' cannot work on an expired propref X because accessing it looks like an undeclared var because of the resulting NULL pointer (same problem as accessing an unset property on its target container). file: 170eaa0c9a check-in: [d041e12487] user: stephan branch: propref-weakref, size: 425982
2022-04-09
02:15
Changed proprefs to enable read-only mode on all types instead of just on getters (which have been removed). file: a4dc8789c3 check-in: [12cb0139eb] user: stephan branch: trunk, size: 425076
01:20
Docs, removal of dead code, and API renamings. file: 3f61a8b9fe check-in: [87ad470227] user: stephan branch: trunk, size: 424926
2022-04-08
23:45
Seem to have gotten property interceptor functions working in the core, using a new cwal_propref subtype. file: a30f0cbdf4 check-in: [adbfb4b0f0] user: stephan branch: trunk, size: 423172
20:35
Removed some dead code in prep for a new take on that code. file: ddb9c04125 check-in: [c18505fb47] user: stephan branch: trunk, size: 420990
19:37
Seem to have gotten array sorting APIs sorted (as it were) out with regards to proprefs. Fixed whcl aliases to array entries to fail loudly if given a negative value. file: 4b8703dba4 check-in: [863b3f390d] user: stephan branch: trunk, size: 422932
16:29
Minor internal cleanups and constness tweaks. file: 9a8d0b3415 check-in: [f30ebb40d4] user: stephan branch: trunk, size: 419311
10:06
Finally discovered and documented the reason a recursive vacuum op _cannot_ work. file: 33543666fd check-in: [50850dc476] user: stephan branch: trunk, size: 418647
08:17
Fixed the non-recycling of cwal_propref values. file: 7140480574 check-in: [258b672add] user: stephan branch: alias-array-index, size: 418527
07:22
Further aliasing cleanups and API additions. Rename a couple cumbersomely-named routines. file: c2e2064b06 check-in: [aa1d74e487] user: stephan branch: alias-array-index, size: 418527
06:30
Aliases/proprefs in arrays and as array entries is now more or less tested, with a few more APIs to inspect and adapt (notably array sort). file: 0f9f3ff21f check-in: [4666441e67] user: stephan branch: alias-array-index, size: 416705
06:03
More internal retooling of the core get/set APIs with regards to propref handling. Aliases to array indexes now work in whcl but processing of aliases as array entries is still intested. file: 5529862ef4 check-in: [dbe1ddddee] user: stephan branch: alias-array-index, size: 416696
00:48
More work on the list-entry-propref handling and lots of internal cleanups to the handling of proprefs, centralizing cycle detection and the like. file: d38f5b9368 check-in: [0260cf0c09] user: stephan branch: alias-array-index, size: 415789
2022-04-07
19:08
Initial infrastructure for aliasing array indexes via proprefs, but it's hit a brick wall because resolving property keys is internally inherently different than array indexes because the former searches for key/value pairs, something array indexes don't have. Ergo, this will have to be a more invasive change which affects a wide variety of APIs beyond the core-most get/set internals. Let the experimentation begin. file: 1dbb48a16f check-in: [2b52da5576] user: stephan branch: alias-array-index, size: 411645
2022-04-04
15:56
Various internal cleanups in prep for experimenting with a new value type. file: 7b8ea8d840 check-in: [f3e397f5d5] user: stephan branch: propref-type, size: 409862
2022-04-03
17:08
Docs, unit tests, and minor cleanups. file: 7423902fe1 check-in: [10c9a7bdbf] user: stephan branch: propref-type, size: 409761
15:15
Renamed PROP_REF back to PROPREF and WEAK_REF to WEAKREF. Fixed a crash bug in cwal_json_output() caused by the past few days' changes. file: 7812eb2f71 check-in: [97c2a53ad6] user: stephan branch: propref-type, size: 409491
14:29
Fixed some fragility in cwal_dump_allocation_metrics(). Lots of cleanups of proprefs. Renamed propref to prop_ref for consistency with weak_ref, but might go back and do the opposite, removing the _ from both. file: 3e9acc0694 check-in: [185381a6df] user: stephan branch: propref-type, size: 409555
12:06
Taught cwal_json_output() how to deal with proprefs. Added a guard against recursion when resolving proprefs. file: e0b7da8f3e check-in: [c28468d665] user: stephan branch: propref-type, size: 405510
05:21
Beginnings of an experiment in creating a cwal data type (cwal_propref) which can act as a property alias/reference in a specific container, such that getting or setting the reference's value will instead set it in the target container. This should permit creation of something akin to TCL's upvar in whcl and empower closures to directly reference other vars. That's the idea, anyway. Basic sanity checks pass but there is much testing and fixing left to do. file: f3c7cebff2 check-in: [307a6582f1] user: stephan branch: propref-type, size: 404471
2022-04-02
15:13
Docs and internal cleanups. file: 41e1f3a07a check-in: [e61ebfc44e] user: stephan branch: trunk, size: 403014
2022-03-31
21:15
Added a mechanism to cwal_json_output() to add a proxy function for converting to-JSON'd values to something JSON can handle use. Used this to implement semi-generic whcl support for a to-jsonable method and used that to make whcl.Script JSON-able. file: 3d402b2da9 check-in: [5adaa164b2] user: stephan branch: trunk, size: 402817
2022-03-30
19:19
Started binding whcl_script to script space, and taught the eval command to special-case them, as a faster alternative to recompiling the same strings for evaling. It's undocumented and incomplete, but the basic functionality works. file: 5d0ce04a3a check-in: [8e69c7dff8] user: stephan branch: trunk, size: 399313
2022-03-21
23:22
More whcl_scope API renaming and reorganizing. file: efa174e6d6 check-in: [b969dfc4d0] user: stephan branch: whcl-single-scope, size: 399215
2022-03-20
22:03
Added cwal_array_capacity_get(). file: d3316871dd check-in: [0c429f9ec1] user: stephan branch: trunk, size: 399206
12:55
Removed cwal_scope_current() (setter) from the API, as its existence is a mistake. Changed the order of cwal_engine cleanup at shutdown time so that client-installed state via cwal_engine_client_state_get() is cleaned up after all scopes are popped for reasons described in the API docs. file: a5353e4ec7 check-in: [9f3f2258b3] user: stephan branch: trunk, size: 398891
2022-03-14
09:55
whcl symbol-lookup overhaul: symbol lookup is now _more or less_ conventional instead of historical cwal/s2 style. This breaks certain loadable module APIs and fixing those is next on the TODO list. file: 79a9837a3f check-in: [df93d45e85] user: stephan branch: whcl-symbol-lookup-overhaul, size: 398963
2022-03-13
10:13
Enhanced cwal_glob_matches_cstr() to support case-insensitive glob matching. Changed whcl string glob-matches/matches-glob to support that but left that out of s2's glob-matching because how it specifies that flag makes it awkward to change without breaking existing out-of-tree scripts. file: c742804c6c check-in: [166f2fcb2d] user: stephan branch: trunk, size: 398787
2022-03-12
10:01
Added @rray expansion (a.k.a. expando) support to whcl. Fixed an obscure lifetime issue for the LHS of a function call where the LHS could get swept/vacuumed up while the args were processing. file: 7d8c58d9aa check-in: [3aa9702dea] user: stephan branch: trunk, size: 400712
2022-03-07
03:13
Various bits of internal commentary and assertions related to trying (unsuccessfully) to track down a value lifetime crash relate to a recursive vacuum. A working recursive vacuum thus still eludes me. file: 2b1179a9ca check-in: [ef4239d2f4] user: stephan branch: trunk, size: 400711
2022-03-02
18:26
Primarily doc re-orgs. file: 5a7e9183ee check-in: [7fea8b33af] user: stephan branch: trunk, size: 400711
2022-02-27
22:27
whcl: added the eval-contents method to the buffer and string classes (ported from s2). file: 700243dfe7 check-in: [58e7f72bb8] user: stephan branch: trunk, size: 400747
2022-02-26
04:54
Minor internal cleanups. Fixes to the libwhcl amalgamation. Added more whcl docs. Got a basic client distribution tarball of whcl building. file: 94f339cb07 check-in: [6769fda7af] user: stephan branch: trunk, size: 400362
2022-02-25
21:28
Ported in the s2sh shell API to whclsh. Moves the string globbing API from s2 into cwal core and added String.glob method to whcl (with different semantics than s2's). Added missing whcl api-os.md. More whclsh docs. file: e61254f546 check-in: [86a52436f3] user: stephan branch: trunk, size: 400482
12:31
Replaced a couple sprintf() calls with snprintf(). Added a TODO. file: 8cca18a953 check-in: [dabd0f369b] user: stephan branch: trunk, size: 398714
2022-02-22
10:32
Corrected memleak in value cleanup introduced in [02484d69fb34b8bb]. file: 2ad2eacdde check-in: [956bb792fd] user: stephan branch: trunk, size: 398444
2022-02-21
13:11
Added cwal_cb_throw(), a utility which was been re-re-implemented in every cwal client to date. file: 6327882f35 check-in: [e632b43226] user: stephan branch: trunk, size: 398444
2022-02-18
18:05
If cwal_scope_pop2() is asked to upscope the properties container of that scope, clear out the object-level flags the scope set, just for sanity's sake (noting that there are other ways to propagate that value out which do not clear the flags, so this is not a bullet-proof solution (not that it solves a genuine problem, it's just a sanity measure)). file: 54c88e4274 check-in: [21a308be81] user: stephan branch: trunk, size: 398088
11:07
Added cwal_array_copy_range2() to offer saner(?) offset semantics than cwal_array_copy_range(). file: b72269e2a1 check-in: [fbc9e977a7] user: stephan branch: trunk, size: 398086
2022-02-17
18:15
cwal core: fixed a bug in cwal_obase cleanup which led to a null-pointer deref after using cwal_props_clear() and then visiting the properties. (Edit: this ended up introducing a memleak in the cleanup of arrays and hashtables, unnoticed until 2022-02-22, corrected in [956bb792fdd3ac73].) file: 49accfad48 check-in: [02484d69fb] user: stephan branch: trunk, size: 397069
14:11
whcl: ported in s2's numeric types and docs. Fixed breakage in the command/subcommand forwarding where script-side functions did not get set up properly before being delegated to. Reserved the 'new' builtin. file: 4ce3ec3fef check-in: [656c90110f] user: stephan branch: trunk, size: 396950
02:22
whcl: started porting over class prototypes from s2 and got a generic command-subcommand dispatcher impl in place. Ran the first-ever bound method calls. file: 97f6a051f9 check-in: [92a84cf37d] user: stephan branch: trunk, size: 396703
2022-02-16
00:09
Added the cwal_exception_take() counterpart of cwal_propagating_take(). file: 9426d4e161 check-in: [868144c4ac] user: stephan branch: trunk, size: 395916
2022-02-14
14:02
whcl: more work on procs. Added proc test script and manual page. file: 5d1fe65876 check-in: [cc252060cb] user: stephan branch: trunk, size: 395393
10:27
More work on the whcl script func infrastructure. file: 77f8527893 check-in: [e544eab8ef] user: stephan branch: trunk, size: 395067
2022-02-12
14:49
whcl: implements the catch builtin. Discovered that we have no syntax for getting sub-properties of objects. file: 5ea0685345 check-in: [b751c9c1b0] user: stephan branch: trunk, size: 395030
2022-02-07
15:23
whcl: ported in s2's SIGINT handling. (Re)implemented the object/array builtins. Added generation of include/wh/cwal/autoconfig.h. file: a369a97e2c check-in: [f5116c2209] user: stephan branch: trunk, size: 394858
2022-02-05
15:08
Added cwal_new_string_value2(). Fixed a funny typo. file: 9e97b14735 check-in: [4ef24c1c9d] user: stephan branch: trunk, size: 394824
2022-02-04
01:07
Reimplemented whcl's dot-op state to use a tuple to simplify vacuum safety and cleanup of the corresponding values. file: dd09856ac6 check-in: [8749aef323] user: stephan branch: trunk, size: 394479
2022-02-01
20:39
Fixed a long-standing bug in cwal core scope cleanup which could cause an assertion to fail when an exception was left propagating at engine shutdown time. This never manifested before because s2 always grabs the pending exception but was just now triggered by whcl. Changed signature of cwal_buffer_format() to use a negative value to calculate the format string width. Added long-missing %b (cwal_buffer) specifier for cwal_appendf(). file: 5c244507fa check-in: [257c6ad335] user: stephan branch: whcl, size: 394470
12:47
Added the main public whcl_eval_script() APIs. They run through the script but do not yet actually evaluate it. file: 71773b9221 check-in: [c28323fe11] user: stephan branch: whcl, size: 394322
2022-01-31
14:40
Replaced cwal_buffer_replace() with cwal_buffer_reuse() based on usability experience in the libfossil tree. file: dd9be1888a check-in: [5e4eafeb52] user: stephan branch: whcl, size: 393967
14:22
Minor constness and argument validation tweaks. file: c90f1326ca check-in: [e397b2a610] user: stephan branch: whcl, size: 394170
10:27
Differentiate between CWAL_RC_xxx ranges reserved for engines and higher-level clients. file: 5fb579775f check-in: [c314758cb8] user: stephan branch: whcl, size: 394134
2022-01-29
15:04
lcl: API renaming and moving and refactoring. file: 574b438a42 check-in: [28549ec711] user: stephan branch: whcl, size: 393593
08:18
Lots of work on lcl. It can now parse, but not eval, lines of commands. file: 9a6c421055 check-in: [392f3e6f21] user: stephan branch: whcl, size: 393538
2021-08-01
10:23
Removed CWAL_FEATURE_SCOPE_STORAGE_HASH and changed the default of CWAL_OBASE_ISA_HASH to 1. file: c810847421 check-in: [deddd35e15] user: stephan branch: trunk, size: 393219
2021-07-24
10:45
Implemented cwal_hash_take_props() for the CWAL_OBASE_ISA_HASH case. That was the last known piece which required/requires fiddling for that build option. Time to try it out on my various CGI backends. file: 7bb4d03a3f check-in: [a98b4b273d] user: stephan branch: trunk, size: 394622
09:36
Some cwal_size_t to cwal_midsize_t conversions. Minor doc and constness tweaks. file: 577cdb043c check-in: [601b514dd3] user: stephan branch: trunk, size: 394252
2021-07-23
05:46
Minor doc updates. file: 067f390058 check-in: [0a79496327] user: stephan branch: trunk, size: 393689
2021-07-20
02:21
Found and documented (for the time being) an unexpected failure case when using the new cwal_obase hashtable storage. Renamed cwal_scope_import_properties() to cwal_scope_import_props() for consistency. file: a22163738d check-in: [b4f045c66a] user: stephan branch: trunk, size: 393168
2021-07-11
23:29
A full valgrind of the s2 test scripts is happy with CWAL_OBASE_ISA_HASH mode, but cwal_hash_take_properties() is disabled in that mode - it needs to be reimplemented for that case and is a bit of a beast. Aside from the unavoidable behavioural change of using type-strict property keys in hash mode, all seems to be working exactly as before. Memory cost comparisons are pending. file: eac2e754a3 check-in: [5e954ac3be] user: stephan branch: obase-isa-hash2, size: 393173
18:27
More baby steps towards hash-stored object properties. file: 78e64999aa check-in: [e0d28b94d6] user: stephan branch: trunk, size: 392801
17:45
More cwal_size_t ==> cwal_midsize_t changes. file: 581fd7cbeb check-in: [92f0fb90be] user: stephan branch: trunk, size: 392773
17:36
Inconsequential minor cleanups. file: 0613ee0ff2 check-in: [3310bf0b1c] user: stephan branch: trunk, size: 392665
17:20
More char-to-bool API conversions. Started changing the string APIs to expose cwal_midsize_t string lengths, though a couple such changes (namely cwal_string_cstr2()) are pending because they'll break a bit of s2's core. file: d8e1153570 check-in: [cdefef67f8] user: stephan branch: trunk, size: 392617
10:00
Renamed cwal_lsize_t cwal_midsize_t. Should probably just use uint32_t, but like the "documentation factor" of using this typename. file: 59c07eef94 check-in: [9ec0b252f6] user: stephan branch: trunk, size: 392138
08:42
core infrastructure: re-added the obase kvp iterator, a flag on cwal_list to flag whether it's being visited, and strengthened some internal assertions related to list/child visitation. file: a526dfb4df check-in: [45f6d620a6] user: stephan branch: trunk, size: 392127
2021-07-10
22:22
Refactored the core cwal_hash operations into the internal-only cwal_htable type, for eventual re-use in implementing hash-hosted object-level properties (as opposed to the current sorted list impl). A full valgrind of the s2 test scripts is happy. file: 5586c39ffe check-in: [5e0ce36380] user: stephan branch: trunk, size: 391880
20:14
Got CWAL_ENABLE_TRACE compiling again and added --trace-cwal flag to s2sh/s2sh2. file: 9b2478eee3 check-in: [b73445b7ca] user: stephan branch: trunk, size: 391713
19:56
Now it doesn't work in either mode. Stashing this for later analysis and rolling back to some previous version (possibly the start). file: f9d13f41e5 check-in: [9522bcf73e] user: stephan branch: obase-isa-hash-wha, size: 391868
11:21
Resolved a new memory leak, fixed a cwal_list_reserve() result misuse, and changed some cwal_size_t decls to cwal_lsize_t. file: 1a5e2e3a4a check-in: [4d6229e505] user: stephan branch: obase-isa-hash, size: 391871
10:35
More work on the new hashtable infrastructure. The old/non-hash obase case works with this new code, but still hammering on the new case. file: d54ce822c2 check-in: [4fdff30fc3] user: stephan branch: obase-isa-hash, size: 391831
04:26
More work on enabling hash storage for cwal_obase properties. file: b8fb9edc91 check-in: [a6b871bfd0] user: stephan branch: obase-isa-hash, size: 391717
00:04
Initial work on adding a compile-time option to make cwal_obase use a hashtable for property storage. That mode does not yet compile. file: af35c8ab8c check-in: [044ee16592] user: stephan branch: obase-isa-hash, size: 391716
2021-07-09
22:49
In prep for upcoming experimentation, capped cwal_list at 32 bits of length, rather than 64. Saves 8 bytes per array/hashtable on 64-bit builds. file: 71341e536d check-in: [a1749cbb7f] user: stephan branch: trunk, size: 391716
22:06
Changed a bunch of predicate function signatures from returning char to bool (now that we're C99, we might as well own it). file: 01931e2770 check-in: [9b35720349] user: stephan branch: trunk, size: 391714
21:59
Added cwal_prop_key_can() to check the data type of object property keys and hashtable keys so that we can reject any types for which their mutable state is accounted for in their comparison or hashing operation. Thus Buffers and Tuples are no longer legal as property keys and will trigger a CWAL_RC_TYPE error. Allowing those types as keys in the first place was a design error. file: 7288dfef4b check-in: [539060fab2] user: stephan branch: trunk, size: 391714
20:46
Refactored cwal_printf() interface to use return-0-on-success semantics because the classical printf semantics are next to useless for this particular API and this gives us the ability to propagate errors out properly. file: e59ba22112 check-in: [043c912982] user: stephan branch: trunk, size: 390960
2021-06-26
09:30
Removed s2_rc_cstr() and s2_rc_cstr2(), now that we have cwal_rc_cstr_fallback(). file: 4ab3b3cbb7 check-in: [9bb5de51f2] user: stephan branch: trunk, size: 390942
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: d1466a956c check-in: [e679463d26] user: stephan branch: trunk, size: 390519
02:40
A few cleanups to the s2_error/cwal_error port. file: 1773d15a2b check-in: [caa168b835] user: stephan branch: s2-remove-err-obj, size: 389102
2021-06-24
11:00
Had emacs reformat the core lib to 2-space indentation. file: 1084aa74c1 check-in: [29cf299dec] user: stephan branch: trunk, size: 388326
09:29
More work on the standalone t10n/c9n subsystem. file: 33b431525d check-in: [fb2e2b8f05] user: stephan branch: trunk, size: 390757
07:47
More work on the standalone t10n/c9n subsystem. file: d3cd403d9f check-in: [24029cb1d9] user: stephan branch: trunk, size: 390385
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: 80575d18cd check-in: [3d41e2d40f] user: stephan branch: trunk, size: 390213
04:30
Initial work as splitting s2's tokenization bits into a standalone sub-lib which depends only on cwal, not s2. file: 31d31567ac check-in: [241d125806] user: stephan branch: trunk, size: 384157
2020-05-22
06:31
Random drive-by doc tweaks. file: 2ad5841ce6 check-in: [cf93734fae] user: stephan branch: trunk, size: 384283
2020-02-18
21:15
Clarified in the docs that cwal_props_copy() and friends do not traverse/copy hidden properties. file: 5f4d83dd24 check-in: [dbc89b0be6] user: stephan branch: trunk, size: 383958
2020-02-10
13:00
Minor API doc updates. file: b4592747a9 check-in: [8ae3b6b195] user: stephan branch: trunk, size: 383632
2020-02-07
13:00
cwal_parse_argv_flags() now optionally accepts an array as its target, and appends all raw/unparsed flags to that array. s2sh/s2sh2 now create s2.ARGV as an array. file: 993edd336f check-in: [058c6f6ae8] user: stephan branch: trunk, size: 381861
2020-02-06
11:58
Consolidated the remaining s2sh/s2sh2 code except for their --help handling into shell_common.c. shell.c now uses cliapp.c for its input and REPL, just like shell2.c. file: 9ca6548f7b check-in: [6f4bb57574] user: stephan branch: trunk, size: 381297
2020-01-18
05:14
Fixed some test code which was broken by the recent cycle-detection/iteration changes. Patched Object.eachProperty() impl to handle the iteration-related result codes (transforming them to exceptions). Changed cwal_props_visit_kvp() to *not* return CWAL_RC_CYCLES_DETECTED for concurrent visiting (which is now legal) and fixed some ancient incorrect docs in nearby functions. file: f87e7169d8 check-in: [9dfc28ffaa] user: stephan branch: trunk, size: 381494
2020-01-11
21:45
Minor internal cleanups, mostly removal of dead code. file: 5686cabf72 check-in: [0a6549cae8] user: stephan branch: trunk, size: 381971
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: f5814424fc check-in: [330a937990] user: stephan branch: trunk, size: 381463
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: 1ab8939924 check-in: [e458b2a5fd] user: stephan branch: trunk, size: 380973
2019-12-17
02:38
Style change: globally removed commas after 'i.e.,'. file: 07694457de check-in: [6100e95be2] user: stephan branch: trunk, size: 380906
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: 218bf22757 check-in: [040a1c6ac4] user: stephan branch: trunk, size: 380913
2019-12-13
01:07
Added a few missing is-visiting checks on property-modifying functions. file: 474e9ab1fc check-in: [81abb1596a] user: stephan branch: trunk, size: 380930
2019-12-12
17:27
More doc touchups. file: 0e190752c2 check-in: [bfafe617a4] user: stephan branch: trunk, size: 380896
13:26
More work on the s2 typeinfo() queries related to the new separation of distinct iteration capabilities. file: 2a7bf14967 check-in: [90ab9d353a] user: stephan branch: multi-iteration, size: 379868
12:52
Reinstated cyclic valid checks in the core JSON API via addition of another visitation-related RCFLAG (so we're now stealing 8 refcount bits for flags). Simplified and cleaned up the is-traversing flagging APIs. file: 1f3132627a check-in: [0cf849b260] user: stephan branch: multi-iteration, size: 379868
02:04
MOAR multi-iteration-related work. We broke the cycle-detection in the JSON bits with this undertaking, and now have to fall back to the configured max output depth to catch them. file: dcf9753717 check-in: [4fc57dd5d5] user: stephan branch: multi-iteration, size: 380305
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: 01806a5b28 check-in: [db9f4b10f3] user: stephan branch: multi-iteration, size: 378221
2019-12-11
23:06
Initial work on making multiple concurrent iteration possible/legal, and disallowing it at the right times (e.g., we cannot sanely iterate and sort an array concurrently). The s2 unit tests pass, after a couple minor modifications, but there is still lots of testing and documentation patching to be done. file: 058e8ea8af check-in: [e21f0af7f4] user: stephan branch: multi-iteration, size: 377966
07:39
Minor doc touchups. file: 865c681ef8 check-in: [88586302c0] user: stephan branch: trunk, size: 375929
2019-12-10
17:33
Flags-related refactoring in prep for an attempt to increase some flag sizes without increasing sizeof() (with the help of existing padding). file: 9925bc6258 check-in: [cdd0f4d93f] user: stephan branch: trunk, size: 375631
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: 7410cf015c check-in: [9484a7e93e] user: stephan branch: trunk, size: 374805
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: 792593a94e check-in: [394c5bbfa4] user: stephan branch: trunk, size: 374012
2019-12-08
15:33
API doc clarifications in cwal_value_get_cstr(). file: 20047101ad check-in: [39753e41a3] user: stephan branch: trunk, size: 373555
2019-12-07
08:33
Documented cwal_hash_grow_if_loaded() result value. file: 9dd4e649db check-in: [246e4bd94a] user: stephan branch: trunk, size: 373442
2019-07-19
05:43
Minor doc tweaks. file: 29d3587edc check-in: [6d12117d3c] user: stephan branch: trunk, size: 373236
2019-07-17
19:16
Exposed the cwal-internal hashing function via the public API, as cwal_hash_bytes(), because i have a good use for it in the UUID module. file: 2a883acad9 check-in: [34e21ebeca] user: stephan branch: trunk, size: 373301
2019-07-06
07:21
Fixed core property lookup to always perform type-strict comparison if either the lookup key or property key is of type CWAL_TYPE_BOOL. Without this, X[true] was resolving to the first truthy property key, and X[false] to the first falsy one. file: d103db1435 check-in: [a32fcc4268] user: stephan branch: trunk, size: 372956
2019-07-02
16:53
Minor doc cleanups. file: f2b8899382 check-in: [3b09425073] user: stephan branch: trunk, size: 369506
2018-12-01
16:32
Minor error handling tweak which might or might not do anything. file: 99c1fbeb8d check-in: [978c1c04d2] user: stephan branch: trunk, size: 369234
2018-11-30
18:11
Minor tweaks/cleanups. file: 19a013c5ba check-in: [05e167e2eb] user: stephan branch: trunk, size: 368976
2018-11-29
16:22
Removed cross-references to removed function. file: ca4e005ec2 check-in: [87ca29d021] user: stephan branch: trunk, size: 368882
16:19
Removed cwal_utf8_char_next() - its interface is fundamentally flawed. Need to revisit it later (thankfully it was only use in test code). file: f45bf3f012 check-in: [935a059e13] user: stephan branch: trunk, size: 368943
14:43
Minor tweaks caught while porting some of this code into another tree. file: 86eec94c69 check-in: [4398c5bec4] user: stephan branch: trunk, size: 368821
09:02
doc tweaks. file: eb30e85b5f check-in: [f2535f20a3] user: stephan branch: trunk, size: 368499
2018-11-28
14:33
Core lib doc updates/additions. Added cwal_engine::metrics::len1StringsSaved to record how many length-1 strings are saved via that optimization. Moved the length-1 ASCII optimization flag into cwal_config.h. file: 9708e01330 check-in: [39016bac11] user: stephan branch: trunk, size: 368811
2018-11-27
12:04
more docs. file: ded9f7799c check-in: [f5310099db] user: stephan branch: trunk, size: 367170
11:12
docs docs docs. file: 8850d5a7e4 check-in: [45a02b6dd1] user: stephan branch: trunk, size: 367117
09:25
cwal_function_call_in_scope() now calls cwal_refunref() on the callback's result if its own caller passes NULL for the rv pointer (which, in practice, is never done). Fixed a missing cwal_strlen() in cwal_prop_take() (a holdover from when the API treated an explicit length of 0 to mean 'count it yourself'). Removed the last of the functions which were marked as @deprecated. file: 259923f828 check-in: [7b251481bd] user: stephan branch: trunk, size: 365514
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: 334ddefaf7 check-in: [73251240a6] user: stephan branch: trunk, size: 367662
01:05
Swapped out cwal_double_to_cstr() with an impl which doesn't write e-notation (because s2 can't read that (and i don't want to teach it to), so it shouldn't generate it). This caused several hours more hassle than it really should have, in the form of broken comparison operations and weird stringified output, but floating point numbers are strange, strange beasts. file: 7fc2bfc296 check-in: [6fcff747c1] user: stephan branch: trunk, size: 369905
2018-11-26
22:37
Minor doc update, fixed s2_dump_value() to json-ize tuples. file: 5b4ccdc965 check-in: [1b52501e72] user: stephan branch: trunk, size: 369664
19:51
Added s2/mod/math, plus related build tinkering and API doc tweaks. file: f9bdb802e0 check-in: [9e7fa3fd8d] user: stephan branch: trunk, size: 369618
16:31
Improved/hardened the cwal_buffer_value() is-this-really-a-Value check. file: 53b14fa83e check-in: [7db9dc8d92] user: stephan branch: trunk, size: 369495
11:45
Added cwal_scope_vacuum() in order to play with recursive vacuuming (which still breaks s2 because there are many places where we recurse into the eval engine). file: e9fa81e40e check-in: [014b06ff6d] user: stephan branch: trunk, size: 369189
10:24
Minor cost-correctness improvements. file: 080251e2c6 check-in: [dea8b92b24] user: stephan branch: trunk, size: 368610
2018-11-24
21:15
cwal_value_unhand() now returns the value passed to it, instead of avoid, in the interest of making it easier to use for the most common usage. file: cde5c7d803 check-in: [7aefa0fc0e] user: stephan branch: trunk, size: 368598
04:43
doc updates. file: cb9c77142f check-in: [256023d328] user: stephan branch: trunk, size: 367874
2018-11-23
14:43
Snapshot. Lots of cleanup of the new s2_scope mechanism. Removed some now-obsolete s2 scope-handling functions. file: 7b1eef309f check-in: [b7de2a8e38] user: stephan branch: scope-push-pop-hooks, size: 366122
07:48
Initial work on scope push/pop hooks. The intent is so that clients (s2) can keep their own scope state in sync with cwal's, but whether that will really be possible is as yet uncertain because of engine init/startup timing vis-a-vis access to the allocator. file: 8fde3b27e9 check-in: [a1472de17e] user: stephan branch: scope-push-pop-hooks, size: 363863
02:20
Doc updates. shell_extend.c tweak so that its default behaviour matches the docs. file: 3f28772e54 check-in: [dab324f302] user: stephan branch: trunk, size: 359998
2018-11-22
15:10
Removed some dead code: cwal_var_unset_s(). file: 866ddf1398 check-in: [b9357f7de4] user: stephan branch: trunk, size: 359994
2018-11-07
18:19
Enhanced cwal_value_from_arg() a bit. file: 8447a83afe check-in: [3fafa494c7] user: stephan branch: trunk, size: 360244
2018-11-05
17:29
Expanded the case-folding API a bit. file: 880c098ab8 check-in: [9faf10cc39] user: stephan branch: trunk, size: 359489
10:54
API doc updates and corrections. file: 1cc8f041ed check-in: [38dd970d98] user: stephan branch: trunk, size: 357493
2018-11-04
11:22
Cleaned up ref/unref handling in cwal_parse_argv_flags(). Its previous behavour could have caused Grief with interned strings. file: 95ec319a52 check-in: [1a2383df89] user: stephan branch: trunk, size: 352306
2018-09-20
07:23
Minor doc tweak. file: 2ccbc6c264 check-in: [2c428b9441] user: stephan branch: trunk, size: 351849
2018-05-23
18:10
Removed a now-resolved FIXME comment. file: 6a10d5088b check-in: [7061be7667] user: stephan branch: trunk, size: 351819
15:54
Array sorting with a custom callback now sets the is-visiting flag for the duration of the sort, to prohibit iteration during the sorting process. file: edf03e14ec check-in: [2fa3e2286d] user: stephan branch: trunk, size: 351982
15:09
Replaced the broken internal cwal_array_sort_stateful() qsort with a working one and added a way for non-exception errors to be propagated back out of cwal_array_sort_stateful() callbacks. file: 74601bbf4c check-in: [75cd61d03c] user: stephan branch: trunk, size: 350953
2018-05-14
23:05
Corrected signature of cwal_string_case_fold() to accommodate built-in static strings (those with no cwal_engine instance). file: 3c75c35e6e check-in: [9526e7214a] user: stephan branch: trunk, size: 350080
2018-05-08
13:29
Changed how cwal_next_prime() works, utilizing the pre-existing 1000 primes list. file: c315edb7b2 check-in: [a02432c152] user: stephan branch: trunk, size: 349720
2018-03-12
20:50
A few function prototype tweaks: f() ==> f(void) file: 386c15f30b check-in: [ce364dbef9] user: stephan branch: trunk, size: 349535
2018-01-03
16:04
consistency: changed signature of cwal_prop_has() and cwal_prop_has_v(), removed cwal_prop_has_s(). file: 0d741e4e15 check-in: [db1a5c3526] user: stephan branch: trunk, size: 349526
2018-01-02
04:28
generic tinkering. file: 206c862ccc check-in: [bbba146715] user: stephan branch: trunk, size: 349624
2017-12-31
17:46
Modularized the s2-to-C module build bits. Fixed broken static plugins (a macro resolution problem). file: 20c6340a1b check-in: [b99c040786] user: stephan branch: trunk, size: 349459
2017-12-30
22:41
Return value semantics change for cwal_utf8_char_to_cstr(): no longer returns 0 when fed a NUL byte. file: 68815b4732 check-in: [74b1fe6772] user: stephan branch: trunk, size: 349961
2017-12-27
12:36
removed some dead code, minor internal touchups. file: ab7fe70a3a check-in: [e06340a5d2] user: stephan branch: trunk, size: 349939
11:30
Minor refactoring in the scope of interceptor support. Changed the cwal-internal string hash routine again. Added some metrics output. file: b1a480aacd check-in: [47e9b8e8a6] user: stephan branch: trunk, size: 349698
2017-12-26
16:28
Cleanups and preliminary work for adding property interceptors to the core via alternative getter/setter APIs. file: 46f11a2eed check-in: [ed485b7b8b] user: stephan branch: trunk, size: 349265
10:33
cson_json_parse_filename() now interprets the filename "-" as stdin, analog to how cwal_json_output_filename() interprets "-" as stdout. file: 4d6b84679f check-in: [c4063c7436] user: stephan branch: trunk, size: 346235
10:24
Removed more superfluous funcs. Added one unit test. file: c156a27493 check-in: [ad93dd9b93] user: stephan branch: trunk, size: 346188
09:59
removed some old/unused functions. file: 0a4878a1d0 check-in: [f5570c4333] user: stephan branch: trunk, size: 348244
2017-12-25
12:04
Removed deprecated cwal_args_callee_state(). Minor doc tweaks. file: 8043a1a6ab check-in: [56e46c52bd] user: stephan branch: trunk, size: 348955
2017-12-08
14:32
Added cwal_scope_pop2(), analog to s2_scope_pop2(). file: edb16601c7 check-in: [09c10d90c0] user: stephan branch: s2-interceptors, size: 348844
2017-12-06
19:13
Apparently fixed an old bug in cwal_prop_get_kvp(). A slight semantics change to cwal_kvp_flags_set(). Tweaks to how cwal_function_call_in_scope() handles references. Fixed an old missing result code check which somehow never caused grief (or did it?). file: d1ad2f0206 check-in: [e491db6af4] user: stephan branch: trunk, size: 348124
12:58
Added basic doxygen docs build for the core cwal API. file: d1f6498d60 check-in: [b9619833c0] user: stephan branch: trunk, size: 348034
12:02
cwal_json_output_opt now supports providing its indentation as a string, rather than an integer. s2's Object.toJSONString() and friends now also support passing a string instead of an integer. file: f4ea664a27 check-in: [1aa36071f0] user: stephan branch: trunk, size: 347948
2017-12-03
21:09
Tiny random cleanups. file: 8b91188067 check-in: [ed33242e31] user: stephan branch: trunk, size: 346495
15:16
Added cwal_build_info() to make various build-time config options available to client code. Stole another bit from the maximum string length to add an is-ascii flag to strings, which we can use to speed up many algorithms for the most common cases (but it slows down string creation for the common case). file: 0fffb209d5 check-in: [72236d95aa] user: stephan branch: trunk, size: 346495
2017-12-02
14:33
Made the range of built-in integers build-time configurable and removed the shared-instance integer cwal_weak_refs. Removed some cruft from CWAL_BUILTIN_VALS. file: a520a2421b check-in: [79988ded9c] user: stephan branch: trunk, size: 343928
2017-12-01
19:26
Added cwal_engine_outputer_get/set() to simplify swapping out the outputer. Added cwal_output_f_cwal_outputer(). file: 4b37a18704 check-in: [2a21245d11] user: stephan branch: trunk, size: 343923
2017-11-30
18:32
a minor const correctness fix in cwal_unique_wrapped_get(). file: fb922c9478 check-in: [38620308fe] user: stephan branch: trunk, size: 342541
11:59
minor API docs touchup. file: 843bdd9bca check-in: [cf97bd6f4d] user: stephan branch: trunk, size: 342483
2017-11-21
15:57
Fixed the length-1 string handling for X- and Z-strings. file: 4d5f90424a check-in: [717abf2614] user: stephan branch: trunk, size: 342392
2017-11-15
10:25
added cwal_utf8_char_at(). file: 2b1d254718 check-in: [3e6e9ebb91] user: stephan branch: trunk, size: 342016
00:07
Fixed an interesting 'symbol X already defined in this scope' misdiagnosis caused by [ea2214074d549590]. file: 53f1bcc4d0 check-in: [1b2c490287] user: stephan branch: trunk, size: 341451
2017-11-13
12:26
minor utility API renaming and additions. file: fce9364272 check-in: [d8df88227b] user: stephan branch: trunk, size: 341131
2017-11-12
11:35
minor API renaming. file: 5ac14dc8aa check-in: [b96526ad29] user: stephan branch: trunk, size: 339588
10:49
Discovered and applied gcc's -Wextra warning level, plus patched up violations it caught (mostly missing struct member initializers). file: 72dd747341 check-in: [f13f6c3c4b] user: stephan branch: trunk, size: 339597
09:06
Migrated s2.Buffer.replace() implementations into core cwal functions. file: 1268747c64 check-in: [e980d01913] user: stephan branch: trunk, size: 339595
2017-11-11
18:33
minor doc additions. file: b014e07909 check-in: [f0a5e26dc2] user: stephan branch: trunk, size: 336844
2017-11-10
20:49
cwal_value_from_arg() now trims starting/ending quotes from the value part of --key="value". file: e15774cf64 check-in: [f37e0dbf88] user: stephan branch: trunk, size: 336625
2017-11-07
13:14
minor doc fix for cwal_utf8_read_char(). file: ec990b90c7 check-in: [3bf0b92a1b] user: stephan branch: trunk, size: 336513
13:06
imported GLOB/LIKE pattern matching from sqlite3. Added s2.glob(glob,haystack[,globStyle]). file: de237120b5 check-in: [4eac2f17a9] user: stephan branch: trunk, size: 336380
2017-11-03
14:51
A minor func sig change which (surprisingly) didn't break anything. file: 6d523a703d check-in: [da51b99788] user: stephan branch: trunk, size: 335511
11:49
Minor semantics change in cwal_exception_setfv() and friends (returning CWAL_RC_OOM as-is, rather than trying to create an exception object). file: 127b84bc86 check-in: [5e957a91c3] user: stephan branch: trunk, size: 335494
02:46
Increased default single-alloc size cap when over-allocation is enabled. file: b3632206af check-in: [4d8910acb8] user: stephan branch: trunk, size: 335332
00:59
minor doc tweaks file: 4d100c18ad check-in: [38b67c092e] user: stephan branch: trunk, size: 335344
2017-11-02
22:43
minor doc update. file: 52510d33b7 check-in: [f93d0591a5] user: stephan branch: trunk, size: 335101
2017-10-12
12:11
Random tiny cleanups, auto-reformatting, and fixed (i think) CWAL_TYPE_LISTMEM allocation metrics tracking. file: ea541128ff check-in: [d7ba485ecd] user: stephan branch: trunk, size: 335115
2017-10-07
13:38
re-renamed a couple routines left mis-named by the strlen refactoring. file: 3b3c60b28f check-in: [a78283a20f] user: stephan branch: trunk, size: 335596
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: ad798d51d8 check-in: [ef477c5d1e] user: stephan branch: trunk, size: 335598
2017-03-20
11:56
cwal core now sorts Object properties internally, making searches faster (on average). file: fa79bb37af check-in: [792bbb7ddd] user: stephan branch: trunk, size: 335259
2016-08-30
18:07
Forgot to add the new functions in the header. file: 062fa6f3dd check-in: [ac69d2a631] user: calebg branch: cwal-ndebug, size: 335010
2016-08-22
11:54
fixed CWAL_TYPE_TUPLE docs (referred to old/experimental/non-existent PAIR type). file: da72b8c48a check-in: [3da21f1ec3] user: stephan branch: trunk, size: 334220
2016-03-07
17:55
Ported s2 String.indexOf() to cwal_utf8_indexof(). Fixed a couple wrong no-match return cases in indexOf() (was still returning undefined (historical semantics) in some cases). file: 44ea174904 check-in: [8b8f0837cd] user: stephan branch: trunk, size: 334254
2016-03-05
20:52
Refactored s2's string case folding utilities into the cwal core. Need to eventually do most of the string utilities (indexOf, split, etc.), but i have an immediate use for this one. file: 5214105558 check-in: [6ad30c288e] user: stephan branch: trunk, size: 332948
2016-03-01
16:36
merged in trunk, resolved conflicts. file: a176909e11 check-in: [9128a3b5d8] user: stephan branch: core-prop-interceptors, size: 334759
2016-02-28
13:55
Refactored the vacuum-safe flag from cwal_obase::flags to cwal_value::rcflags. s2_eval_ptoker() now uses a Unique instead of an Array for keeping its pending result safe (this is slightly cheaper), but in theory we can factor out that middleman (first attempt failed, so fell back to the Unique as an easy workaround). file: baf91d5503 check-in: [15092b9bd0] user: stephan branch: trunk, size: 331669
11:26
split off cwal_refcount_t from cwal_size_t so that we can eventually (if needed) up the refcounts+flags to 64-bits on 32-bit builds without increasing cwal_size_t (which would have a higher overall cost). Stole another (the 6th) refcount bit to allow us to move the vacuum-safe flag from containers to values. file: 725461f039 check-in: [6f574d3f55] user: stephan branch: trunk, size: 331653
10:56
merged trunk, resolved a conflict. file: 8e301ba953 check-in: [08244059ce] user: stephan branch: core-prop-interceptors, size: 334814
2016-02-26
14:57
tuple docs and an iteration error check fix. file: 244a3e2da0 check-in: [3ceffbf8b9] user: stephan branch: cwal_value_pair, size: 331724
01:25
okay, got carried away: discovered that hashes as scope storage fail to trigger const violations on s2 assignments, at least in one of the unit tests (but not in the interactive shell, for reasons unknown). Too tired to debug it further now. file: 0179f336b2 check-in: [42ddd6cf8c] user: stephan branch: cwal_value_pair, size: 330022
2016-02-25
23:14
treat tuples as arrays for json output. file: 182707fd52 check-in: [49868696e7] user: stephan branch: cwal_value_pair, size: 330026
22:18
Added foreach() support for tuples, working like arrays. And stole another refcount bit to get the is-visiting flag for cwal_values (needed for tuples and uniques, though uniques don't currently use it (they really should)). So far 5 refcount bits stolen for flags. file: 9e97606db5 check-in: [515942ded1] user: stephan branch: cwal_value_pair, size: 329945
21:42
refactored pairs as tuples (fixed-length arrays). Still need to add foreach() support. file: b25d0ff598 check-in: [5cc361ae64] user: stephan branch: cwal_value_pair, size: 329861
19:25
merged in trunk. file: 2c8e16c1cc check-in: [ec839ef681] user: stephan branch: cwal_value_pair, size: 330102
17:12
changed semantics of cwal_array_visit/visit2() when it comes to NULL entries (they are no longer skipped over, so that iteration can keep track of the indexes properly if it wants to, without having to jump through hoops to do so). file: 6517430850 check-in: [8ecd168f4b] user: stephan branch: trunk, size: 328892
2016-02-16
18:09
i had a property setter interceptor working, then broke it, and am now too tired (and this machine has no debugger). Someone's getting cleaned up when they shouldn't, random crashes. To look at later. file: 7570d224d0 check-in: [ef67b58df2] user: stephan branch: core-prop-interceptors, size: 331343
14:37
merged in trunk file: d188c3053e check-in: [e5dfe6a291] user: stephan branch: core-prop-interceptors, size: 331265
14:29
merged in trunk file: 9faf4381d1 check-in: [7658116a71] user: stephan branch: cwal_value_pair, size: 329463
12:11
Got rid of cwal_unref_from(). s2 still works. file: deda79dcae check-in: [78bac73345] user: stephan branch: trunk, size: 328253
2016-02-15
15:37
added single highest-ever refcount to cwal_engine::metrics to help inform decision-making about hijacking more refcount bits for per-value flags. Currently 260-odd refs on s2's Object prototype in the s2 core unit tests. file: 830c7d9187 check-in: [133d7cfdd9] user: stephan branch: trunk, size: 328338
2016-02-14
13:28
Added experimental foreach keyword to s2. file: 3717d4dfa5 check-in: [d68eaaaf18] user: stephan branch: trunk, size: 328061
2016-02-13
19:22
Minor tweaks to get it compiling (again) with CWAL_SIZE_T_BITS=16. file: bc6d3258a0 check-in: [6509fa8dd3] user: stephan branch: trunk, size: 328056
16:00
merged in trunk. file: 0a9ffd2875 check-in: [12de6a8d35] user: stephan branch: core-prop-interceptors, size: 330848
15:59
Merged in trunk, as it's about to get messy with planned internal refcount refactoring. file: 995a090f81 check-in: [da81a83408] user: stephan branch: cwal_value_pair, size: 329046
05:32
Minor metrics dump output addition (total refcount of all interned strings). file: 0ccf31fda1 check-in: [745f3a1f2c] user: stephan branch: trunk, size: 327836
2016-02-12
14:04
minor change to how cwal_weak_ref is freed/allocated, to make use of the chunk recycler. Minor doc tweaks. file: cd2259c0c7 check-in: [db36c3e32a] user: stephan branch: trunk, size: 327703
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: b01d633aa6 check-in: [f505331bdb] user: stephan branch: cwal_value_pair, size: 328310
2016-02-11
20:02
merged in trunk. file: 72c97c313d check-in: [66ba5effe5] user: stephan branch: core-prop-interceptors, size: 330112
2016-02-06
13:25
Restructured how functions manage their source code, now that they have a rescoper. It is no longer stored in the global scope, but scoped along with the containing Function. file: 506cdca5d7 check-in: [1bee5e925d] user: stephan branch: trunk, size: 327100
12:06
Refactored cwal_native_rescoper_f() into cwal_value_rescoper_f() and consolidated the cwal_native/cwal_function APIs for those. It was easier than expected. file: 267a2382d7 check-in: [599e5b4b81] user: stephan branch: trunk, size: 327006
11:48
Added a rescoper to cwal_function's state, analog to cwal_native. Now to consolidate them using the newer interface. file: 1867abd0b2 check-in: [e2d831d607] user: stephan branch: trunk, size: 326368
02:08
Fixed a param of type char which should have been int (char is unsigned on some platforms). Minor internal commentary and tinkering. file: 8f6670e8f3 check-in: [4f63014a31] user: stephan branch: trunk, size: 325297
01:10
Added integer values 2..10 to the built-in constants. The malloc difference in s2's unit tests is absolutely negligible (a small handful). Maybe we'll crank it up to 100 someday. file: 66df3496f5 check-in: [7745e5b370] user: stephan branch: trunk, size: 325299
2016-02-05
23:43
Some experimentation with a different internal approach to property setting in some case (avoiding a second lookup). file: 67540e0bd3 check-in: [09988759e5] user: stephan branch: trunk, size: 325212
20:48
empty-output fix in s2's string.replace(), typo fix. file: 989ca37a6a check-in: [8c89c2e9c4] user: stephan branch: trunk, size: 322673
20:17
finally added String.replace() in s2. file: 6141aeb9ec check-in: [9254246116] user: stephan branch: trunk, size: 322673
15:19
minor random cleanups. file: f101b8c3f6 check-in: [9bc471028a] user: stephan branch: trunk, size: 322469
2016-02-03
20:09
minor doc update. file: 5ff60da074 check-in: [8c6026baf9] user: stephan branch: trunk, size: 322245
20:07
minor doc updates. file: a947404a4f check-in: [886f238ab0] user: stephan branch: trunk, size: 322103
2016-02-02
19:29
merged in trunk. file: 3108ec2ffa check-in: [7c7c6b1e0f] user: stephan branch: core-prop-interceptors, size: 324771
18:36
typo fix. file: 4497bc6963 check-in: [a7c1bcd815] user: stephan branch: trunk, size: 321729
2016-02-01
18:02
started adding some infrastructure to allow a cwal_engine to be marked as "dead", which basically means "in a debug build, it would have asserted by now, but this is not a debug build." When an engine is dead, it might have leaked memory to avoid manipulating memory which appears (to cwal) to have been corrupted or misused (99.9% of the time, unreferenced too many times). file: 3d51aeace2 check-in: [0ca7f73ed8] user: stephan branch: trunk, size: 321728
2016-01-31
17:12
minor doc update file: 546a964f0c check-in: [cb89f055aa] user: stephan branch: trunk, size: 320083
2016-01-26
17:06
more interning notes/warnings. file: c23ce9c46d check-in: [48bf6eead2] user: stephan branch: trunk, size: 319990
16:54
found another instance of string interning screwing up client code by wiping values out from under it, added a couple assertions and halfway informative crash messages. file: d8c63bb728 check-in: [1c111ca778] user: stephan branch: trunk, size: 319376
2016-01-23
19:55
minor doc updates, removed some dead code. file: 1dd5e38356 check-in: [73457eaf71] user: stephan branch: trunk, size: 319032
19:29
disable cwal_prop_set() and friends when finalizing (can theoretically only be seen by clients in the context of a cwal_native/Native circular reference manipulated in the Native half's finalizer. file: 5b7b440f19 check-in: [18143f714e] user: stephan branch: trunk, size: 319036
16:48
added cwal_var_set_with_flags(). file: 067c2f7ee2 check-in: [b3f8ba341e] user: stephan branch: trunk, size: 317844
12:01
minor semantics change in cwal_args_state() and cwal_function_state_get(). file: 6ed5561d1a check-in: [6bbcd9bcef] user: stephan branch: trunk, size: 317405
11:36
minor doc tweak. file: 89df594845 check-in: [6df4b19f50] user: stephan branch: trunk, size: 317284
2016-01-22
15:25
merged in trunk. file: af639e4369 check-in: [e75bac64fb] user: stephan branch: core-prop-interceptors, size: 320195
2016-01-21
09:06
renamed cwal_hash_search_v_kvp() to cwal_hash_search_kvp_v() for consistency with recent similar changes. file: acd33c8ff3 check-in: [aae2daf7a3] user: stephan branch: trunk, size: 317153
2016-01-18
09:06
minor doc tweaks/fixes. file: 708b4774cb check-in: [dbdb3f9b76] user: stephan branch: trunk, size: 317153
2016-01-13
20:38
some prep work for property interceptors experimentation. file: 74635ba20f check-in: [5983b9b959] user: stephan branch: core-prop-interceptors, size: 320189
2016-01-11
18:29
Added CWAL_VERSION_STRING config option and populate it from the fossil info if it is available. added --version option to s2sh. file: 75d4a623c9 check-in: [035cefe320] user: stephan branch: trunk, size: 317147
16:53
added workaround: string interning no longer re-uses an interned string when a copy in the interning table has a refcount of 0. Interned values should now not introduce any weird/hard-to-find differences from other values. Incidentally also undid a recent code tweak which broke the cwal_value_unref() return value expectations. file: 3419f10b42 check-in: [da9d7bdceb] user: stephan branch: trunk, size: 316876
16:14
characterized/documented an inherent incompatibility with string interning and the use of temp values (specifically, strings, with a refcount of 0), in which a downstream call can (_seemingly_ legally) nuke a value created higher-up in the call chain, because string interning confuses the "real" ref count of temp values. Aha... there might be a workaround for this in interning itself (don't use interned copies if their refcount is 0). file: 28c72a831c check-in: [970642d496] user: stephan branch: trunk, size: 316619
2016-01-10
14:37
added cwal_memcap_config.forceAllocSizeTracking and the -fst/--fst flags to s2sh to toggle it. file: 9f1b9d777f check-in: [d1f8344ad3] user: stephan branch: trunk, size: 314254
05:45
minor tinkering with interrupt flag handling, doc additions. file: ae73305613 check-in: [c0bcb77c9e] user: stephan branch: trunk, size: 313714
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: c71ed96e39 check-in: [4d688d1ffc] user: stephan branch: s2-scope-hashes, size: 313118
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: 89a1a04c1d check-in: [b79462d915] user: stephan branch: s2-scope-hashes, size: 312462
01:59
scopes seems to work with both hash and property storage. still doc cleanups to make and valgrind output to compare. bed time. file: 1a0117d51c check-in: [97b6c34301] user: stephan branch: s2-scope-hashes, size: 311365
00:40
most/much of the groundwork for making scopes be capable of using either objects or hashtables for property storage. file: a30f91c58b check-in: [99e0b10067] user: stephan branch: s2-scope-hashes, size: 310881
2016-01-07
19:19
minor internal refactoring to facilitate scopes which can optionally use hashes instead of objects for property lookup. Also imposed string length limits, as too-big strings would overwrite the 2 bits of encoded data in cwal_string::size. Removed cwal_new_number(). file: 60f3b1bdd4 check-in: [bedc1cdb2a] user: stephan branch: trunk, size: 309826
17:41
typo fix. file: edb5b62d95 check-in: [9fd451f020] user: stephan branch: trunk, size: 309193
14:56
merged enum-with-value branch to trunk and extended cwal_array_index_of() to take a flag to control type strict/non-strict comparison. file: 3a3f8ad1df check-in: [1f2e988254] user: stephan branch: trunk, size: 309192
2016-01-06
15:15
port cwal_hash_grow_if_loaded() and cwal_next_prime() from s2 into the core. file: f7ddb678e0 check-in: [cb58cd5a46] user: stephan branch: enum-with-value, size: 308879
2015-07-08
14:42
minor typo fixes. file: e68c879302 check-in: [c5b8aabe4d] user: stephan branch: trunk, size: 308126
2014-12-20
10:44
minor heuristic tweak in cwal_malloc2(). file: d920e8af24 check-in: [50fbcf8cc5] user: stephan branch: trunk, size: 308126
2014-12-19
02:24
added cwal_malloc2(), which first checks the chunk recycler, to enable a recycling optimization in Native implementations. file: dcc14495b3 check-in: [e58b15dc3f] user: stephan branch: trunk, size: 307854
2014-12-17
22:12
Minor const-related refactoring related to, and notes regarding, property accessor interceptors, which i would like to explore once the hand allows it. file: 3333a22bbe check-in: [063462ebcd] user: stephan branch: trunk, size: 307066
04:32
core: internal refactoring to make Buffer Values containers, so they may now hold properties and be prototypes. It was much easier than expected to implement and the cost increase is negligible (48 bytes) in the amalgamated s2 unit tests. file: b866aa7698 check-in: [73df044fc1] user: stephan branch: trunk, size: 307027
2014-12-16
20:19
refactored cwal_value_native_part() to take an optional type ID, and (if not 0) return only on a match. Fingers have stopped working again, so this is it for a while :/. file: f3bc738974 check-in: [a4ab970b93] user: stephan branch: trunk, size: 306465
17:40
Added metrics for "slack" bytes recovered by the chunk recycler. file: 1917d24715 check-in: [dc4ebce93d] user: stephan branch: trunk, size: 306227
2014-12-15
18:43
When running in over-allocating mode, disallow allocations >32 bits on 64-bit builds b/c the size counter is internally uint32_t for the time being (for the sake of 32-bit builds). file: 4248c55a9a check-in: [cc38a84bf8] user: stephan branch: trunk, size: 305781
2014-12-14
15:12
core: added optional allocation count/amount capping, in support of Caleb's site. Refactored the Unique type to act like a wrapper for a single value. My hand has had it - enough hacking for a good while :(. file: 300986d12e check-in: [8cb797fc88] user: stephan branch: trunk, size: 305471
01:14
minor refactoring of/additions to the hash API in prep for eventual additions in s2. file: a4961d86b7 check-in: [e6829b71af] user: stephan branch: trunk, size: 299821
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: 5cffb9f489 check-in: [339cea5e4d] user: stephan branch: trunk, size: 299108
2014-12-09
18:32
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. Tweaked internal handling of how we deal with operator-triggered errors, so that syntax errors do not get downgraded to exceptions. file: 8d62c281eb check-in: [ca3066ccb8] user: stephan branch: trunk, size: 298914
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: 76e4071477 check-in: [5ebcca7477] user: stephan branch: trunk, size: 298913
2014-12-07
16:20
minor refactoring and cleanups related to the new container flags/behaviours. file: a2a45c0957 check-in: [8335982e35] user: stephan branch: trunk, size: 295631
09:35
core: accounted for a NUL byte in z-string recycling, cwal_buffer_to_zstring() now shrinks its memory if it is "too big" (buffer recycling could give us a 20k chunk for what turns out to be a 50-byte z-string). file: 3ce89bad86 check-in: [8a4bd944bd] user: stephan branch: trunk, size: 295534
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: 91ec5d676d check-in: [52824f4adc] user: stephan branch: trunk, size: 294689
00:24
cwal_props_clear() now honors CWAL_CONTAINER_DISALLOW_PROP_SET. Started marking places where CWAL_RC_ACCESS needs to be replaced with CWAL_RC_CONCURRENT_VISITS. file: 7921ae73cc check-in: [aabeccc821] user: stephan branch: trunk, size: 295163
2014-12-06
20:33
core: went ahead and added a numeric value to "unique" values, but its value is unspecified (except that it will be unique amongst all live unqique-type values). Change how uniques are compared (using their numeric value). file: 559981504d check-in: [8d5f65f33a] user: stephan branch: trunk, size: 294417
18:46
Refactored cwal_printf_cstr() to use the cwal_engine allocator. file: 45fe19b986 check-in: [9f0c85b080] user: stephan branch: trunk, size: 294293
16:30
core: more work on the various container flags, s2: more work on the enum keyword, other minor cleanups. file: 6af381070d check-in: [8c61a703a0] user: stephan branch: trunk, size: 293675
2014-12-05
23:19
docs/formatting. file: 4945f0dfb9 check-in: [899edd1a03] user: stephan branch: trunk, size: 292602
22:44
more work on the container flags, added a couple missing cwal_value_is_XXX() variants, minor API renamings. file: 898f3366b3 check-in: [38060dc5e9] user: stephan branch: trunk, size: 292413
22:22
core: removed obsolete/duplicated function, doc updates. file: 69d275973b check-in: [104ffccfd9] user: stephan branch: trunk, size: 291889
22:11
fixed a misnamed function prototype. file: bdb7c44e0c check-in: [feb5dcff60] user: stephan branch: trunk, size: 291712
22:04
core: updated an outdated array init. file: 9278155708 check-in: [c66e9de385] user: stephan branch: trunk, size: 291719
21:47
core: added an internal flag to cap single max alloc size. file: 844ae4975e check-in: [d850e44911] user: stephan branch: trunk, size: 291709
19:49
core: reimplemented cwal_value_upscope() with new semantics. Added the seemingly missing upscoping of prototype pointers. file: f1c1587356 check-in: [3b90d0a7c8] user: stephan branch: trunk, size: 290894
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: 22d474f7e2 check-in: [6dbf89b73c] user: stephan branch: trunk, size: 291166
13:05
core: refactored the chunk allocator to remove all dynamic memory overhead plus all overhead related to the tracking of each chunk (it is now stored in the chunk itself). This means we can only recycle stuff larger than (sizeof(void*)+sizeof(cwal_size_t)), but we were doing that, anyway, except perhaps in some tiny buffer cases. file: 88502e1626 check-in: [435ccd17b7] user: stephan branch: trunk, size: 288815
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: 982d174aa1 check-in: [1977b92f84] user: stephan branch: trunk, size: 290206
01:31
core: metrics tweaks. Fixed mis-recycling of cwal_weak_ref. Added new "unique" type for use as opaque sentry values and a sort of enum type. file: 111be6dcec check-in: [d23084f162] user: stephan branch: trunk, size: 290084
2014-12-04
15:42
core: added a couple new memchunk metrics, disabled the memchunk recycler as the string recycling fallback because it is triggering a valgrind warning via memset() via cwal_value_new() - to be investigated later. file: 1a4cffd1b1 check-in: [0687ce7bc3] user: stephan branch: trunk, size: 289178
2014-12-03
16:59
Added cwal_hash_take_props() and s2.Hash.takeProperties(). s2.Hash.new(N) no longer modifies N to ensure it is prime. Fixed a redundant call to the chunk allocator. file: 7975a1190c check-in: [15810833d0] user: stephan branch: trunk, size: 289016
2014-12-02
19:50
Minor doc addition. file: 3142c2c479 check-in: [8de1696202] user: stephan branch: trunk, size: 288266
18:36
Added cwal_container_flags_set(), cwal_container_flags_get(), made some experimental tweaks to when containers use cwal_unref_from() during cleanup (only when their owning scope is being finalized). file: ea36ac3aca check-in: [71b228faa9] user: stephan branch: trunk, size: 288213
2014-11-30
15:54
Added cwal_free2() to potentially send memory to the recycler. file: 49ec401ad8 check-in: [058951d311] user: stephan branch: trunk, size: 286944
11:31
added type information to the recycle bin metrics output, s/cwal_value_type_id_name/cwal_type_id_name/g file: 19c4483a77 check-in: [5411fd86ba] user: stephan branch: trunk, size: 286417
2014-11-29
20:59
Factored out cwal_memchunk::left. 90% of the code was either setting it or just asserting that it was set. file: 8e5b348153 check-in: [3fc1976b1d] user: stephan branch: trunk, size: 286423
20:31
Moved cwal_engine::eWeak into cwal_engine::recycler, fixed consolidation of Value- with non-Value types in a single recycler: each recycler must be specific to a certain base type so that we can use the list-linking members to build the lists. file: e73841188e check-in: [8ba45681a0] user: stephan branch: trunk, size: 286567
17:17
Added per-recycling-bin hit/miss counters. file: 2d46816705 check-in: [520ed62f5d] user: stephan branch: trunk, size: 286707
15:11
more work on the metrics, now recording value recycling hits/misses. file: 679189171a check-in: [61ab49b29e] user: stephan branch: trunk, size: 286162
14:13
core: Value recycling bins are now allotted by the size of the Value, so like-sized Value types get grouped. i.e. more effective use of the recycler. However, this does not jive with the per-type-based configuration of bin sizes, but is an overall improvement with no losers, so we'll find a different configuration mechanism. file: 736e3cc607 check-in: [97b8ce3372] user: stephan branch: trunk, size: 285883
2014-11-28
19:30
more tweaking related to the new recycler bits. file: 269fc220e8 check-in: [06df42034a] user: stephan branch: trunk, size: 284159
15:28
core: improvements in the chunk recycler, and more memory gets recycled. file: 67ceabfe37 check-in: [a9a7aa2637] user: stephan branch: trunk, size: 282823
01:07
core: consolidated array/buffer memory recycling and made it usable for other purposes. Some types (hashes, z-strings) contribute to the recycling pool but do not yet draw from it. This cuts mallocs by just over 60 in the amalgamated unit tests, while costing minimal mangement memory (1-2k, allocated once). There is tweaking to be done and more stuff which can be recycled this way, but it's a promising start. Valgrind is happy. file: 796f4476f7 check-in: [94bd6ae976] user: stephan branch: trunk, size: 280875
2014-11-27
17:28
cwal.h: reformatted so that i can stop fighting with emacs wrt the indentation. Started adding infrastructure to consolidate array/buffer/hashtable memory recycling. file: 92222a8b2b check-in: [248828b538] user: stephan branch: trunk, size: 279887
2014-11-26
20:49
doc updates file: ce37addc94 check-in: [516915855f] user: stephan branch: trunk, size: 300869
2014-11-25
16:29
Minor but subtle semantics changes in cwal_function_call() and friends ("self" is now made vacuum-safe) and cwal_exception/propagating_set() (now uses unref instead of unhand when reseting/clearing the value). Accommodated that in s2/th1ish. Added cwal_utf8_char_next() utility function. In s2: started experimentation with the "new" keyword, but it is disabled and incomplete. Yeah, that is more than i wanted in this commit. file: e14ec4426f check-in: [bd8ecee444] user: stephan branch: trunk, size: 300786
2014-11-24
20:46
core: minor internal tweaks in prep for some experimentation in s2 which will expose scope variable storage Objects to script code. cwal_function_call() now refs/unhands its result value (currently same effect as before, but to account for potential upcoming experimentation). file: 84177e1c04 check-in: [d9d4be0daa] user: stephan branch: trunk, size: 295854
2014-11-20
20:19
Added cwal_first_1000_primes(). file: 33fd157889 check-in: [1ff9355f0d] user: stephan branch: trunk, size: 295574
19:43
Added cwal_hash_resize() and s2.Hash.resize(). file: 447463a2c7 check-in: [75730700a6] user: stephan branch: trunk, size: 295083
18:10
const correctness tweaks. file: 85cbb80ef5 check-in: [43b97ba497] user: stephan branch: trunk, size: 293923
18:06
core: refactored cwal_hash so that we can resize hashtables (APIs for that still pending). Negatively affects alloc counts (currently +1 per table) but the Value part of the hash is now recyclable and the hash table memory is currently reusable as array list memory. file: 4025ef32e8 check-in: [310ba44db8] user: stephan branch: trunk, size: 293910
2014-11-15
12:15
set cwal_json_output_opt::cyclesAsStrings default to 0 (which it should have been all along). file: 194f7cb7b2 check-in: [aaba4778e2] user: stephan branch: trunk, size: 293810
2014-11-14
18:13
added cwal_rc_str2(). file: dabfc11c8b check-in: [1d4b45a91f] user: stephan branch: trunk, size: 293810
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: da6c5e2cc4 check-in: [fec3c2c90e] user: stephan branch: trunk, size: 293646
2014-10-11
08:47
added cwal_engine_adjust_client_mem() so that clients can account (in some minimal way) for memory via cwal metrics. s2 now uses this to report stack token and script function memory. file: 980e22597c check-in: [8a484ca98c] user: stephan branch: trunk, size: 293838
2014-08-30
10:41
rewired cwal_cstr_length_utf8() to use the faster counting algo, minor signature change for client convenience. file: 24df2d8c9b check-in: [4ad2529912] user: stephan branch: trunk, size: 291367
05:28
cwal_function_call_array() now allows a NULL array. file: 3d8e2f8bd9 check-in: [ea21a5da3e] user: stephan branch: trunk, size: 291376
2014-08-29
12:08
minor tweak to max recyclable string size, gives slightly better results on 64-bit, tiny peak increase, marginal malloc reduction. file: 6cc9ee11c8 check-in: [7c13a15c82] user: stephan branch: trunk, size: 291356
2014-08-28
21:55
pedantic zero vs NULL tweak. file: 4f32d7072f check-in: [c486af2abd] user: stephan branch: trunk, size: 291315
21:35
minor doc and comment tweaks. file: 753a2dd71d check-in: [9cc9a32d91] user: stephan branch: trunk, size: 291313
2014-08-25
16:42
minor cleanup and semantics change (extension) in cwal_value_prototype_set(). file: 5b218f85d5 check-in: [de3c61a486] user: stephan branch: trunk, size: 290804
15:30
Deprecated cwal_args_callee_state(), as it's a functional dupe of (yet less efficient than) cwal_args_state(). file: 76c30bb11a check-in: [26f947ec9d] user: stephan branch: trunk, size: 290683
2014-08-23
15:51
core: consolidate integers and doubles into one recycling bin where there sizeofs are the same. Have to check it in to try it out on the 32-bit box (where they differ). file: 5eeba784f9 check-in: [06a8a0df82] user: stephan branch: trunk, size: 290501
2014-08-20
16:13
core: found another optimization, recycling cwal_buffer memory (5 buffers' worth) similar to how cwal_array list memory is recycled. In the s2 unit tests this reduces the aggregate alloc count by 3.5-9%, depending on their buffer usage, with the _potential_ for a higher peak usage of (sizeof recycled buffers), but that depends on how the app uses buffers. file: dd7a3769ed check-in: [1648e371e7] user: stephan branch: trunk, size: 289994
2014-08-18
20:38
minor internal tweak to cwal_array_shift(), doc touchups. file: 70b3a9bb71 check-in: [fcd9591170] user: stephan branch: trunk, size: 289219
2014-08-16
11:33
Added cwal_props_count() and cwal_props_has_any(), plus s2 Object.isEmpty() and propertyCount(). file: be9433cb5c check-in: [c95efcf86c] user: stephan branch: trunk, size: 288605
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: 18e8acaf95 check-in: [4c8879eff0] user: stephan branch: trunk, size: 288114
10:10
minor doc update. file: 1d47a0c49a check-in: [040e8f82e9] user: stephan branch: trunk, size: 287323
2014-08-14
13:09
It is now possible to disable the json parser bits at build-time (for licensing reasons), but their sources are still included in the amalgamation. file: eff016991b check-in: [fd66d10fee] user: stephan branch: trunk, size: 287202
2014-08-10
11:27
doc updates. file: a0ee3b7692 check-in: [70cfc14407] user: stephan branch: trunk, size: 286940
2014-07-23
15:23
minor doc update. file: 9348421a42 check-in: [de0af95331] user: stephan branch: trunk, size: 286332
2014-07-18
13:44
added cwal_buffer_to_zstring_value(), due to popular demand in client code. file: a17c8a6163 check-in: [f4705fd709] user: stephan branch: trunk, size: 286319
2014-07-05
14:33
minor doc updates. file: 496d99ca74 check-in: [e342cce29a] user: stephan branch: trunk, size: 286115
2014-07-02
18:06
core: added missing x/z-string to cwal_engine_recycle_max(). Comsetic metrics output tweaks. file: ffb0417c0a check-in: [464babc10e] user: stephan branch: trunk, size: 285859
17:48
Added cwal_hash_size(). file: c12dc66634 check-in: [3fd4fe9001] user: stephan branch: trunk, size: 286067
2014-06-30
20:47
Added cwal_json_output_opt::functionsAsObjects. file: 22e884b0ca check-in: [dd731c5dcf] user: stephan branch: trunk, size: 285953
17:27
doc additions. file: 4c8268f5f5 check-in: [101daef210] user: stephan branch: trunk, size: 285722
15:57
Added cwal_prop_set_XXX_with_flags(), to support setting hidden properties from s2. Fixed a pointer misuse in cwal_value_may_iterate() which caused it to return unpredictable results. file: e493f91786 check-in: [4434f6db64] user: stephan branch: trunk, size: 285310
2014-06-28
13:47
merged in the s2-semicolons branch. file: 26230fb73f check-in: [9af1212295] user: stephan branch: trunk, size: 284639
04:40
Added cwal_json_output_opt::cyclesAsStrings, which causes cycles to be output as some debugging-only string representation, rather than causing an error. file: 5cf96a789e check-in: [640531cd49] user: stephan branch: s2-semicolons, size: 284392
2014-06-27
19:00
Added cwal_kvp_flags_set(), for use in some upcoming s2 bits. file: 34599f046d check-in: [14d18baad5] user: stephan branch: trunk, size: 284074
2014-06-24
22:16
re-introduced cwal_propagating_set() and friends, as a place to store a single auto-propagating value (both th1ish and s2 implement this themselves, but that's no longer needed). file: d0ba64a03e check-in: [6a720a9358] user: stephan branch: trunk, size: 283827
19:55
minor doc/comment touchups. file: ee8f19cf2a check-in: [ae9fdce53a] user: stephan branch: trunk, size: 281744
2014-06-23
21:46
minor cleanups file: de69d7b2be check-in: [219ac05917] user: stephan branch: trunk, size: 281087
19:45
cwal core: X- and Z-strings now participate in value recycling (in the same pool, b/c they have the same sizeof()). Only their "shells" recycle, not their string bytes. Fixed a char-should-be-int case which had not yet caused a problem. file: a40f0f6f85 check-in: [ec0d73eba5] user: stephan branch: trunk, size: 280519
2014-06-22
13:24
Fixed another char-which-should-be-int (portability). file: e7c7119c1e check-in: [1925fff6dd] user: stephan branch: trunk, size: 279816
08:51
Added cwal_function_call_array(). file: dd94e7940d check-in: [519baf9738] user: stephan branch: trunk, size: 279817
2014-06-21
20:05
Added cwal_scope_search_kvp(). file: 9252accb20 check-in: [76860bb343] user: stephan branch: trunk, size: 279008
2014-06-19
13:51
Changed how cwal_engine manages its exception handle - it now takes uses ref/unhand, instead of not referencing at all. file: 9da0761f4b check-in: [e801bfc408] user: stephan branch: trunk, size: 278552
2014-06-14
14:52
changed the cwal_value_compare() semantics for NULL and UNDEFINED. Surprisingly, this does not break th1ish. file: 6e332e1452 check-in: [cd2897a4e5] user: stephan branch: trunk, size: 278415
14:05
Added first s2 keywords: eval and scope. file: 9f9a5c9278 check-in: [339bd99521] user: stephan branch: trunk, size: 278210
2014-06-13
18:59
added cwal_container_part() file: 469a16cb40 check-in: [d6def05713] user: stephan branch: trunk, size: 278097
2014-06-11
20:27
added cwal_value_unhand(). file: a5cc8df5fd check-in: [86085394ee] user: stephan branch: trunk, size: 277842
2014-06-08
23:49
more work on s2... file: 8fc65f4fdc check-in: [0f0c7757be] user: stephan branch: trunk, size: 276618
2014-06-05
18:26
Cleanups in s2, implemented multiply/divide/modulo ops. file: d0987b2c89 check-in: [b0e033e337] user: stephan branch: trunk, size: 276532
2014-05-16
21:22
cwal_function_call_in_scope() now vaccuum- and sweep-proofs the function for the duration of the call, to avoid that a recursive cleanup potentially nukes an temp function called at its decl point. file: f017e9b37d check-in: [25ee81e2ed] user: stephan branch: trunk, size: 276521
19:00
Added cwal_value_is_vacuum_proof(). file: cc786867af check-in: [3475fdd1bf] user: stephan branch: trunk, size: 276473
2014-05-14
20:41
A round of cleanups, tweaks, and API renamings. Improvements in the ++/-- operators. file: 628d46f044 check-in: [6fca161343] user: stephan branch: trunk, size: 276076
2014-05-12
21:00
Minor semantics change for cwal_value_get_cstr() when value is a completely empty (no memory) buffer - now returns 0 instead of an empty string. file: 3f14d64ed9 check-in: [1db9511921] user: stephan branch: trunk, size: 274835
2014-05-10
19:24
A round of doc additions and minor API renaming. file: 0b227cc993 check-in: [d4a56b1fb6] user: stephan branch: trunk, size: 274671
19:07
Added getter/setter for cwal_engine client data. Found, quite by accident, the 'dangling native' which was breaking vacuuming in th1ish (cwal_engine::prototypes). Vacuum now works in th1ish's global scope :-D. Valgrind agrees. file: 2484782907 check-in: [961ce26847] user: stephan branch: trunk, size: 273045
17:05
And now the lower-level bits for Buffer.resize(). file: f46f588443 check-in: [a698f5f7b6] user: stephan branch: trunk, size: 271483
2014-05-09
15:04
minor internal tinkering. file: db2d634d37 check-in: [98dee75be2] user: stephan branch: trunk, size: 269453
2014-05-08
23:41
Refactored cwal_engine_vacuum() to... drum roll, please... no longer copy anything. It now only rescopes stuff, so no allocation needed, which means no error cases unless it detects memory corruption (assertion). file: 4466052ab4 check-in: [ae032f2d59] user: stephan branch: trunk, size: 269413
23:04
Started adding (untested, except that existing code/tests still work) infrastructure for making individual values, and those they reference, safe from vacuuming up. Intention: a way to make non-script-visible values safe from vacuum. file: 6bd42f5c05 check-in: [f5ae60cad0] user: stephan branch: trunk, size: 269101
2014-05-06
20:54
minor cleanups. removed some dead code. added some comments. file: fcf9f34ab7 check-in: [571cccbd37] user: stephan branch: trunk, size: 266360
2014-05-05
19:38
Vacuum now works as a drop-in replacement for sweep in th1ish :-D meaning that, in principle, it is (with proper script structuring) possible to create a leak-free, really-long-running scope, regardless of cycles. :-D! Interestingly, vacuum does not often catch more values than sweep, so it will be optimized to normally sweep, and replace every Nth sweep-up with a vacuum. file: 8edcc4c91b check-in: [4ce80bab79] user: stephan branch: trunk, size: 264480
2014-05-04
12:36
minor internal cleanups. file: 33a8ba5810 check-in: [4123cb68de] user: stephan branch: trunk, size: 264387
11:07
Added long-overdue cwal_buffer_clear() convenience function file: 3e7a5577ea check-in: [4dd397b5b4] user: stephan branch: trunk, size: 264387
2014-05-03
20:07
Added cwal_prop_flags_v(), admittedly a quick-hack measure for th1ish which needs to be improved upon at some point. file: 3ac5e0e2a0 check-in: [73df633530] user: stephan branch: trunk, size: 264245
19:35
Added cwal_prop_take_v(), though it has kinda funny semantics for the key part. Was necessary for postfix obj.prop++/-- operators. file: 6dc7a8b996 check-in: [01628d5381] user: stephan branch: trunk, size: 263740
18:10
removed reference to a removed function. file: 8a0fd6d411 check-in: [29aed27ef1] user: stephan branch: trunk, size: 262835
15:35
more work on vacuum. Seems it cannot be dropped right in to th1ish for reasons as yet determined but very possibly incompatibilities with vacuuming assumptions. file: 8f239f466c check-in: [e276ed0f1d] user: stephan branch: trunk, size: 262957
14:59
doc improvements. file: b05d4e22d1 check-in: [8079a2c009] user: stephan branch: trunk, size: 262570
14:33
Introducing cwal_engine_vacuum(), an experimental algo which cleans up all non-variable values which are themselves not reachable via variable refs/containers. Fixed two bogus assertions while doing so. file: 978c8967e3 check-in: [8f455e260b] user: stephan branch: trunk, size: 262083
2014-05-02
20:55
minor change to cwal_array_index_of() semantics. file: 4a296bd8ff check-in: [761fa1bdb2] user: stephan branch: trunk, size: 259632
17:41
minor tweaks to the cwal_native bindings. file: c6bfdb84a5 check-in: [7411d5518f] user: stephan branch: trunk, size: 259282
13:21
Added cwal_buffer_to_zstring(). Minor string hash tinkering. file: 4f7959b3dc check-in: [88d8f96564] user: stephan branch: trunk, size: 257991
09:38
Added array list peak memory to the allocation metrics. Removed an old/arguable assertion which, for reasons completely inexplicable, is trigged only with this change. file: c57ceb231f check-in: [bc61ad3eb4] user: stephan branch: trunk, size: 257033
2014-04-27
11:12
removed debious wording. file: 98bb5d3c5c check-in: [8198242d6d] user: stephan branch: trunk, size: 257015
2014-04-26
19:42
improved allocation metrics a bit. file: 3f768e972c check-in: [36fb4ce9a3] user: stephan branch: trunk, size: 257262
11:10
minor cleanups. Moved Ticker example code into its own script. file: 01f3cca569 check-in: [dd8e1e7e9a] user: stephan branch: trunk, size: 256929
2014-04-20
18:59
okay, this branch has broken th1ish in ways i cannot explain and i am too tired to fight with it. Shelving this for the time being. file: 7e48929480 check-in: [aacb2e833c] user: stephan branch: new-string-length, size: 255093
13:50
Started re-doing the semantics for the length param to cwal_new_string() and friends, to something easier to use downstream. Breaks semantics in lots of th1ish code. file: 6a1b25e907 check-in: [b0dee8928f] user: stephan branch: new-string-length, size: 255089
13:05
A big around of minor tinkering and cleanups. file: 334965963c check-in: [41d834342c] user: stephan branch: trunk, size: 255097
2014-04-19
12:39
added long-missing cwal_strlen(). file: a2f0077a47 check-in: [0222186bbf] user: stephan branch: trunk, size: 254489
2014-04-17
19:09
Added allocation metrics tracking cwal_engine. Added -metrics flag to the th1ish shell to dump them out. They do not tell 100% of the story but are interesting nonetheless. file: 0c0ea0815c check-in: [65cbcfd22a] user: stephan branch: trunk, size: 254342
16:56
Another round of minor cleanups and doc improvements. file: 07f6fd01cf check-in: [66b65cb7ff] user: stephan branch: trunk, size: 253069
2014-04-14
17:58
doc tweaks file: 77f2842c28 check-in: [7580266002] user: stephan branch: trunk, size: 252221
2014-04-13
15:32
doc tweaks. file: c52dfa584c check-in: [6d0882fad1] user: stephan branch: trunk, size: 252212
2014-04-10
16:23
Changed cwal_engine_init() semantics to require client to call cwal_engine_destroy() regardless of success or failure so errors info can be propagated. Another round of minor cleanups, docs, and commenting. file: 6356e73a44 check-in: [4f0da73e06] user: stephan branch: trunk, size: 251706
2014-04-08
19:38
A round of tiny cleanups and docs. file: 8408412f78 check-in: [2a9a0dd7fa] user: stephan branch: trunk, size: 250459
2014-04-04
10:34
Fixed signed/unsigned comparison warnings, which apparently do not show up without -Wsign-compare. file: dc4788d011 check-in: [c256618440] user: stephan branch: trunk, size: 248902
2014-03-07
15:57
Another tweak to the refcounting (or not) of interned strings. Moved determination of whether a given string is internalizable to a predicate function the cwal_engine_vtab interface. The default impl behaves as before. th1ish adds its own impl which basically limits interning to very short strings an arbitrary identifiers. file: f3ba45fa9e check-in: [7588890cb3] user: stephan branch: trunk, size: 248727
2014-03-04
13:51
Added cwal_array_index_of() and Array.indexOf(). file: 82537347cf check-in: [54039517f2] user: stephan branch: trunk, size: 246570
2014-02-27
20:29
minor doxygen tweak. file: 49c9ae0b7c check-in: [fe24709ff4] user: stephan branch: trunk, size: 246147
20:13
callback hook doc improvements. file: 2f98879a25 check-in: [bcdba612d3] user: stephan branch: trunk, size: 246156
18:35
Added cwal_callback_hook and friends, and refactored th1ish to inject its argv/this vars from there. This generically fixes the problem of this/argv/argv.callee resolving to one from a higher-up callback. Removed the workaround added for this yesterday. file: bb44eaeced check-in: [4ea181bb5d] user: stephan branch: trunk, size: 244460
2014-02-26
22:45
moved th1ish_inject_callback_argv() into public th1ish API (will need it elsewhere), some const correctness fixes in the core API. file: 1846a4a36d check-in: [f71379525b] user: stephan branch: trunk, size: 240550
2014-02-25
18:10
Fixed a problem in cwal_array_take() which caused it to not take built-in values. Doc update. file: 7c25f48983 check-in: [c59879843c] user: stephan branch: trunk, size: 240529
15:58
Added cwal_props_sort() and Object.sortProperties() binding. file: fd32590145 check-in: [bc29f58ba4] user: stephan branch: trunk, size: 240514
2014-02-24
20:00
Added cwal_array_take() and changed cwal_object_take() to reprobate (instead of transfer reference ownership) if needed because that's the only way to provide the client with sane return mechanism. Added Array.pop() binding. file: 6e8a1a2342 check-in: [d1ed6fc7da] user: stephan branch: trunk, size: 239602
2014-02-20
17:55
removed dupe func decl. file: 9baefeb933 check-in: [0180b3003e] user: stephan branch: trunk, size: 239025
2014-02-19
18:31
minor doc fixes and touchups. file: 4dbeaa2a9f check-in: [afc432279f] user: stephan branch: trunk, size: 239230
2014-02-16
11:27
doc correction. file: c2767cc3ac check-in: [656b8d6920] user: stephan branch: trunk, size: 238816
2014-02-15
18:37
cwal_new_zstring() now no longer clones empty strings. file: d764622023 check-in: [2a469fd15d] user: stephan branch: trunk, size: 238872
2013-07-27
15:06
And the docs for it. file: fac59d02e8 check-in: [ca324bf732] user: stephan branch: trunk, size: 238755
00:23
Added cwal_json_output_buffer(). Added %q/%Q/%J formatters to cwal_buffer_format(). file: fc6ba6109b check-in: [e77c90a118] user: stephan branch: trunk, size: 238770
2013-07-21
18:26
Added Object.toJSONString(). Still missing overridable toJSON() support. Moved th1ish_value_XXX_part() to cwal_value_XXX_part(). Added String.applyFormat(). file: e5c9c61dfa check-in: [77d1757a8b] user: stephan branch: trunk, size: 237151
2013-07-20
12:42
Minor refactoring of cwal_value_prototype_get() and friends. file: d4e558c311 check-in: [8bf2f71a4e] user: stephan branch: trunk, size: 234280
11:04
cwal_value_get_cstr() now also treats buffers as strings. file: 8a71973a1f check-in: [89039d20a7] user: stephan branch: trunk, size: 233517
2013-07-19
11:41
Added cwal_engine_type_name_proxy() and friends and tweaked th1ish to use it. file: 37d41d2603 check-in: [aa092439d4] user: stephan branch: trunk, size: 232649
11:09
More work on buffer formatting. cwal_prop_xxx() and friends now have a const-correct container parameter. file: 98e2325ee0 check-in: [9557396db3] user: stephan branch: trunk, size: 230961
2013-07-18
22:20
more fixes for cwal_buffer_format(). file: 548b7cf460 check-in: [af3fdae475] user: stephan branch: trunk, size: 231054
21:38
More work on cwal_buffer_format(). file: 59d2b9c17d check-in: [3e09506f1c] user: stephan branch: trunk, size: 230848
20:10
Started work on cwal_buffer_format(), similar to java.lang.String.format() but formats cwal_value arguments. file: 887725695a check-in: [eb33816df1] user: stephan branch: trunk, size: 229701
2013-07-14
01:29
Ported in some utility code from cson (namely cwal_prop_get_sub() and friends). file: 35df795d4c check-in: [ee67dca8e2] user: stephan branch: trunk, size: 227385
2013-07-12
19:50
Added error location reporting (back) to the cwal_json_parse() family of functions. file: 7bf8c11905 check-in: [59816e903b] user: stephan branch: trunk, size: 221679
18:42
Ported in basic JSON parsing functionality from libcson. Added th1ish api.json.parse(). file: 54ae2b936a check-in: [5b1b80dda0] user: stephan branch: trunk, size: 219291
2013-07-11
15:51
Added very primitive recycling of the lists which back Array values. This cuts alloc count anywhere from about 1 to 7 percent in the current th1ish test scripts. file: c6961ad87b check-in: [491ad36c59] user: stephan branch: trunk, size: 217542
2013-07-07
16:22
Changed signature of cwal_buffer_fill(). file: d00c53b438 check-in: [6bd4212d3f] user: stephan branch: trunk, size: 216195
2013-07-05
23:23
Much tinkering with the weak references support. Refcounted them and share all instances pointing to the same memory. Most of this is untested, though (no use case yet :/). Added APIs for (un)registering client-side memory for weak referencing. file: 91a52495c8 check-in: [e0e531af6d] user: stephan branch: trunk, size: 216186
18:50
Fixed a potential orphaning corner case in cwal_array_shift(). file: 16ef980d3f check-in: [34cd72d7e5] user: stephan branch: trunk, size: 212786
16:29
Added cwal_new_number(). file: def0a0ec64 check-in: [270172fac8] user: stephan branch: trunk, size: 212653
2013-07-04
18:30
Experimenting with accessor interceptors, but this is not quite the way there. file: ca1553fd77 check-in: [5299a543a6] user: stephan branch: accessor-interceptors, size: 213598
2013-07-03
19:30
added experimental/broken cwal_engine_sweep_non_vars(). Does not work right but want to play with it later. file: 688bcddf44 check-in: [cdec608b94] user: stephan branch: trunk, size: 212392
2013-07-02
17:06
doc/assertion additions. file: f92d7c8037 check-in: [6963074e47] user: stephan branch: trunk, size: 212276
16:38
Implemented recycling of cwal_weak_ref. file: 3356f594f6 check-in: [51dff05fca] user: stephan branch: trunk, size: 212296
14:04
Added weak value reference support. This allows, e.g., N bound natives with mutual relationships to safely figure out if the other endpoint has been destroyed. file: 167414c201 check-in: [fab8ad55e3] user: stephan branch: trunk, size: 210632
2013-07-01
22:11
Introducing z-strings (similar to x-strings except that cwal owns their memory). This cuts the cost of th1ish's slurpFile() function by half because it removes an extra copy. Increased cwal_buffer_fill_from() buffer to 4kb to reduce the number of reallocs(). file: 54917dc25b check-in: [8c04f5388e] user: stephan branch: trunk, size: 208205
16:24
Expanded the function/args-state APIs a bit. Used them to implement Function.sourceInfo() type-safely. file: 55dc6f5f79 check-in: [5f7fe4b6bc] user: stephan branch: trunk, size: 205542
15:37
Revamped cwal_new_function() and friends to take a type ID tag for the state parameter, to safify some of the current casting, enable 'multiple-context' callbacks, and a couple other minor things i would like to try out. file: f713f8f17e check-in: [cb4072639e] user: stephan branch: trunk, size: 204526
2013-06-30
12:24
Changed return type of cwal_scope_properties(). file: 89c10a7d33 check-in: [fcdf9c23b7] user: stephan branch: trunk, size: 202689
2013-06-29
17:47
Pulled in the full toupper/tolower char tables from UnicodeData.txt. file: 1c84591f05 check-in: [4a8433c6be] user: stephan branch: trunk, size: 202622
17:05
Expanded UTF8 support a bit. String.toUpper/toLower() now have preliminary utf8 support. file: 65ec17667f check-in: [052fb69796] user: stephan branch: trunk, size: 202304
14:19
Added cwal_outputer::flush() and cwal_output_flush(). file: b942e2b432 check-in: [ece45b44c4] user: stephan branch: trunk, size: 201307
11:34
Added cwal_parse_argv_flags(). file: 57b1555696 check-in: [882dfc6d7c] user: stephan branch: trunk, size: 200479
2013-06-27
17:56
Added cwal_prototype_base_set/get() and started rewiring th1ish to use it. file: b48fe6766c check-in: [1771a58344] user: stephan branch: trunk, size: 197774
2013-06-24
10:35
Moved the generated cwal_list code into the main API so i can re-use it in th1ish. file: f29e7557d9 check-in: [fb3224f152] user: stephan branch: trunk, size: 195792
2013-06-22
23:16
Added cwal_native_clear(). file: c1c3e1d2be check-in: [8333211602] user: stephan branch: trunk, size: 191908
2013-06-20
16:21
More of the container functions now fail with CWAL_RC_ACCESS when called during traversal of the container. file: da9ba0f299 check-in: [801932bb85] user: stephan branch: trunk, size: 191511
15:21
const-declared scope vars now ignore an assignment-to-self to simplify some client-side code. file: ed6313007a check-in: [f4f9b57191] user: stephan branch: trunk, size: 190773
2013-06-19
17:29
minor internal cleanups, tinkering with some (disabled/incomplete) code for converting a Function value back to a String from script-side. file: a186fe69db check-in: [4e91eb1c8b] user: stephan branch: trunk, size: 190583
2013-06-18
18:20
Changed the obscure CWAL_RC_CLIENT_BEGIN value. file: 1a54829e97 check-in: [3783bde5cf] user: stephan branch: trunk, size: 189850
15:38
cwal_value_prototype_set() no longer allows (what it can recognize as) cycles between the child and its prototype. file: 6344125317 check-in: [69ab011467] user: stephan branch: trunk, size: 189852
11:43
More re-working of cwal_value_clone() and friends. file: 7e4579c43a check-in: [9fd33ca240] user: stephan branch: trunk, size: 189741
2013-06-16
12:53
Added cwal_hash_clear(). file: aef893e9c9 check-in: [b1cc0ee1ce] user: stephan branch: trunk, size: 189332
06:18
Added cwal_array_copy_range() (a.k.a. slice). file: 97d1c9a7b3 check-in: [071c1cef8d] user: stephan branch: trunk, size: 188994
04:15
Added cwal_array_shift(). file: 3f20614e73 check-in: [8e4d80789d] user: stephan branch: trunk, size: 188057
02:32
Fixed an inconsistency of cwal_scope_properties() vs cwal_scope_init_props(). Minor doc tweaks. file: 14acadc794 check-in: [63caeada6c] user: stephan branch: trunk, size: 187587
2013-06-15
15:18
Switched cwal_scope::props from object to hash. Not sure i am willing to pay the memory cost, though. file: 97cbbbed90 check-in: [931fbcca46] user: stephan branch: scope-hash, size: 187607
12:41
cwal_hash_insert/remove() now fail with CWAL_RC_ACCESS if called while iterating over the table. file: deb462a197 check-in: [9e0415bcd6] user: stephan branch: trunk, size: 187603
2013-06-14
17:21
added cwal_value_may_iterate(). file: 3a809a4a0a check-in: [292db68d9a] user: stephan branch: trunk, size: 187106
14:27
And more tinkering with hashes. file: 5c9c3f4ff0 check-in: [f7e6535b53] user: stephan branch: trunk, size: 186710
13:35
More work onthe hashtable. file: b6391a797d check-in: [77a8222358] user: stephan branch: trunk, size: 186540
12:09
More tinkering with the hash table. file: 963bf145ff check-in: [fc25158582] user: stephan branch: trunk, size: 184599
2013-06-13
23:54
Added prototype/experimental hashtable support to th1ish. Had to uplift some static cwal funcs into cwal_internal.h to do it. Finally tested ability for Natives to rescope their children (and discovered the problems involved). Hashtables still triggering at least one outstanding re-parenting/lifetime-related assertion in some script constructs. file: 3b75da0e1a check-in: [670a0ad9c5] user: stephan branch: trunk, size: 182652
2013-06-12
22:05
Moved the lower-level UTF8-related functions into the public API for re-use in th1ish. Doc additions. file: 4089e38f7d check-in: [b35794a00a] user: stephan branch: trunk, size: 181599
20:37
th1ish: added 'fatal' keyword (similar to exit). Added some (disabled) experimental cloning code, but the core cwal_value_clone() has some lifetime-related issues. Other internal cleanups. file: c82d39843f check-in: [7679ed571c] user: stephan branch: trunk, size: 179073
17:17
Documented CWAL_RC_ASSERT. file: be63786949 check-in: [6ea5af6c78] user: stephan branch: trunk, size: 178808
16:04
Added cwal_array_sort_stateful() and friends. file: 4f4b83ad92 check-in: [3927173367] user: stephan branch: trunk, size: 178600
2013-06-10
17:14
Refactored cwal_ptr_page to a linked list and replaced cwal_ptr_table::pages (type=cwal_list) with that linked list. Saves a small tick of memory when interning strings, removes several potential malloc error cases (on OOM), and has the same performance characteristics as before. file: 005c203816 check-in: [823220ffed] user: stephan branch: trunk, size: 176231
15:24
Added cwal_array_reverse(). cwal_array_sort() now fails if called while the array is being visited/traversed. Doc additions. file: 8e041e58f6 check-in: [8079c5b03d] user: stephan branch: trunk, size: 176032
2013-06-09
13:00
Added cwal_engine_recycle_max_get(). file: 40b9030d44 check-in: [1c28677e5b] user: stephan branch: trunk, size: 174807
11:24
Fixed (it seems) cwal_value_clone(). file: 0b1478be47 check-in: [c430cfad6c] user: stephan branch: trunk, size: 174331
08:54
th1ish: minor overhauling of the internal exception-throwing bits. file: 1ee1f18131 check-in: [a7bf69df61] user: stephan branch: trunk, size: 173246
04:46
minor doc addition. file: 4d555f4c74 check-in: [1584299cf9] user: stephan branch: trunk, size: 173409
2013-06-08
07:01
minor doc tweak. file: e51aea4eed check-in: [54a19cfff5] user: stephan branch: trunk, size: 173180
01:33
Seem to have found a decent heuristic for working around the obj.prop-gets-upscoped-and-cleaned problem by moving values _back_ into probationary state _if_ they would be cleaned up by a container which lives in a lower scope than the value. Allows removal of the 'extra ref' th1ish had to add before this. file: 6345e768b5 check-in: [8f9e77f3ea] user: stephan branch: pcre, size: 173179
2013-06-06
17:28
Removed an ambiguity in the handling of empty string keys in cwal_var_set() vs cwal_var_set_s() and cwal_var_set_v(). file: 2754ec59f3 check-in: [957ae67c59] user: stephan branch: trunk, size: 171562
2013-06-02
17:58
Added cwal_array_sort(). file: 7dc1075e81 check-in: [d114a07e93] user: stephan branch: trunk, size: 171370
13:45
added cwal_cstr_to_int/double(). Documented CWAL_INT_T_MIN/MAX. file: 270bfce354 check-in: [4b8d1e0a45] user: stephan branch: trunk, size: 170050
11:32
Added cwal_props_copy() and more docs. file: c91356b956 check-in: [8d5d4a5040] user: stephan branch: trunk, size: 168835
2013-06-01
15:13
Fixed a bug in cwal_int_to_cstr() - corner case involving INT_MIN. Added CWAL_INT_T_MIN/MAX macros. file: a39592e5d1 check-in: [29e01f5d63] user: stephan branch: trunk, size: 163121
06:09
Added new json formating option (addSpaceAfterComma). Added experimental code to insert object properties in sorted order. Searching is not optimized based on it, though. file: 8859b15f04 check-in: [76df00ac93] user: stephan branch: trunk, size: 163116
2013-05-31
21:50
Extended cwal_scope_push() to accept an externally-allocated scope instance (malloc optimization). file: 147fd51943 check-in: [9c1398a9c1] user: stephan branch: trunk, size: 162877
20:06
Changed how cwal_scope::mine::r0 is cleaned up. cwal_exception_set() no longer ref/unref's the exception (causes problems downstream). Forced a single refcount increase on shared interned strings the first time they are re-used to work around a lifetime problem. It's not a 100% solution but it's close. file: 49d6521f15 check-in: [63ade6e28a] user: stephan branch: trunk, size: 162311
17:09
Changes signatures of cwal_new_function() and friends. Started adding toString support to th1ish.. file: a672a4efcf check-in: [0ac710027a] user: stephan branch: trunk, size: 162302
15:57
Simplified the func_call() signatures a bit. file: 84ddb5158a check-in: [dc614cb0ac] user: stephan branch: trunk, size: 162186
2013-05-30
02:43
Added a TODO. file: 39a449cd3b check-in: [7861629a9a] user: stephan branch: trunk, size: 161999
2013-05-29
21:57
Minor refactoring for... Added an amalgamation build to the makefile. file: d16f0550bb check-in: [f0740b8f7d] user: stephan branch: trunk, size: 161857
18:06
minor doc additions. file: 65b0fcf882 check-in: [8eab9de839] user: stephan branch: trunk, size: 162071
17:57
started adding facilities to allow cwal_native types to rescope non-property children. Simplified cwal_value_rescope() signature. file: b5d9e98599 check-in: [c2ab18c056] user: stephan branch: trunk, size: 161551
2013-05-28
22:02
uncovered a problem with the x-string support, but it's bed time. file: 70d8ac7a82 check-in: [0ec70e51b3] user: stephan branch: trunk, size: 161165
20:40
deprecated cwal_value_upscope(). file: 1e41895aaa check-in: [c690051f3c] user: stephan branch: trunk, size: 161123
19:10
comment/doc changes only. file: 89deb39ec6 check-in: [8d31254298] user: stephan branch: trunk, size: 160822
19:04
Added initial support for x-strings (external strings, not allocated by cwal). file: d56d4dfd67 check-in: [76b841bfbd] user: stephan branch: trunk, size: 160536
2013-05-25
12:04
Fixed cwal_array_set() to accept NULL values. file: 54fb41c78b check-in: [1b3c313c6b] user: stephan branch: trunk, size: 158929
01:00
changed cwal_kvp_key() to return a cwal_value instead of cwal_string (old behaviour). file: 5844c4cf97 check-in: [7f67301752] user: stephan branch: trunk, size: 158897
2013-05-24
17:04
Modernized the ref/unref docs. file: 7a11d500a0 check-in: [6ee2d8e740] user: stephan branch: trunk, size: 158898
2013-05-23
12:22
started adding searchPrototype option to functions which can use it. file: 3f371d3f12 check-in: [6e23ecc726] user: stephan branch: refcount0, size: 157508
2013-05-22
18:09
removed some debug code, doc updates. file: 589ffbbd92 check-in: [f036d8a611] user: stephan branch: refcount0, size: 157508
17:11
Added cwal_scope::mine::r0 list to keep extra track refcount==0 values. sweep-scope is now much faster and safer. file: 20669893a0 check-in: [ef4c8f9e67] user: stephan branch: refcount0, size: 157254
2013-05-21
22:53
minor tinkering before bed. Seems to work so far. file: 5d78b232fb check-in: [6be90896fc] user: stephan branch: refcount0, size: 156863
2013-05-20
05:58
Changed string tail-chopping algo to chop off the oldest 25%. Removed some dead comments. Extended cwal_recycler_get() to support the string recycler. file: 075c763d4f check-in: [88ba6547de] user: stephan branch: trunk, size: 156619
04:06
Added basic string value recycling. file: 536dd4158a check-in: [32a78562b9] user: stephan branch: trunk, size: 156954
00:15
Added the long-missing cwal_array_length_set(). file: b8bda5dc8a check-in: [cde01729a4] user: stephan branch: trunk, size: 156237
2013-05-19
21:09
Simplified some of the Array APIs, removing extraneous cwal_engine argument. file: 2b74c72556 check-in: [ddb16f0fe4] user: stephan branch: trunk, size: 155758
15:13
Changed how cwal_function_call() manages the lifetime of the result value. Removed cwal_result_xxx() family of APIs. file: d920755c91 check-in: [d7b822f53b] user: stephan branch: trunk, size: 155825
14:28
Added a new cwal_scope_prop_XXX() API to supplement or replace the cwal_var...() bits. Changed how Function call()s return their value, to make cwal_result_{s,g}et() unnecessary and handle result value lifetime better from the client. file: 570d307a97 check-in: [0e89645697] user: stephan branch: trunk, size: 158646
2013-05-18
13:36
much more tinkering. discovered problem in design of 'set' which allows it to unwittingly overwrite higher-scoped identifiers. Too tired to fix it, though. file: 78ddf5d373 check-in: [dcd457eb16] user: stephan branch: trunk, size: 155367
11:29
added cwal_value_type_id_name() plus some notes about value interning. file: caeb70040c check-in: [325709de43] user: stephan branch: trunk, size: 155366
04:03
Simplified cwal_unref_string() signature. file: 50330e1bbe check-in: [8d3223b9b2] user: stephan branch: trunk, size: 155062
2013-05-17
20:13
added a fixme file: 592259f7ae check-in: [f66c6c272b] user: stephan branch: mistake, size: 155123
17:44
started, the commented out, beginnings of cwal_output_buffer(). file: b56a93ec01 check-in: [82c4d5df43] user: stephan branch: trunk, size: 155079
2013-05-16
14:54
moved cwal_value_engine() into the public API. file: 2aec5f28ac check-in: [ef96bb59cb] user: stephan branch: trunk, size: 154598
2013-05-15
19:49
more tinkering with th1ish. Can now evaluate basic math. file: 3b437e6c3b check-in: [2c33797d53] user: stephan branch: trunk, size: 154406
2013-05-14
21:43
more tinkering with th1ish. file: ceaee0928f check-in: [3456f0acbc] user: stephan branch: trunk, size: 154161
20:12
minor doc fixes. file: ca241abbde check-in: [c185d345be] user: stephan branch: trunk, size: 153977
2013-05-11
03:57
too tired to diff. file: 77e6f9f273 check-in: [fdaaf81724] user: stephan branch: trunk, size: 153833
02:16
fixed var-set(NULL) return value. Changed semantics of sweep() return value. Other minor tweaking. file: 3b827796a6 check-in: [1eab8d6ab8] user: stephan branch: trunk, size: 153661
2013-05-10
21:18
Fixed a buffer appending problem. Added CWAL_RC_ASSERT. file: 691ff55a8d check-in: [6782d563eb] user: stephan branch: trunk, size: 152220
20:02
Added string concat ops. file: 037315d521 check-in: [ae73cb0299] user: stephan branch: trunk, size: 152193
16:31
Consolidated some code. Added "catch" support to s1. file: 7621c3004a check-in: [7ee91d6574] user: stephan branch: trunk, size: 151578
15:01
fixes in the exception bubbling. file: e302d77ba6 check-in: [a324911a06] user: stephan branch: trunk, size: 150934
10:52
Added cwal_var_get_v(). Updated s1 to compile against recent changes. file: 2d293a97a3 check-in: [bcdc8f9f8f] user: stephan branch: trunk, size: 150937
09:48
Simplified more of the public API by removing more extraneous cwal_engine parameters. file: e8de20cbd2 check-in: [17395f36ae] user: stephan branch: trunk, size: 150656
09:02
more tinkering. Added a missing s1 test script. file: 6e847d6d82 check-in: [3386bd8e93] user: stephan branch: trunk, size: 152259
2013-05-09
14:47
more minor tinkering. file: e6547046b9 check-in: [6522247bd2] user: stephan branch: basic-prototypes, size: 152170
10:17
minor internal tweaking and refactoring. file: 76bcc321f6 check-in: [4ba195c6b8] user: stephan branch: basic-prototypes, size: 151692
09:39
more object parameter simplifications file: 60148d2c39 check-in: [57af8b5b6a] user: stephan branch: basic-prototypes, size: 151691
03:30
more removal of extraneous cwal_engine parameters. file: f98fd0e823 check-in: [977eb9cd6e] user: stephan branch: basic-prototypes, size: 151725
02:58
more work on values-as-keys. Found unset-prop cases for non-strings which cause leaks, though. file: 146f3983b7 check-in: [51fddf67c7] user: stephan branch: basic-prototypes, size: 151510
01:14
more work on getting non-string key infrastructure in place. file: 8d844c676d check-in: [630cba347c] user: stephan branch: basic-prototypes, size: 151138
00:02
Started adding experimental "prototypes" support (similar to JavaScript). More work on making key/value pairs able to use non-string keys. file: 1e5c2e44cc check-in: [743b712cda] user: stephan branch: basic-prototypes, size: 150798
2012-08-20
22:28
Added cwal_value_clear_mutable_state(). file: 2c8b9d1977 check-in: [01481544c5] user: stephan branch: trunk, size: 148717
20:47
Fixed a bug in kvp recycling (counter was wrong). Added scope recycling, which shaves a significant number of mallocs off of my test code and in s1. file: d48f1ba464 check-in: [24a0e9a8f2] user: stephan branch: trunk, size: 148268
17:28
Added an id field to cwal_recycler to tag the type associated with the recycler, and some additional sanity-checking to use it. file: 68939f2645 check-in: [d06acf53ad] user: stephan branch: trunk, size: 146612
2012-08-19
14:14
Function values now compare equal if they have the same callback and state data pointers. file: 0ac6ca2ea9 check-in: [cef477d430] user: stephan branch: trunk, size: 146460
05:11
Changed cwal_exception_setXXX() to treat a NULL format string as an empty one. file: bc5047ad20 check-in: [ba78c2784e] user: stephan branch: trunk, size: 146209
03:23
Tweaked s1 test code to read input from a file. Seem to have gotten the func decl-vs-call ambiguities beaten (finally!). Added var/const decl support. file: 16d957ec43 check-in: [558d586769] user: stephan branch: trunk, size: 146145
2012-08-18
05:07
Got execution of custom script-side functions working, but still missing keywords to allow one to declare such a thing. Minor API renamings. file: a59629b596 check-in: [e744cdc31e] user: stephan branch: trunk, size: 145113
01:20
got first scripted function call working. file: 0453e8dafb check-in: [6eec35f8e9] user: stephan branch: trunk, size: 143856
2012-08-17
23:23
Fixed var_set behaviour to set the var in the scope it is found in. Need to optimize this, though (currently 2 lookups). file: a66b9ff270 check-in: [baa62c845c] user: stephan branch: trunk, size: 143977
20:45
more touch-ups and testing of the exception handling. file: 5f592ddf09 check-in: [668442941e] user: stephan branch: trunk, size: 143835
19:36
renamed cwal_error to cwal_exception. Fixed lifetime/ownership problems in exception message handling by moving into a normal property. file: b74897635b check-in: [6d6374aa15] user: stephan branch: trunk, size: 142983
15:27
Added missing cwal_value_get_native() impl. file: 30f2713955 check-in: [b73394c788] user: stephan branch: trunk, size: 135311
15:13
Some cleanups to the property consolidation. Removed some duplicate code. Added cwal_value_can_have_properties() (but do not like the name much!). file: 186a5fea44 check-in: [9cd5ecdaba] user: stephan branch: trunk, size: 135243
14:48
oops - fixed memleaks caused by Function/Native/Array cleanup routines which did not honor their (new) property state. file: 4637178a93 check-in: [6f3110ea33] user: stephan branch: trunk, size: 134211
14:34
Refactored the key/value pair support to work with any cwal_obase type (object, array, function, native). Functions and Natives may now contribute to cycles. file: eef4f90250 check-in: [c111db9842] user: stephan branch: trunk, size: 134048
2012-08-15
14:22
Finally pulled in the good old printf() implementation. Added cwal_outputf(), cwal_new_stringf(), cwal_buffer_printf(), and a few others. file: 4a81cd1a5a check-in: [07c25cf985] user: stephan branch: trunk, size: 132208
03:32
too many changes to remember. Started work on ternary if, but am having token-skipping-without-executing related problems. file: e1fc5bda4d check-in: [92c2a21a66] user: stephan branch: trunk, size: 130280
2012-08-14
21:49
more work on the kvp-related internal refactoring (to consolidate key/value pairs support for higher-level types). file: 90c5f562fe check-in: [15a61ebbf2] user: stephan branch: trunk, size: 130236
2012-08-11
22:17
cwal_value_is_number() now also returns true for booleans. file: c5a27c6ec5 check-in: [98559140e8] user: stephan branch: trunk, size: 127541
19:57
Got first assignment working in interpreter. file: b2fc56d0e6 check-in: [35c7283fc3] user: stephan branch: trunk, size: 127509
18:07
Added cwal_array_clear(). Tinkering with the interpreter. file: 01676ca003 check-in: [d7a2ab0fa8] user: stephan branch: trunk, size: 127479
15:21
More work on the script interpreter. file: ba3129720f check-in: [ed917d6e49] user: stephan branch: trunk, size: 127189
12:45
Removed cwal_engine::resultScope b/c it causes new lifetime issues. Result value is now simply moved into the parent scope for ownership purposes (nothing an occassional cwal_scope_sweep() won't take care of). file: 1c42943a75 check-in: [e99d61e441] user: stephan branch: trunk, size: 126356
11:27
Got first prototype script token eval working. file: d6f65628e2 check-in: [c74131e774] user: stephan branch: trunk, size: 127226
04:07
Seem to have gotten a reasonable return-value mechanism in place. The JSON output API now fails gracefully when faced with cycles. file: b65452a8bb check-in: [027070161a] user: stephan branch: trunk, size: 126293
2012-08-10
17:10
oops - moved cwal_list.h to where it belongs. file: edc464e1c5 check-in: [432f1c4b11] user: stephan branch: trunk, size: 120871
14:56
"var" API seems to work. file: 1045fb50a4 check-in: [bc65ff9434] user: stephan branch: trunk, size: 119694
2012-08-09
20:59
Added the cwal_var_xxx() API, but it is completely untested (and will remain so until at least tomorrow ;). file: 92c04ef6f9 check-in: [00060a9b01] user: stephan branch: trunk, size: 119309
17:38
Added cwal_scope_sweep(). Reworked the trace masking (b/c 31 bits really is too few). file: 38dd3b6a9e check-in: [40e15d31ab] user: stephan branch: trunk, size: 113590
16:05
s/api/vtab/g for cwal_engine and cwal_value. file: 63b2ab9e40 check-in: [922c26c199] user: stephan branch: trunk, size: 111591
15:37
Fixed memory corruption in the kvp recycling code. Added cwal_engine_vtab::init_engine(). file: 3cb5a3e225 check-in: [28ea4d13f9] user: stephan branch: trunk, size: 111589
14:39
Added basics for the Function type. file: 6991180e43 check-in: [2506f0d91a] user: stephan branch: trunk, size: 109352
12:41
minor doc/test tweaks. file: 65ca610b67 check-in: [6daf048209] user: stephan branch: obj-kvp-list, size: 106866
11:52
initial porting of cwal_object properties to a cwal_kvp linked list. Compiles but segfaults predictibly on some test code. file: 37caa11d38 check-in: [7c2b40e63a] user: stephan branch: obj-kvp-list, size: 106852
10:30
started adding hash/compare infrastructure to allow some downstream features like arbitrary keys for object properties and interning of arbitrary POD values. file: 496cfcc638 check-in: [03c22e0473] user: stephan branch: trunk, size: 107237
2012-08-06
20:57
Minor config-level tweaking. Fixed some signed/unsigned screwyiness (thank you, clang). file: deee635194 check-in: [51fc55ddf7] user: stephan branch: trunk, size: 105701
20:20
Tinkering with interned string table size, other minor cleanups. file: 45e61be911 check-in: [8e6142c151] user: stephan branch: trunk, size: 105567
19:25
Fixed some bugs in the scope cleanup code triggered by interned strings, and incidentally ended up trimming the algo from about 40 lines and two nested loops to only 1 functional line (and several tracing/checking lines) in a single loop. file: c210ba7910 check-in: [02af50b668] user: stephan branch: trunk, size: 105421
17:02
added Value binding for cwal_buffer class. file: 49abacfdeb check-in: [f378d18817] user: stephan branch: trunk, size: 101600
2012-08-05
19:27
final (i think) tinkering for the night. file: 0345fb67c6 check-in: [ee81b02749] user: stephan branch: trunk, size: 99249
19:09
Tracing tweaks. Fixed a bitmasking range error in the tracing flags. file: f3fe265bcd check-in: [8414ccbc5b] user: stephan branch: trunk, size: 99231
17:51
valgrind likes it. time to walk Baako. file: 81943161c0 check-in: [0def871fe5] user: stephan branch: trunk, size: 99258
15:59
minor cleanups, nothing notable. file: af4c83d9f7 check-in: [6295b36c28] user: stephan branch: trunk, size: 99701
13:21
auto-interning of strings can now be toggled on/off at runtime. file: 227b5f9e84 check-in: [3244397263] user: stephan branch: trunk, size: 97874
12:07
Refactored recycling list to use value linked lists, removing the 5 mallocs needed for the lists and cutting the cost of the recycler a bit. file: cc0f88cda0 check-in: [1489228c0d] user: stephan branch: trunk, size: 96115
11:13
Refactored delayed GC to use the new linked list, cutting its memory cost to a single pointer, removing any allocation it used to do, speeding GC-push up to O(1), and removing some unrecoverable error cases caused by OOM conditions. :-D file: 2c0cb3a5c6 check-in: [c29b48dd13] user: stephan branch: trunk, size: 96481
10:43
Refactored scope/value parenting to use a linked list. Costs 2 pointers per value but ends up costing fewer mallocs and less memory overall because some (large) scope-level overhead goes away. This also makes some ops O(1) which were previously O(N). file: c0758ee101 check-in: [1f8844853b] user: stephan branch: trunk, size: 95745
2012-08-04
20:57
minor tinkering before bed. nothing functional. file: bdfd6c4eb6 check-in: [911afc1584] user: stephan branch: trunk, size: 96234
20:21
Renamed cwal_value_pop() to cwal_value_take(). file: cc1c160144 check-in: [3e93418fa1] user: stephan branch: trunk, size: 96250
13:28
more work on the tracing API. Added an engine param to cwal_value_ref(). file: bfd5e595ea check-in: [4a5609991f] user: stephan branch: trunk, size: 96247
2012-08-03
16:12
First draft of tracing calls. file: 3d62a4c3b6 check-in: [ea25245906] user: stephan branch: trunk, size: 95993
00:13
Started adding more tracing infrastructure to replace most of the debug output. file: af37e496a4 check-in: [536bb58c0b] user: stephan branch: scope-parenting, size: 95794
2012-08-02
19:43
valgrind seems to like this construct. file: 38c7b0509f check-in: [f3b2b88b06] user: stephan branch: scope-parenting, size: 94043
17:43
still more refactoring and docs. file: cefc27435b check-in: [0fbe8fb142] user: stephan branch: scope-parenting, size: 94513
16:54
more refactoring and docs. file: 84aa5f5a11 check-in: [1053654f66] user: stephan branch: scope-parenting, size: 92919
2012-08-01
23:41
tinkering with the tracing flags. file: e1152a2733 check-in: [80e85c709a] user: stephan branch: scope-parenting, size: 87655
23:28
started adding infrastructure for tracing engine activity via a callback. file: bff04efe1a check-in: [7334a03423] user: stephan branch: scope-parenting, size: 87485
2012-07-31
22:29
time for bed before i get carried away with getting the containers in order. file: dc726f9ef3 check-in: [be2c482a7f] user: stephan branch: scope-parenting, size: 85438
22:02
i broke down and added a scope ptr to the values. This costs me but it greatly simplifies some problems and code paths until i can find a way to do it safely without the ptr. file: 4f9d1bf4a5 check-in: [11a0bb37af] user: stephan branch: scope-parenting, size: 85181
20:21
Tweaking of the string-interning table size and hash function (found a combination i like better). Initial POD destruction looks good except i am going to run into a problem with lower-level scopes when they get refs to strings from higher-level scopes. i think i can only fix this by adding a scope ptr to each value :/. file: ad6c7f62c3 check-in: [f0b3dff0a7] user: stephan branch: scope-parenting, size: 84798
2012-07-30
19:37
minor doc update. file: 605ced9962 check-in: [6650a6fe31] user: stephan branch: trunk, size: 84263
19:32
Minor tinkering with the scope cleanup and debug output. file: 10559a26d6 check-in: [5c4e2e8c47] user: stephan branch: trunk, size: 84243
17:13
Refactored cwal_scope::allocs into two lists, one for containers and one for atomics, to help optimize some operations. file: bbf350bf77 check-in: [de3b8113d7] user: stephan branch: trunk, size: 84051
16:24
Changed return semantics of cwal_value_unref() to provide precise info about what is does/does not do. file: 06c7b68068 check-in: [7319c8feb0] user: stephan branch: trunk, size: 83360
2012-07-29
20:58
more internal tinkering, added cwal_engine_recycle_max(). file: d6bde4d3fd check-in: [bd79d5e6d8] user: stephan branch: trunk, size: 83134
18:34
Added string-interning support. Now all new strings with the same bytes get auto-interned/re-used. There might be a cross-scope ownership problem here, but only (i think) if we leave the "strict scope ordering" realm (e.g. for closures, which are not a high-prio feature). file: 1beeb5b622 check-in: [32a0ade6f0] user: stephan branch: trunk, size: 81654
16:10
Started adding support for interning strings (so we share _all_ strings which have the same content), but it has a serious Denkfehler in how i am using the hashtable and needs to be fixed. file: 394a12aa9c check-in: [19759dcf7b] user: stephan branch: trunk, size: 81654
04:12
minor build-related tweaks. file: 7c84813009 check-in: [1e1cf3977a] user: stephan branch: trunk, size: 74290
03:40
Added initial 'native' (a.k.a. Host Object) binding support. file: 5097f8b5ea check-in: [c5d9755013] user: stephan branch: trunk, size: 74354
02:07
more minor refactoring. file: e5dfbb1aac check-in: [c0912871aa] user: stephan branch: trunk, size: 71980
2012-07-28
23:52
Ported in most of the missing cson docs. Minor refactoring. file: 6c3e875cef check-in: [0e4f895e99] user: stephan branch: trunk, size: 64196
21:14
added cwal_json_output() and friends, ported from libcson. Changed the signature for cwal_output_f as part of that. file: 70926802b7 check-in: [d16e8ab46a] user: stephan branch: trunk, size: 40912
20:20
An assertion fix in cwal_value_push(). cwal_value_pop() now manipulates the scope alloc list to avoid endless expansion of it. file: d0b214e862 check-in: [48fd00e698] user: stephan branch: trunk, size: 37740
18:49
More private/internal refactoring. Seeing a weird bug in e_such_much_recycling(), but am too tired to chase it down. file: f72ccdec62 check-in: [fc32638cd1] user: stephan branch: trunk, size: 37459
16:46
started refactoring into two headers (public+internal). file: 3a99b67b95 check-in: [fc05f69b2c] user: stephan branch: trunk, size: 39032
13:51
Added initial value allocation recyler. Lots of other tweaks, improvements, and debug output. file: acc72ce196 check-in: [02ab3dc56e] user: stephan branch: cycle-counting, size: 46032
04:56
too... tired... file: 1761b15fe1 check-in: [73a2e1b526] user: stephan branch: cycle-counting, size: 41541
02:21
minor tinkering. Fixed, i think, a future bug when cycle counting more than once. file: 71d2ba9c59 check-in: [92dd48c7c1] user: stephan branch: cycle-counting, size: 41403
01:17
more docs and minor refactoring/cleanups. file: 7c1d6adea6 check-in: [31d896646e] user: stephan branch: cycle-counting, size: 41029
2012-07-27
23:35
Added boatloads of API docs. Still far from finished (many still to be copied from cson). file: 0dce7fe1bf check-in: [6c4c514f74] user: stephan branch: cycle-counting, size: 39650
20:13
this one looks a bit better. Fixed a REALLY dumb flags bitset bug which caused a mis-diagnosed is-destructing check. file: 204486d787 check-in: [aed1986bae] user: stephan branch: cycle-counting, size: 24422
00:35
First cyclic free-up demonstrated when the parent scope expired :-D, but requires that one run the cycle-counter first :/. Making that transparent is on the TODO list for the weekend :D. Reminder to self: we might be able to put that in the Scope cleanup. file: db4e2c1ce2 check-in: [5b1208c9f8] user: stephan branch: cycle-counting, size: 24115
2012-07-25
17:33
Added engine::current scope convenience ptr. file: 2d8aebc396 check-in: [9f145a967c] user: stephan branch: trunk, size: 24083
14:53
Tinkering with value-scope parenting, but the built-in values just threw a wrench in it. file: 7616a19921 check-in: [c8298bc6d1] user: stephan branch: trunk, size: 23912
13:05
a number of API tweaks. file: 9fc8098e95 check-in: [56ac8240e7] user: stephan branch: trunk, size: 22045
10:33
more minor refactoring. file: 41e0a2082a check-in: [7d83b4f0e9] user: stephan branch: trunk, size: 21918
10:01
more refactoring and tinkering. file: 7d1c00d259 check-in: [348267e3b3] user: stephan branch: trunk, size: 20097
08:05
ported in the object API. file: 47d5c50cdc check-in: [e77bdf86b5] user: stephan branch: trunk, size: 18840
06:37
switched to stdint fixed-size ints throughout. Added cwal_size_t and renamed a few things. file: c18ff42a14 check-in: [bb5b0db794] user: stephan branch: trunk, size: 18269
05:39
more refactoring. file: 1fee1b2d74 check-in: [89909b7eac] user: stephan branch: trunk, size: 18535
05:05
got the object skeleton in place but it is missing any useful features. file: 69263a103e check-in: [84f2fc8b27] user: stephan branch: trunk, size: 18778
04:14
minor refactoring. file: 1ef0b6e5ed check-in: [1868791179] user: stephan branch: trunk, size: 18339
03:14
Tinkering with various loads for the ptr table. 90% only causes 2 tables under the right circumstances, the second one only lightly loaded. file: 8a895b6690 check-in: [91da9fef15] user: stephan branch: trunk, size: 18312
02:02
Got an array containing a self-cycle to free without upsetting valgrind. :) file: fcf3e5de54 check-in: [4dcb87c117] user: stephan branch: trunk, size: 18323
01:47
ptr table is looking good. file: c5ddecdb9f check-in: [d88a5fa845] user: stephan branch: trunk, size: 18243
2012-07-24
21:45
ptr table almost works right, but page->entryCount seems to be off by one sometimes? To check tomorrow... file: d12133936a check-in: [0c98670772] user: stephan branch: trunk, size: 18211
20:31
got arrays ported in. file: 5e7c740c85 check-in: [c1e7d24d89] user: stephan branch: trunk, size: 18071
19:19
insert/search seem to work on the ptr table. file: 239ebc9507 check-in: [69c3ef00e5] user: stephan branch: trunk, size: 17193
17:03
refactored page list to use a cwal_list (simplifies the code notably). file: 9e92ba1cd9 check-in: [fb89dc98ad] user: stephan branch: trunk, size: 16568
16:47
some more work on the weird hashtable. file: edcb1da5a6 check-in: [33c220873c] user: stephan branch: trunk, size: 16826
00:03
Started adding special-case ptr-hashtable for tracking cycles and is-var-in-this-scope checks. file: d71480fb77 check-in: [de91c24c1c] user: stephan branch: trunk, size: 16041
2012-07-23
21:58
We can now allocate vars, but scoping is not far enough to add the allocations there. file: 34eabbec95 check-in: [d0cc64e478] user: stephan branch: trunk, size: 15566
20:14
We can now free values but not allocate them. Object/Array will be missing for a while. file: 107713992a check-in: [13ccbfc670] user: stephan branch: trunk, size: 12881
19:49
More infrastructure... file: d7f9cb801f check-in: [25b7b37575] user: stephan branch: trunk, size: 12829
19:26
More infrastructure added. Still a long way to go. file: 7d8dd0908b check-in: [bff484cc73] user: stephan branch: trunk, size: 14424
18:47
Added: egg file: b9c6dbe356 check-in: [a71b168320] user: stephan branch: trunk, size: 14365