cwal

All files named "cwal.c"
Login

All files named "cwal.c"

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

History for cwal.c

2022-01-20
16:57
Renamed to src/cwal.c. Major build reorg, step 1 of N. Moving to a top-level non-recursive make, based on the recent libfossil build tree re-org. Currently onlythe main libcwal builds. check-in: [a6705cc58a] user: stephan branch: build-reorg, size: 0
2021-08-01
10:23
Removed CWAL_FEATURE_SCOPE_STORAGE_HASH and changed the default of CWAL_OBASE_ISA_HASH to 1. file: [0f6a4fbc35] check-in: [deddd35e15] user: stephan branch: trunk, size: 459263
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: [b7dccc3075] check-in: [a98b4b273d] user: stephan branch: trunk, size: 460792
09:36
Some cwal_size_t to cwal_midsize_t conversions. Minor doc and constness tweaks. file: [9af2c57667] check-in: [601b514dd3] user: stephan branch: trunk, size: 458869
2021-07-23
05:46
Minor doc updates. file: [6175cc5494] check-in: [0a79496327] user: stephan branch: trunk, size: 458983
2021-07-22
12:41
Corrected a silly cwal_obase_kvp_iter_next() bug which caused it to skip over colliding tail-end entries in the hashtable (this resolves my website build failures). Corrected some of the scope propery handling for the case when scopes are configured to use hashes (that feature can reasonably be removed now that CWAL_OBASE_ISA_HASH works). Valgrind seems happy but needs another 20-30 minutes to finish crunching the various memory configurations of the s2 unit tests. file: [e82d683fd7] check-in: [bbe082639a] user: stephan branch: trunk, size: 458922
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: [488c06017d] check-in: [b4f045c66a] user: stephan branch: trunk, size: 457781
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: [9629ee39c3] check-in: [5e954ac3be] user: stephan branch: obase-isa-hash2, size: 457786
22:06
CWAL_OBASE_ISA_HASH is mostly implemented and seems to basically work, but cwal_hash_take_props() still has to be reimplemented. file: [557bea1c01] check-in: [273b214789] user: stephan branch: obase-isa-hash2, size: 457765
18:27
More baby steps towards hash-stored object properties. file: [d55df2f5b2] check-in: [e0d28b94d6] user: stephan branch: trunk, size: 456020
17:45
More cwal_size_t ==> cwal_midsize_t changes. file: [01e620b62d] check-in: [92f0fb90be] user: stephan branch: trunk, size: 454830
17:36
Inconsequential minor cleanups. file: [2676cbf15f] check-in: [3310bf0b1c] user: stephan branch: trunk, size: 454595
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: [65fd972fef] check-in: [cdefef67f8] user: stephan branch: trunk, size: 454683
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: [d9ba166784] check-in: [9ec0b252f6] user: stephan branch: trunk, size: 454149
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: [ec5767e8eb] check-in: [45f6d620a6] user: stephan branch: trunk, size: 454011
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: [042c4a5c6a] check-in: [5e0ce36380] user: stephan branch: trunk, size: 451374
20:14
Got CWAL_ENABLE_TRACE compiling again and added --trace-cwal flag to s2sh/s2sh2. file: [3c7f3a3079] check-in: [b73445b7ca] user: stephan branch: trunk, size: 447746
20:06
Pulled in part of [16c11f2139]. Preparing to take a fresh whack at the [obase-isa-hash] branch, as that branch is apparently beyond repair. file: [05c0244c18] check-in: [8c86fbdedf] user: stephan branch: trunk, size: 447742
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: [7d4ba1b50f] check-in: [9522bcf73e] user: stephan branch: obase-isa-hash-wha, size: 457014
15:41
Minor cleanups. Fixed an ancient bug in cwal_hash_insert_with_flags() when replacing a property using a string literal key (it was storing that key as the new value). Still having the same refcount/lifetime issues with hash-hosted object properties :/. file: [a38777a688] check-in: [16c11f2139] user: stephan branch: obase-isa-hash, size: 455781
14:28
Some code de-duplication. Still getting values without a scope at cleanup-time when using hash property storage. file: [2f9950168d] check-in: [250dad0420] user: stephan branch: obase-isa-hash, size: 455542
12:58
test.c tests of hash property storage basically works but any non-empty script in s2sh triggers assertions at scope cleanup related to unexpected refcounts and missing scope ownership. file: [cf125db2e8] check-in: [d7a5284c55] user: stephan branch: obase-isa-hash, size: 455937
11:46
Both property storage modes now compile but the new one is (predictably) currenly broken. file: [b2e9938512] check-in: [3c808939d6] user: stephan branch: obase-isa-hash, size: 453710
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: [c929a63c0f] check-in: [4d6229e505] user: stephan branch: obase-isa-hash, size: 452790
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: [18f5ab6bf5] check-in: [4fdff30fc3] user: stephan branch: obase-isa-hash, size: 452394
04:26
More work on enabling hash storage for cwal_obase properties. file: [ee940cd1bb] check-in: [a6b871bfd0] user: stephan branch: obase-isa-hash, size: 449858
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: [047fc7f2c3] check-in: [044ee16592] user: stephan branch: obase-isa-hash, size: 447142
2021-07-09
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: [ed18f29ab3] check-in: [9b35720349] user: stephan branch: trunk, size: 447665
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: [3a7ddd66e8] check-in: [539060fab2] user: stephan branch: trunk, size: 447666
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: [ce3d556175] check-in: [043c912982] user: stephan branch: trunk, size: 447073
2021-06-26
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: [868eb86538] check-in: [e679463d26] user: stephan branch: trunk, size: 447102
02:40
A few cleanups to the s2_error/cwal_error port. file: [c574b8611b] check-in: [caa168b835] user: stephan branch: s2-remove-err-obj, size: 446266
2021-06-24
11:00
Had emacs reformat the core lib to 2-space indentation. file: [963a0988cb] check-in: [29cf299dec] user: stephan branch: trunk, size: 446093
09:29
More work on the standalone t10n/c9n subsystem. file: [4652f75073] check-in: [fb2e2b8f05] user: stephan branch: trunk, size: 485252
07:47
More work on the standalone t10n/c9n subsystem. file: [1a49609e1d] check-in: [24029cb1d9] user: stephan branch: trunk, size: 485062
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: [418820672b] check-in: [3d41e2d40f] user: stephan branch: trunk, size: 484980
2020-05-22
06:31
Random drive-by doc tweaks. file: [e63dd82909] check-in: [cf93734fae] user: stephan branch: trunk, size: 479789
2020-02-20
01:35
Insignificant internal tweak. file: [8c958a8694] check-in: [37a77d4f5f] user: stephan branch: trunk, size: 479764
2020-02-18
21:15
Clarified in the docs that cwal_props_copy() and friends do not traverse/copy hidden properties. file: [c2b260d748] check-in: [dbc89b0be6] user: stephan branch: trunk, size: 479235
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: [cff9756592] check-in: [058c6f6ae8] user: stephan branch: trunk, size: 479324
2020-02-02
06:41
Minor error check reordering so that hash insert matches its docs. file: [b7269b7914] check-in: [ce136e8b11] user: stephan branch: trunk, size: 478690
2020-01-18
08:43
Changed cwal_obase_search() and cwal_obase_search_v() to stop looking if any entry in their prototype chain is locked (previously only their initial object was checked for a lock). No APIs currently lock these, so this doesn't break anything. file: [50fcb12aef] check-in: [89b61168d2] user: stephan branch: trunk, size: 478690
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: [cbd3c6ad7b] check-in: [9dfc28ffaa] user: stephan branch: trunk, size: 478803
2020-01-11
21:45
Minor internal cleanups, mostly removal of dead code. file: [b61a7009be] check-in: [0a6549cae8] user: stephan branch: trunk, size: 478727
2019-12-20
17:56
Minor internal doc addition. file: [550a38bcdb] check-in: [e2f34d234d] user: stephan branch: trunk, size: 481351
17:43
s2 array.sort() now internally uses floating-point comparison so that sort routines which do things like (return 0.1-0.3) can DTRT. Prompted by a bug report files against mujs: https://github.com/ccxvii/mujs/issues/122 file: [48c1c332e6] check-in: [4f0d98c329] user: stephan branch: trunk, size: 481195
2019-12-17
02:38
Style change: globally removed commas after 'i.e.,'. file: [0bd779b42c] check-in: [6100e95be2] user: stephan branch: trunk, size: 480788
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: [3c2e30831b] check-in: [040a1c6ac4] user: stephan branch: trunk, size: 480789
2019-12-13
01:07
Added a few missing is-visiting checks on property-modifying functions. file: [48234297be] check-in: [81abb1596a] user: stephan branch: trunk, size: 480791
2019-12-12
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: [4d264ab99c] check-in: [0cf849b260] user: stephan branch: multi-iteration, size: 480602
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: [3d3023cf6b] check-in: [4fc57dd5d5] user: stephan branch: multi-iteration, size: 478338
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: [2458b3a572] check-in: [db9f4b10f3] user: stephan branch: multi-iteration, size: 477740
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: [788875fcf3] check-in: [e21f0af7f4] user: stephan branch: multi-iteration, size: 478029
2019-12-10
19:27
Added an as-yet-unused flags member on cwal_tuple (no sizeof() increase, due to spare padding). Added some tuple comparison tests. file: [d899642e98] check-in: [1f42218ded] user: stephan branch: trunk, size: 482667
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: [58d3ac2d05] check-in: [cdd0f4d93f] user: stephan branch: trunk, size: 482604
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: [03a71f267e] check-in: [9484a7e93e] user: stephan branch: trunk, size: 482416
2019-11-18
08:08
Fixed a typo and reordered a couple if/else conditions. No functional change. file: [64c9932337] check-in: [bb6aa1c237] user: stephan branch: trunk, size: 483860
2019-09-11
20:31
Incidental internal doc touchups and removal of one unnecessary #if block. No functional changes. file: [840dc2cc0d] check-in: [e15d5c7b72] user: stephan branch: trunk, size: 483860
2019-08-07
13:30
Doc typo fix. file: [8d53f57a50] check-in: [97f7fa77c8] user: stephan branch: trunk, size: 483826
2019-08-04
12:46
Insignificant internal docs tweaks and factored out one superfluous variable. file: [d5f9479ce1] check-in: [832b98af5a] user: stephan branch: trunk, size: 483827
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: [9f80fc7f2e] check-in: [34e21ebeca] user: stephan branch: trunk, size: 483828
2019-07-13
01:19
Fixed an ancient string ref mishandling in the JSON parser. No idea why it waited until now to show up :/, but that code certainly dates back to the time where i thought it was generally okay to temporarily have no refs. file: [906cd372db] check-in: [ac444d043c] user: stephan branch: trunk, size: 483766
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: [e2e0b8d744] check-in: [a32fcc4268] user: stephan branch: trunk, size: 483688
2019-03-26
07:33
Fixed cwal_cstr_to_int() to not succeed if it sees no digits, e.g. a standalone minus sign. file: [4254b1c318] check-in: [5fc02ab14d] user: stephan branch: trunk, size: 482373
2018-12-04
14:04
Minor errno-handling tweak. file: [d1449e8cef] check-in: [a1dc0941fb] user: stephan branch: trunk, size: 482281
2018-12-01
16:32
Minor error handling tweak which might or might not do anything. file: [f46de3ae86] check-in: [978c1c04d2] user: stephan branch: trunk, size: 482255
2018-11-30
18:11
Minor tweaks/cleanups. file: [2b189c233a] check-in: [05e167e2eb] user: stephan branch: trunk, size: 482062
2018-11-29
14:43
Minor tweaks caught while porting some of this code into another tree. file: [d7504f5cba] check-in: [4398c5bec4] user: stephan branch: trunk, size: 482712
2018-11-28
14:43
Removed a stray comma from the new metrics dump output. file: [e628e9ee1f] check-in: [40423dbcc0] user: stephan branch: trunk, size: 482968
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: [1e347945e7] check-in: [39016bac11] user: stephan branch: trunk, size: 482970
2018-11-27
11:12
Several deeply internal assert()/fatal condition check improvements and cleanups. file: [100bb09b99] check-in: [af11b6ac1f] user: stephan branch: trunk, size: 480206
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: [f8dcafc3d7] check-in: [7b251481bd] user: stephan branch: trunk, size: 480956
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: [29695c0220] check-in: [73251240a6] user: stephan branch: trunk, size: 485534
01:34
Patch previous commit to politely overlook the NaN/Inf special values. The new s2 math module can emit those. file: [871ac39fca] check-in: [d951557a0d] user: stephan branch: trunk, size: 488046
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: [8452e0c547] check-in: [6fcff747c1] user: stephan branch: trunk, size: 487895
2018-11-26
16:31
Improved/hardened the cwal_buffer_value() is-this-really-a-Value check. file: [818a61062c] check-in: [7db9dc8d92] user: stephan branch: trunk, size: 486698
14:21
removed some dead code. file: [d0c130b33c] check-in: [c2c5f3b1fd] user: stephan branch: trunk, size: 486510
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: [d7d7b1429a] check-in: [014b06ff6d] user: stephan branch: trunk, size: 489451
10:24
Minor cost-correctness improvements. file: [0c1b9f6f58] check-in: [dea8b92b24] user: stephan branch: trunk, size: 489105
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: [b8007edc24] check-in: [7aefa0fc0e] user: stephan branch: trunk, size: 489093
2018-11-23
14:43
Snapshot. Lots of cleanup of the new s2_scope mechanism. Removed some now-obsolete s2 scope-handling functions. file: [196751fdd6] check-in: [b7de2a8e38] user: stephan branch: scope-push-pop-hooks, size: 489112
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: [68d2da497b] check-in: [a1472de17e] user: stephan branch: scope-push-pop-hooks, size: 488914
2018-11-22
15:10
Removed some dead code: cwal_var_unset_s(). file: [3dad773c85] check-in: [b9357f7de4] user: stephan branch: trunk, size: 488434
10:58
cwal core: changed the string hashing algorithm yet again. Seems to perform better (fewer collisions). file: [36a5d2743e] check-in: [e0524c4ed3] user: stephan branch: trunk, size: 488574
02:41
minor constness improvements. file: [ff8baf4800] check-in: [028f3467cf] user: stephan branch: trunk, size: 488166
02:29
Another tweak to that just-fixed (but really re-broken) assert. file: [f3ff83c103] check-in: [59288dfffb] user: stephan branch: trunk, size: 488118
02:07
Fixed a bogus assert() in cwal_function_call_in_scope2() which was triggered by old C++ test code. file: [441edf3fe5] check-in: [c04f1f3314] user: stephan branch: trunk, size: 487677
2018-11-20
09:16
Squelched a couple non-debug build warnings. file: [224e91e676] check-in: [2656a0cb3c] user: stephan branch: trunk, size: 487633
09:05
Squelched dozens of unused parameter warnings (removing their names causes a completely different warning) triggered by work on the build process. Fixed cwal_scope_chain_set_with_flags() to not ignore the flags it was given and to honor various KVP/container flags which its _v() counterpart was honoring. file: [3ad79c9cdb] check-in: [211af69f84] user: stephan branch: trunk, size: 487617
2018-11-07
18:19
Enhanced cwal_value_from_arg() a bit. file: [5f68b30dea] check-in: [3fafa494c7] user: stephan branch: trunk, size: 486284
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: [ca1c31625f] check-in: [1a2383df89] user: stephan branch: trunk, size: 485809
2018-10-16
05:12
Internal doc/comment touchups. Changed the range of builtin integer values (again - it was set to some weird range). Removed a couple unused/unnecessary macros. file: [25d55426a8] check-in: [0689e96ea9] user: stephan branch: trunk, size: 485199
04:45
Typo fixes (future dates). file: [ee54f05e71] check-in: [f6afbb8ba4] user: stephan branch: trunk, size: 484526
2018-09-19
17:36
Fixed a bug in the low-level object cleanup which caused refcount points on prototypes to not be properly removed. Discovered by accident while working on a new module. file: [82f1e8c3ea] check-in: [5e7ebb45df] user: stephan branch: trunk, size: 484526
2018-08-12
10:07
Fixed gcc7 warnings, a couple of which were valid and many of which were from its new, stunningly braindeaded behaviour of warning about switch fallthrough (which of course fails because we build with -Wall -Wpedantic). file: [bf0a251c1f] check-in: [6b2c51d9c8] user: stephan branch: trunk, size: 484964
2018-06-20
14:32
Stateful array qsort no longer uses a random pivot because checkin [f40e1afaed]'s removal of a call to srand() revealed a bug with that approach (and i'm not up for chasing down exactly what the problem is). file: [cf90bebaa9] check-in: [8c4d44300e] user: stephan branch: trunk, size: 484980
2018-05-23
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: [6cab7ac28c] check-in: [2fa3e2286d] user: stephan branch: trunk, size: 484104
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: [91d3580ddd] check-in: [75cd61d03c] user: stephan branch: trunk, size: 483718
13:09
added a todo about broken error propagation in array.sort(callback). Also discovered a sorting bug in that context which was yet to be properly identified. file: [f07072cad5] check-in: [b90276c8b6] user: stephan branch: trunk, size: 484593
2018-05-08
13:29
Changed how cwal_next_prime() works, utilizing the pre-existing 1000 primes list. file: [ee4324059f] check-in: [a02432c152] user: stephan branch: trunk, size: 484076
2018-05-07
23:31
minor internal tinkering. file: [c35b5753da] check-in: [9211afe535] user: stephan branch: trunk, size: 483812
22:38
minor metrics formatting tweaks and one pedantic micro-optimization. file: [8d6be43c0d] check-in: [301300b9e7] user: stephan branch: trunk, size: 483903
2018-04-11
00:34
typo fix, removed some duplicate/unused code. file: [00786f8652] check-in: [3b3f00851a] user: stephan branch: trunk, size: 483921
2018-01-05
14:33
Extended the Unique-type cleanup checks ([74e71fae100d44]) to Tuples, which hypothetically have the same cleanup error case (but it's never been witnessed). Edit: and accidentally checked in unrelated termbox tinkering at the same time :/. file: [2e0b9129e8] check-in: [eae27e464a] user: stephan branch: trunk, size: 483921
13:40
cwal core now gc-queues all values (not just containers) during scope cleanup. This fixes a difficult-to-trigger cleanup-time problem involving Unique-type values and their non-container wrapped values. file: [8934a4a74c] check-in: [74e71fae10] user: stephan branch: trunk, size: 481338
2018-01-03
16:04
consistency: changed signature of cwal_prop_has() and cwal_prop_has_v(), removed cwal_prop_has_s(). file: [0200054e04] check-in: [db1a5c3526] user: stephan branch: trunk, size: 480520
2018-01-02
04:28
generic tinkering. file: [f22bfa0754] check-in: [bbba146715] user: stephan branch: trunk, size: 480769
2017-12-27
12:36
removed some dead code, minor internal touchups. file: [b97eb58387] check-in: [e06340a5d2] user: stephan branch: trunk, size: 486740
11:41
removed some dead code. file: [fcc7438c4e] check-in: [0be8130cf2] user: stephan branch: trunk, size: 487648
11:30
Minor refactoring in the scope of interceptor support. Changed the cwal-internal string hash routine again. Added some metrics output. file: [54fbd62e38] check-in: [47e9b8e8a6] user: stephan branch: trunk, size: 488671
10:10
Fixed some ref/unref boneheadedness in cwal_json which prematurely killed values (bug introduced in [ad93dd9b93e37763]). Added missing ref/unhand in cwal_scope_pop2() which killed propagating values. file: [05435a3424] check-in: [957e87d7f8] user: stephan branch: trunk, size: 487181
2017-12-26
16:29
Didn't mean to hit enter there. file: [f663e92da1] check-in: [3af17e6d5d] user: stephan branch: trunk, size: 485889
16:28
Cleanups and preliminary work for adding property interceptors to the core via alternative getter/setter APIs. file: [c23f4f296e] check-in: [ed485b7b8b] user: stephan branch: trunk, size: 485889
10:24
Removed more superfluous funcs. Added one unit test. file: [ca9db3fdcd] check-in: [ad93dd9b93] user: stephan branch: trunk, size: 479421
09:59
removed some old/unused functions. file: [f9abc39165] check-in: [f5570c4333] user: stephan branch: trunk, size: 480827
2017-12-25
12:04
Removed deprecated cwal_args_callee_state(). Minor doc tweaks. file: [67a8de7fa9] check-in: [56e46c52bd] user: stephan branch: trunk, size: 481232
10:42
minor tweak to the string is-ascii determination. file: [84f2296458] check-in: [817bebac7a] user: stephan branch: trunk, size: 481563
2017-12-08
14:32
Added cwal_scope_pop2(), analog to s2_scope_pop2(). file: [1597c2fb5c] check-in: [09c10d90c0] user: stephan branch: s2-interceptors, size: 481087
2017-12-07
00:10
Minor proactive rescoping fixes. file: [212d07decf] check-in: [6848b566bc] user: stephan branch: trunk, size: 480698
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: [bed819cb5d] check-in: [e491db6af4] user: stephan branch: trunk, size: 480550
2017-12-03
21:09
Tiny random cleanups. file: [23890ef119] check-in: [ed33242e31] user: stephan branch: trunk, size: 480709
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: [a290ef81d3] check-in: [72236d95aa] user: stephan branch: trunk, size: 480709
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: [1f8410ec99] check-in: [79988ded9c] user: stephan branch: trunk, size: 475325
2017-12-01
19:26
Added cwal_engine_outputer_get/set() to simplify swapping out the outputer. Added cwal_output_f_cwal_outputer(). file: [5a3982e9ba] check-in: [2a21245d11] user: stephan branch: trunk, size: 475160
2017-11-30
18:32
a minor const correctness fix in cwal_unique_wrapped_get(). file: [a9b4f29890] check-in: [38620308fe] user: stephan branch: trunk, size: 474543
2017-11-21
17:05
added a reminder to self. file: [a552b2c671] check-in: [35baac6ef3] user: stephan branch: trunk, size: 474537
15:57
Fixed the length-1 string handling for X- and Z-strings. file: [16cc18f176] check-in: [717abf2614] user: stephan branch: trunk, size: 474347
12:43
cwal core now includes all byte-length-1 ASCII strings in its builtin Values. In the various s2 unit tests this cuts alloc counts by anywhere from ~1% to ~12% with recycling disabled and ~1% to ~2.5% with recycling enabled. Total memory use without recycling was cut by ~1-10% and is highly script-dependent (those with many length-1 variable names save more). file: [8ed4bb8a13] check-in: [8bef0b5c74] user: stephan branch: trunk, size: 473234
2017-11-13
12:26
minor utility API renaming and additions. file: [23a10e314e] check-in: [d8df88227b] user: stephan branch: trunk, size: 471272
09:38
Moved ownership of s2's eval-holder array from the eval() routine to s2_scope. This cuts allocations drastically when recycling is disabled, reducing the unit test amalgamation alloc counts by about 1/3rd and saving 1M of total alloc'd memory. The savings when recycling is on are minimal but better than nothing. file: [19db9c811a] check-in: [61f4780ed8] user: stephan branch: trunk, size: 470659
07:08
Refactored s2's various assignment operators for better ref/unref handling and readability. file: [fb218738fa] check-in: [557510fcb9] user: stephan branch: trunk, size: 470666
2017-11-12
10:49
Discovered and applied gcc's -Wextra warning level, plus patched up violations it caught (mostly missing struct member initializers). file: [eafec55b8c] check-in: [f13f6c3c4b] user: stephan branch: trunk, size: 470672
09:06
Migrated s2.Buffer.replace() implementations into core cwal functions. file: [e500a18593] check-in: [e980d01913] user: stephan branch: trunk, size: 470640
2017-11-10
20:49
cwal_value_from_arg() now trims starting/ending quotes from the value part of --key="value". file: [3ae29f2b97] check-in: [f37e0dbf88] user: stephan branch: trunk, size: 467856
2017-11-07
13:10
reworked the change to cwal_buffer_fill_from_filename() from the previous commit. file: [c10c2c104f] check-in: [673581aadb] user: stephan branch: trunk, size: 467685
13:06
imported GLOB/LIKE pattern matching from sqlite3. Added s2.glob(glob,haystack[,globStyle]). file: [19458a8bb5] check-in: [4eac2f17a9] user: stephan branch: trunk, size: 467683
2017-11-03
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: [0ef9e8c0a3] check-in: [5e957a91c3] user: stephan branch: trunk, size: 467792
00:59
minor doc tweaks file: [a09efda190] check-in: [38b67c092e] user: stephan branch: trunk, size: 467508
2017-10-13
12:36
minor (and arguable) CWAL_TYPE_LISTMEM metrics tweak: no longer count a cwal_list_reserve() of a larger size as an alloc request if we already have enough memory in the list. file: [a0650e6dc3] check-in: [29f0e06050] user: stephan branch: trunk, size: 467410
12:23
s/\bUNUSED\b/CWAL_UNUSED_VAR/g. Minor s2 unit test tweak. file: [a616f4ddcb] check-in: [6eaa08f972] user: stephan branch: trunk, size: 467415
2017-10-12
12:11
Random tiny cleanups, auto-reformatting, and fixed (i think) CWAL_TYPE_LISTMEM allocation metrics tracking. file: [8bfd823449] check-in: [d7ba485ecd] user: stephan branch: trunk, size: 467388
2017-10-07
13:38
re-renamed a couple routines left mis-named by the strlen refactoring. file: [f52b103228] check-in: [a78283a20f] user: stephan branch: trunk, size: 466045
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: [4de44d576a] check-in: [ef477c5d1e] user: stephan branch: trunk, size: 466026
2017-03-22
18:56
random typos. file: [8302cb02c7] check-in: [390cab8ffd] user: stephan branch: trunk, size: 466333
2017-03-20
11:56
cwal core now sorts Object properties internally, making searches faster (on average). file: [562e5f7d62] check-in: [792bbb7ddd] user: stephan branch: trunk, size: 466454
2016-09-09
19:21
Adding a preliminary CMakeLists.txt for use in CLion. Also changed the UNUSED_VAR macro to an UNUSED attribute which appears to be more widely adopted by compilers. file: [ee769c5390] check-in: [d834ba36b3] user: calebg branch: s2-ndebug, size: 467519
2016-08-30
17:54
Adding some build information to cwal. file: [6a9d41867a] check-in: [a88bdfc8b2] user: calebg branch: cwal-ndebug, size: 467606
16:26
Removing NDEBUG and just using DEBUG to simplify sources. file: [6331870832] check-in: [a449dc869c] user: calebg branch: cwal-ndebug, size: 466813
13:37
Fixing up the cwal non-debug build: * Switched around the amal build so that cwal_amalgamation.* files can be used without including other files. * Added ENABLE_SPEED_OPTIMIZATIONS and ENABLE_SIZE_OPTIMIZATIONS to config.make - ENABLE_DEBUG=0 make - ENABLE_DEBUG=0 ENABLE_SPEED_OPTIMIZATIONS=1 make - ENABLE_DEBUG=0 ENABLE_SIZE_OPTIMIZATIONS=1 make * Replaced all debugging double negatives with just a positive expressions: "#if !defined(NDEBUG)" is now "#ifdef DEBUG" * Added the UNUSED_VAR macro to prevent the 'unused variable' compiler warning. * Removed the "force assert() to always work" section in the test.c file. * Added CWAL_AMALGAMATION_BUILD to test.c so that it's possible to easily build the test with the amal build. * Literred UNUSED_VAR everywhere it was needed in the test.c file. file: [400e69b9d2] check-in: [fce3c1d39b] user: calebg branch: cwal-ndebug, size: 466972
2016-08-25
20:44
Changed several *CWAL_INT/DBL derefs to memcpy() to avoid a bus fault on ARM. Had to work around gcc boneheadedness to do it :/. file: [049de06050] check-in: [4b1745c43f] user: stephan branch: trunk, size: 466918
2016-08-20
10:32
Fixed a not-_quite_-right assertion in the Unique-type's finalizer which could incorrectly trigger during scope cleanup. file: [96a7eecbf9] check-in: [1627a35a2c] user: stephan branch: trunk, size: 465886
2016-03-09
09:44
removed scope pointers from cwal_dump_value() and s2_dump_value() (they're just noise, as scopes are always stack allocated). file: [b0a55644a0] check-in: [104193e661] user: stephan branch: trunk, size: 465492
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: [44fc55d614] check-in: [8b8f0837cd] user: stephan branch: trunk, size: 465524
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: [41863a3ad0] check-in: [6ad30c288e] user: stephan branch: trunk, size: 467331
2016-03-01
17:57
corrected an assertion message. file: [e3e2a7fcfb] check-in: [226b9b7f00] user: stephan branch: trunk, size: 465525
17:15
removed some dead code, added an assertion to try to tickle and s2-level bug earlier on. file: [4b84fe72c8] check-in: [04e628eb7e] user: stephan branch: trunk, size: 465522
16:36
merged in trunk, resolved conflicts. file: [b19110c11a] check-in: [9128a3b5d8] user: stephan branch: core-prop-interceptors, size: 470343
16:31
removed an extraneous call which does the same thing as the thing which calls it. file: [dcdd0aa024] check-in: [75f2be92ce] user: stephan branch: trunk, size: 465805
2016-02-29
11:44
os-x compile warning fix from Warren (his compiler is lying and/or misbehaving, though). Edit: okay, not lying, but performing an unexpected (to me) conversion from uint16_t to int. file: [c5958941da] check-in: [de4c5e6afe] user: stephan branch: trunk, size: 465857
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: [fb58c30d89] check-in: [15092b9bd0] user: stephan branch: trunk, size: 465861
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: [4ea8898003] check-in: [6f574d3f55] user: stephan branch: trunk, size: 465745
10:56
merged trunk, resolved a conflict. file: [08229c15fc] check-in: [08244059ce] user: stephan branch: core-prop-interceptors, size: 470361
2016-02-26
15:47
child-rescoping fix for tuples (assertion triggered). file: [930eab5b90] check-in: [0c897fd853] user: stephan branch: trunk, size: 465718
14:57
tuple docs and an iteration error check fix. file: [7835437e3f] check-in: [3ceffbf8b9] user: stephan branch: cwal_value_pair, size: 465712
13:12
omg facepalm. The automatic resizing of hashes was losing their kvp flags. Thus scope storage failed to retain const flags only after having enough vars to cause it to resize. file: [26431203d2] check-in: [2ac9af21ff] user: stephan branch: cwal_value_pair, size: 465705
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: [9834e2b1fc] check-in: [42ddd6cf8c] user: stephan branch: cwal_value_pair, size: 464526
2016-02-25
23:54
minor tuple touchups. good night. file: [8e597b05e3] check-in: [fe58f61202] user: stephan branch: cwal_value_pair, size: 463629
23:38
changed tuple hashing to just use the ptr-hash instead of hashing all elements. We might want to revision that later for use with tuples as hash keys (for use in simulating sets via hash tables). Edit: nevermind: hash keys' hashes have to be constant, and tuples are not, so this is the right hash algo. file: [99f56a5684] check-in: [b8fcba87c5] user: stephan branch: cwal_value_pair, size: 463541
23:15
a small start on the CWAL_F_IS_VISITING transition to CWAL_RFC_IS_VISITING. file: [db21713233] check-in: [1006c5a9dd] user: stephan branch: cwal_value_pair, size: 463418
22:25
cwal_value_may_iterate() now works for tuples. file: [70290a01b5] check-in: [efcb1523c8] user: stephan branch: cwal_value_pair, size: 463122
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: [3c561365c3] check-in: [515942ded1] user: stephan branch: cwal_value_pair, size: 463061
21:42
refactored pairs as tuples (fixed-length arrays). Still need to add foreach() support. file: [ecbfbcc56d] check-in: [5cc361ae64] user: stephan branch: cwal_value_pair, size: 462101
19:25
merged in trunk. file: [44efdc5464] check-in: [ec839ef681] user: stephan branch: cwal_value_pair, size: 461977
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: [a56bedba9e] check-in: [8ecd168f4b] user: stephan branch: trunk, size: 455466
2016-02-16
18:28
i give up for tonight. file: [01122365ea] check-in: [8bbe9797b9] user: stephan branch: core-prop-interceptors, size: 459520
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: [584e0051fb] check-in: [ef67b58df2] user: stephan branch: core-prop-interceptors, size: 459364
14:37
merged in trunk file: [98497073f9] check-in: [e5dfe6a291] user: stephan branch: core-prop-interceptors, size: 456584
14:29
merged in trunk file: [a6058aa5da] check-in: [7658116a71] user: stephan branch: cwal_value_pair, size: 461953
12:11
Got rid of cwal_unref_from(). s2 still works. file: [6698bf2fb4] check-in: [78bac73345] user: stephan branch: trunk, size: 455442
10:45
oops - enabled one of the #if's which allows th1ish to continue to work (it was disabled while testing yesterday). file: [52530de244] check-in: [71969d4b29] user: stephan branch: th1ish-R.I.P., size: 453868
2016-02-15
19:49
Added yet another marker (this one in the penultimate place: cwal_unref_from()) for a place which can be removed once we finally decide to get rid of th1ish. file: [a53874a4db] check-in: [aee732756b] user: stephan branch: trunk, size: 453868
19:42
Added a few markers in places which can be removed once we finally decide to get rid of th1ish. file: [5c9c3c2211] check-in: [555d3732b0] user: stephan branch: trunk, size: 453742
19:37
wrote what turned out to be a novella on plans for/thoughts on improving s2_estack to notably improve s2's internal value ref/unref handling (now that my understanding of the intricacies ref handling in the context of temp values, in particular in conjunction with string interning (or value interning in general), has finally caught up to the code\!). file: [7b407ba869] check-in: [dcf19ee9c8] user: stephan branch: trunk, size: 453512
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: [f7790efe5f] check-in: [133d7cfdd9] user: stephan branch: trunk, size: 453340
2016-02-13
22:54
added a potential todo. file: [1d4ce4e2be] check-in: [1b4862fe9f] user: stephan branch: trunk, size: 452704
22:23
typo/doc/capslock fixes. file: [199bfe9966] check-in: [f6dc886276] user: stephan branch: trunk, size: 452588
19:22
Minor tweaks to get it compiling (again) with CWAL_SIZE_T_BITS=16. file: [54a1e4e3f1] check-in: [6509fa8dd3] user: stephan branch: trunk, size: 452591
18:55
Replaced the remaining relevant cwal_obase::flags with cwal_value:rcflags (did indeed need all 4 bits, but freed up 3 cwal_obase::flags bits for potental later use). Pseudo-containers (namely CWAL_TYPE_UNIQUE) can behave sanely during cleanup. e.g., they now participate in the gc queue and cycle-breaking during cleanup. file: [e29217b3a4] check-in: [c391d2ccce] user: stephan branch: value-refcount-flags, size: 452592
17:39
Renamed cwal_value::refcount to rcflags to ensure that there are no stray uses of it. file: [acc2bd6cdf] check-in: [79d6338ab2] user: stephan branch: value-refcount-flags, size: 450983
17:25
Initial refactoring for encoding a few bits of flags in cwal_value::refcount. Both th1ish and s2 tests pass with these changes, though we're internally encoding the refcount differently now. Initially 4 bits, but that will likely drop to 2. file: [6fd0dda919] check-in: [ac9cf983f2] user: stephan branch: value-refcount-flags, size: 450993
16:00
merged in trunk. file: [ddc20f1322] check-in: [12de6a8d35] user: stephan branch: core-prop-interceptors, size: 448461
15:59
Merged in trunk, as it's about to get messy with planned internal refcount refactoring. file: [49bc5426d9] check-in: [da81a83408] user: stephan branch: cwal_value_pair, size: 453803
15:53
Worked around a scope-cleanup crash caused by a Unique-typed value containing cycles (same problem we saw with cwal_value_pair experimentation). This case is a good argument for stealing bits from the refcount for a couple internal cwal_value flags. file: [0e35174460] check-in: [e1076c4252] user: stephan branch: trunk, size: 447204
05:32
Minor metrics dump output addition (total refcount of all interned strings). file: [4ef7fcb439] check-in: [745f3a1f2c] user: stephan branch: trunk, size: 445463
04:46
Fixed an internal misuse of cwal_string::length (failed to strip flag bits) which caused an OOM error (tried to alloc a few gazillion bytes). file: [228fc0aac5] check-in: [93f5e8f467] user: stephan branch: trunk, size: 444729
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: [b7e58f10e6] check-in: [db36c3e32a] user: stephan branch: trunk, size: 444621
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: [b577515e0c] check-in: [f505331bdb] user: stephan branch: cwal_value_pair, size: 451369
2016-02-11
20:02
merged in trunk. file: [c9c6c4243a] check-in: [66ba5effe5] user: stephan branch: core-prop-interceptors, size: 445853
2016-02-06
19:07
More hash experimentation. Found the worst hash ever. file: [7fb08dfbfc] check-in: [655faf1704] user: stephan branch: trunk, size: 444596
18:53
More tinkering with the core string hashing algo. Found one which works a tiny tick better than FNV-1a in basic s2 tests. Minor metrics output addition. file: [4db9ad8f0d] check-in: [85c4e2a579] user: stephan branch: trunk, size: 443834
16:37
Internal refactoring to how rescoping is handled to allow us to differentiate between is-rescoping and is-visiting. file: [44d9251d40] check-in: [9339197dd9] user: stephan branch: trunk, size: 441955
12:51
minor metrics output addition, enabled memchunk padding. file: [ebc37bb086] check-in: [c49259a801] user: stephan branch: trunk, size: 440823
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: [1b782b9c20] check-in: [599e5b4b81] user: stephan branch: trunk, size: 440207
11:48
Added a rescoper to cwal_function's state, analog to cwal_native. Now to consolidate them using the newer interface. file: [34803ed642] check-in: [e2d831d607] user: stephan branch: trunk, size: 440243
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: [7be3fbcbf3] check-in: [4f63014a31] user: stephan branch: trunk, size: 439670
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: [632af8e73e] check-in: [7745e5b370] user: stephan branch: trunk, size: 439019
2016-02-05
23:43
Some experimentation with a different internal approach to property setting in some case (avoiding a second lookup). file: [a5b549ddbe] check-in: [09988759e5] user: stephan branch: trunk, size: 437268
21:58
fixed cwal_new_string() to work as expected when its argument starts with a NUL byte but has a positive length. file: [4128fe3265] check-in: [09c1d58eac] user: stephan branch: trunk, size: 435791
20:17
finally added String.replace() in s2. file: [85b5725656] check-in: [9254246116] user: stephan branch: trunk, size: 435728
12:40
Trying out my current understanding of refs vis-a-vis propagating return values. th1ish's ref handling is poor, though, so this breaks it. Maybe time to delete th1ish altogether (i would if it weren't for the demo CGI site). file: [efc92e6980] check-in: [6e466bc44c] user: stephan branch: trunk, size: 435585
2016-02-03
17:38
Fixed cwal_hash cleanup to behave like objects/arrays wrt unhand vs unref when cleaning up entries which live in older scopes during the container's scope's finalization. Minor internal refactoring in prep for (potentially) trying (again) to sort cwal_obase-level properties to speed up searches a bit. file: [ee886a40ea] check-in: [f916a73ed7] user: stephan branch: trunk, size: 434992
2016-02-02
19:29
merged in trunk. file: [fa11b4e10c] check-in: [7c7c6b1e0f] user: stephan branch: core-prop-interceptors, size: 438663
2016-02-01
18:33
insignificant internal touchups. file: [bcac2a6640] check-in: [052b0840a3] user: stephan branch: trunk, size: 437406
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: [6ac7dca52a] check-in: [0ca7f73ed8] user: stephan branch: trunk, size: 437392
17:03
a proactive fix in cwal_unref() for a hypothetical condition involving manipulating/upscoping scope property storage containers from client code (s2 or th1ish). file: [8bf3cc5371] check-in: [b097caff96] user: stephan branch: trunk, size: 437435
12:37
facepalm. lol. good thing this was not an important piece of code. file: [c470416bc5] check-in: [90e096d6a9] user: stephan branch: trunk, size: 435144
2016-01-26
17:06
more interning notes/warnings. file: [a5115f2fd5] check-in: [48bf6eead2] user: stephan branch: trunk, size: 435144
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: [09bd91248f] check-in: [1c111ca778] user: stephan branch: trunk, size: 434942
2016-01-25
20:13
consolidated some duplicate code. file: [95b17e320f] check-in: [5be320aab0] user: stephan branch: trunk, size: 433786
18:49
experimenting with cwal scopes copying const-flagged vars from parent scopes when a local lookup fails, but this can change script semantics, namely typeinfo(islocal...) and declaration of locals with the same name after a higher-up one has been copied in. file: [c2a060fbe3] check-in: [cb9e1ef96d] user: stephan branch: scopes-copy-consts-on-lookup, size: 436052
2016-01-23
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: [ccbf0901a0] check-in: [18143f714e] user: stephan branch: trunk, size: 435239
16:48
added cwal_var_set_with_flags(). file: [47110fa206] check-in: [b3f8ba341e] user: stephan branch: trunk, size: 434814
12:01
minor semantics change in cwal_args_state() and cwal_function_state_get(). file: [3b29b6a0bf] check-in: [6bbcd9bcef] user: stephan branch: trunk, size: 434582
2016-01-22
15:25
merged in trunk. file: [e3e614e949] check-in: [e75bac64fb] user: stephan branch: core-prop-interceptors, size: 435801
2016-01-21
21:41
fixed a regression in cwal_var_decl() which allowed a variable to be declared more than once without error. Caused by the recent addition of hashes as scope-level property storage. file: [29ceb860d7] check-in: [dae15968d8] user: stephan branch: trunk, size: 434544
09:06
renamed cwal_hash_search_v_kvp() to cwal_hash_search_kvp_v() for consistency with recent similar changes. file: [0245d316c6] check-in: [aae2daf7a3] user: stephan branch: trunk, size: 434629
2016-01-13
20:38
some prep work for property interceptors experimentation. file: [442650ac46] check-in: [5983b9b959] user: stephan branch: core-prop-interceptors, size: 435886
17:34
moved some local vars around. file: [42570727d3] check-in: [69b672efc3] user: stephan branch: trunk, size: 434629
2016-01-12
19:52
tweaked cwal_value_hash_ptr(). file: [26945c68f5] check-in: [e49749bbad] user: stephan branch: trunk, size: 434601
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: [0294337375] check-in: [035cefe320] user: stephan branch: trunk, size: 434530
17:30
added some comments about the workaround from the previous commit. re-enabled a chunk of s2 which triggered the problem. file: [9058aed737] check-in: [22b1da9ca8] user: stephan branch: trunk, size: 434243
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: [32105cfc5b] check-in: [da9d7bdceb] user: stephan branch: trunk, size: 433766
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: [acb1e31cd6] check-in: [970642d496] user: stephan branch: trunk, size: 432996
2016-01-10
14:37
added cwal_memcap_config.forceAllocSizeTracking and the -fst/--fst flags to s2sh to toggle it. file: [f4abe09a62] check-in: [d1f8344ad3] user: stephan branch: trunk, size: 432208
05:43
Changed how a ref is managed in cwal_hash_insert_with_flags(). file: [86f287f83c] check-in: [be54ad2d8b] user: stephan branch: trunk, size: 431427
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: [b5464315b2] check-in: [4d688d1ffc] user: stephan branch: s2-scope-hashes, size: 431383
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: [4044c05986] check-in: [b79462d915] user: stephan branch: s2-scope-hashes, size: 430706
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: [f945c1524a] check-in: [97b6c34301] user: stephan branch: s2-scope-hashes, size: 431000
00:40
most/much of the groundwork for making scopes be capable of using either objects or hashtables for property storage. file: [54ff2f7f29] check-in: [99e0b10067] user: stephan branch: s2-scope-hashes, size: 428355
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: [8b5872cc52] check-in: [bedc1cdb2a] user: stephan branch: trunk, size: 426366
17:41
minor internal commenting. file: [f76cd124eb] check-in: [1a452f999b] user: stephan branch: trunk, size: 426019
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: [b3578d1f37] check-in: [1f2e988254] user: stephan branch: trunk, size: 424731
2016-01-06
15:58
expanded the cwal_next_prime() list a bit. file: [c90bc93e0a] check-in: [24483b6c83] user: stephan branch: enum-with-value, size: 424494
15:15
port cwal_hash_grow_if_loaded() and cwal_next_prime() from s2 into the core. file: [b44659900b] check-in: [cb58cd5a46] user: stephan branch: enum-with-value, size: 424447
2014-12-20
10:44
minor heuristic tweak in cwal_malloc2(). file: [22799607d4] check-in: [50fbcf8cc5] user: stephan branch: trunk, size: 422719
2014-12-19
02:24
added cwal_malloc2(), which first checks the chunk recycler, to enable a recycling optimization in Native implementations. file: [0939c48df5] check-in: [e58b15dc3f] user: stephan branch: trunk, size: 422189
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: [bea1f67823] check-in: [063462ebcd] user: stephan branch: trunk, size: 422098
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: [13648a7025] check-in: [73df044fc1] user: stephan branch: trunk, size: 420119
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: [48a71c396e] check-in: [a4ab970b93] user: stephan branch: trunk, size: 420598
19:22
added missing total memory use constraint checks. file: [22960c9ec4] check-in: [33d4a0dd78] user: stephan branch: trunk, size: 420473
17:40
Added metrics for "slack" bytes recovered by the chunk recycler. file: [97461c082b] check-in: [dc4ebce93d] user: stephan branch: trunk, size: 420043
16:14
more metrics dump prettification. file: [cc6f9b1d2d] check-in: [e0149376a0] user: stephan branch: trunk, size: 419586
15:04
core: when memory size tracking is on, make use of it in the chunk recycler to reclaim bytes which get sometimes get "truncated" during recycling of oversized chunks. file: [d3ade57491] check-in: [9c7e086e74] user: stephan branch: trunk, size: 418792
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: [54dfd97875] check-in: [cc38a84bf8] user: stephan branch: trunk, size: 416891
2014-12-14
20:57
minor metrics fix. file: [59ca6dcd64] check-in: [8fcec39269] user: stephan branch: trunk, size: 416561
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: [b5104b1af1] check-in: [8cb797fc88] user: stephan branch: trunk, size: 416560
01:14
minor refactoring of/additions to the hash API in prep for eventual additions in s2. file: [f5f559d58a] check-in: [e6829b71af] user: stephan branch: trunk, size: 411474
2014-12-13
23:14
Minor hash code calc change in the core, removed the comma from typeinfo(TAG EXPR), added unit tests for typeinfo. file: [a83c88ebf4] check-in: [663f4dff66] user: stephan branch: trunk, size: 411052
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: [ae4d8a3835] check-in: [339cea5e4d] user: stephan branch: trunk, size: 411025
2014-12-09
18:42
Reverted the buffer realloc part of [8a4bd944bdca], as it causes +50-60 allocs in the s2 amalgamated unit tests. Once again, a hard lesson in over-optimization. file: [b3f9eed84b] check-in: [38f581b85a] user: stephan branch: trunk, size: 410762
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: [be09b68336] check-in: [5ebcca7477] user: stephan branch: trunk, size: 410570
2014-12-07
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: [bf474cf25c] check-in: [8a4bd944bd] user: stephan branch: trunk, size: 410377
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: [a56f26f632] check-in: [52824f4adc] user: stephan branch: trunk, size: 409884
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: [de800d07a0] check-in: [aabeccc821] user: stephan branch: trunk, size: 410045
2014-12-06
22:58
metrics-related tweaks. file: [926732eecd] check-in: [780d6a11c1] user: stephan branch: trunk, size: 409898
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: [279e747fae] check-in: [8d5f65f33a] user: stephan branch: trunk, size: 409943
18:46
Refactored cwal_printf_cstr() to use the cwal_engine allocator. file: [211f3b980c] check-in: [9f0c85b080] user: stephan branch: trunk, size: 409230
16:30
core: more work on the various container flags, s2: more work on the enum keyword, other minor cleanups. file: [dd78189b4a] check-in: [8c61a703a0] user: stephan branch: trunk, size: 406894
00:55
minor chunk recycler optimization experiment. file: [804a904540] check-in: [42701dac86] user: stephan branch: trunk, size: 406404
2014-12-05
22:44
more work on the container flags, added a couple missing cwal_value_is_XXX() variants, minor API renamings. file: [155d604028] check-in: [38060dc5e9] user: stephan branch: trunk, size: 406132
22:22
core: removed obsolete/duplicated function, doc updates. file: [41b45798e7] check-in: [104ffccfd9] user: stephan branch: trunk, size: 406203
21:47
core: added an internal flag to cap single max alloc size. file: [2699691b8d] check-in: [d850e44911] user: stephan branch: trunk, size: 406302
19:49
core: reimplemented cwal_value_upscope() with new semantics. Added the seemingly missing upscoping of prototype pointers. file: [2aa61e3a27] check-in: [3b90d0a7c8] user: stephan branch: trunk, size: 406373
18:38
compile fixes for non-debug builds. file: [9c2bd0de2d] check-in: [6b170364c7] user: stephan branch: trunk, size: 405681
18:11
minor tweak to the chunk allocator (now allows chunks of one byte smaller). file: [c9572cf7d6] check-in: [a0e3a37b18] user: stephan branch: trunk, size: 405390
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: [f91c5fb0e1] check-in: [6dbf89b73c] user: stephan branch: trunk, size: 405391
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: [6a9b20c674] check-in: [435ccd17b7] user: stephan branch: trunk, size: 404253
11:22
metrics dump header fix for recycling bins. file: [44e782aa93] check-in: [6c301265d9] user: stephan branch: trunk, size: 409013
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: [e535975c01] check-in: [d23084f162] user: stephan branch: trunk, size: 408979
2014-12-04
21:55
core: platform workaround for my ARM, which is bus-faulting on a particular deref of a static/const pointer. Accessing the same pointer via anoether route does not bus-fault it. file: [27874eafc2] check-in: [319b16b847] user: stephan branch: trunk, size: 407669
19:31
removed two now-redundant calls to the chunk recycler. file: [0b9d182bfd] check-in: [ccab3e2a09] user: stephan branch: trunk, size: 407323
17:47
Minor internal cwal_array_set() optimization. file: [6cba82e0df] check-in: [5d80eb7a5f] user: stephan branch: trunk, size: 407380
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: [c224374adb] check-in: [0687ce7bc3] user: stephan branch: trunk, size: 407298
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: [f7ceaaea0b] check-in: [15810833d0] user: stephan branch: trunk, size: 406299
2014-12-02
21:21
core: added a todo. file: [857e64d001] check-in: [c4c02a716f] user: stephan branch: trunk, size: 402558
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: [098c7f8a12] check-in: [71b228faa9] user: stephan branch: trunk, size: 402129
2014-12-01
21:48
core: string allocation will now fall back to the memory chunk handler in some cases. file: [0e8714d522] check-in: [e87f73283e] user: stephan branch: trunk, size: 401217
18:42
checking in an experiment in sizeof(cwal_obase) to see how it affects ARM. file: [e104adde3a] check-in: [9e3cef307f] user: stephan branch: trunk, size: 399677
2014-11-30
15:54
Added cwal_free2() to potentially send memory to the recycler. file: [986f52cc9b] check-in: [058951d311] user: stephan branch: trunk, size: 399448
11:31
added type information to the recycle bin metrics output, s/cwal_value_type_id_name/cwal_type_id_name/g file: [8bc7336f3e] check-in: [5411fd86ba] user: stephan branch: trunk, size: 399243
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: [e162139af5] check-in: [3fc1976b1d] user: stephan branch: trunk, size: 396911
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: [16051a4db4] check-in: [8ba45681a0] user: stephan branch: trunk, size: 398245
17:17
Added per-recycling-bin hit/miss counters. file: [bb9141233c] check-in: [520ed62f5d] user: stephan branch: trunk, size: 396779
16:33
more metrics-related tinkering. file: [8538ca43ee] check-in: [624ffc5926] user: stephan branch: trunk, size: 396471
15:11
more work on the metrics, now recording value recycling hits/misses. file: [73811e51ae] check-in: [61ab49b29e] user: stephan branch: trunk, size: 395065
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: [8d1428f372] check-in: [97b8ce3372] user: stephan branch: trunk, size: 393914
2014-11-28
20:11
more minor metrics tweaks. file: [f6c93deefe] check-in: [03503303ef] user: stephan branch: trunk, size: 389031
19:30
more tweaking related to the new recycler bits. file: [d162dffbcf] check-in: [06df42034a] user: stephan branch: trunk, size: 388672
15:28
core: improvements in the chunk recycler, and more memory gets recycled. file: [26be69ed4f] check-in: [a9a7aa2637] user: stephan branch: trunk, size: 387905
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: [3b9c035494] check-in: [94bd6ae976] user: stephan branch: trunk, size: 380348
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: [9b01d648ba] check-in: [bd8ecee444] user: stephan branch: trunk, size: 369629
2014-11-24
21:32
core: fixed a bug in waiting in the handling of vacuum-proofing functions for the duration of their call. Cleanups related to the previous commit. file: [3f3edec55b] check-in: [fd27a99b8a] user: stephan branch: trunk, size: 368838
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: [b693662825] check-in: [d9d4be0daa] user: stephan branch: trunk, size: 368788
16:33
minor doc touchups. file: [165ada42b8] check-in: [cace68b3b6] user: stephan branch: trunk, size: 364269
2014-11-21
12:36
hashtable metrics tweaks. file: [c7c2c58bca] check-in: [a6ccf5847d] user: stephan branch: trunk, size: 364073
2014-11-20
20:19
Added cwal_first_1000_primes(). file: [d3c63a084e] check-in: [1ff9355f0d] user: stephan branch: trunk, size: 363557
19:43
Added cwal_hash_resize() and s2.Hash.resize(). file: [f7b9550470] check-in: [75730700a6] user: stephan branch: trunk, size: 357237
18:20
trivial internal refactoring and docs. file: [890b1b54a4] check-in: [f31a261570] user: stephan branch: trunk, size: 354834
18:13
minor return-path reduction tweak. file: [1b899723f9] check-in: [c0051d3d47] user: stephan branch: trunk, size: 354582
18:10
const correctness tweaks. file: [4378fadf7a] check-in: [43b97ba497] user: stephan branch: trunk, size: 354513
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: [61d50c2e3c] check-in: [310ba44db8] user: stephan branch: trunk, size: 354501
2014-11-15
18:47
core: 2nd half of the prop-search-while-visiting change. file: [9c367cc594] check-in: [1e84023da9] user: stephan branch: trunk, size: 353567
18:10
core: cwal_obase_search() now allows searching on a being-traversed container. Not sure why it was prohibited before. file: [101167de5f] check-in: [3402366053] user: stephan branch: trunk, size: 353536
2014-11-14
18:13
added cwal_rc_str2(). file: [313f454032] check-in: [1d4b45a91f] user: stephan branch: trunk, size: 353505
2014-11-01
14:36
minor internal cleanups. file: [dcc168c423] check-in: [6c80b0f90c] user: stephan branch: trunk, size: 353399
2014-10-31
09:54
clang warning cleanups. file: [0b572925e3] check-in: [e43eef1211] user: stephan branch: trunk, size: 353072
2014-10-28
00:05
minor internal cleanups and docs. file: [8b96214aa0] check-in: [bfd5737474] user: stephan branch: trunk, size: 353146
2014-10-11
14:18
inor portability fixes for building with CWAL_SIZE_T_BITS=16. file: [67c3731581] check-in: [8aead931ee] user: stephan branch: trunk, size: 352358
11:43
Tweaks to cwal_value_compare() when both values are numeric, so that (3<3.3) and (3!=3.3) are true even in an integer context. Changed a th1ish test broken by this. file: [0d8021325c] check-in: [915dfc2d84] user: stephan branch: trunk, size: 351934
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: [41d040824b] check-in: [8a484ca98c] user: stephan branch: trunk, size: 351623
2014-08-31
10:56
core: another string recycling size tweak, gives a tiny (under 1%) alloc reduction in s2 unit tests as well as saving about 600 bytes total mem. file: [a268893800] check-in: [e154af2b91] user: stephan branch: trunk, size: 350893
2014-08-30
05:28
cwal_function_call_array() now allows a NULL array. file: [71de732954] check-in: [ea21a5da3e] user: stephan branch: trunk, size: 350834
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: [6541f690bb] check-in: [7c13a15c82] user: stephan branch: trunk, size: 350789
2014-08-28
21:35
minor doc and comment tweaks. file: [47f028194d] check-in: [9cc9a32d91] user: stephan branch: trunk, size: 350414
2014-08-27
07:27
minor tweak to yesterday's fix, honoring the initial list size minimum (helps the recycler out). file: [540cc3ae1d] check-in: [446b495cfc] user: stephan branch: trunk, size: 350399
2014-08-26
20:54
removed an assert added in the last round of bug-chasing. file: [f8b7ef03c0] check-in: [e9a5b4f51f] user: stephan branch: trunk, size: 350323
20:38
Fixed an inexplicable brain-burp in cwal_array_set() which triggered a bogus OOM error when setting an array index >= CwalConsts.InitialArrayLength on an empty array, a corner case which was only found via dumb luck after hours of debugging, trial, and error. file: [57966020f0] check-in: [20f7ea2175] user: stephan branch: trunk, size: 350366
2014-08-25
16:42
minor cleanup and semantics change (extension) in cwal_value_prototype_set(). file: [1c3c1d2ca4] check-in: [de3c61a486] user: stephan branch: trunk, size: 350443
15:30
Deprecated cwal_args_callee_state(), as it's a functional dupe of (yet less efficient than) cwal_args_state(). file: [0bd2c5f454] check-in: [26f947ec9d] user: stephan branch: trunk, size: 350380
2014-08-24
14:40
minor informational tweak in cwal_dump_allocation_metrics(). file: [1ed653a971] check-in: [1da45cb231] user: stephan branch: trunk, size: 350287
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: [ee3e2dd059] check-in: [06a8a0df82] user: stephan branch: trunk, size: 350240
2014-08-22
13:09
typo file: [e2f9c93710] check-in: [5972de16f6] user: stephan branch: trunk, size: 349586
12:43
core: tinkering with the buffer recycling algo. file: [a8016a93c5] check-in: [3208b69997] user: stephan branch: trunk, size: 349586
2014-08-20
21:14
memory misuse fix for the buffer caching, caught by the libfossil bindings (and pinpointed by gcc's stack-smash protector). file: [a254961b7d] check-in: [9dba38f602] user: stephan branch: trunk, size: 349258
18:08
Minor touchups to the previous commit. file: [c4a6404327] check-in: [35a020bb78] user: stephan branch: trunk, size: 348954
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: [e1e0ad0d84] check-in: [1648e371e7] user: stephan branch: trunk, size: 348535
2014-08-18
20:38
minor internal tweak to cwal_array_shift(), doc touchups. file: [49ed8e7d46] check-in: [fcd9591170] user: stephan branch: trunk, size: 345164
18:16
core: swapped out string hash algo again. FNV-1a seems to give the best overall results so far, at least on 64-bit. file: [18f2473d5a] check-in: [b86d09b1cf] user: stephan branch: trunk, size: 345066
2014-08-17
17:09
typo file: [d5681d319f] check-in: [f6f070b0e0] user: stephan branch: trunk, size: 344764
11:26
experimental tweak to kvp-set which appears to make no functional difference. file: [2921a22a89] check-in: [3edf547f3a] user: stephan branch: trunk, size: 344767
2014-08-16
11:33
Added cwal_props_count() and cwal_props_has_any(), plus s2 Object.isEmpty() and propertyCount(). file: [313d005334] check-in: [c95efcf86c] user: stephan branch: trunk, size: 344243
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: [b1edcda697] check-in: [4c8879eff0] user: stephan branch: trunk, size: 343844
2014-08-10
18:53
Minor cleanups in error propagation in cwal_array_sort_stateful(). More work to do there and it seems to sort incorrectly at times. file: [7974a08be5] check-in: [2df8b807e0] user: stephan branch: trunk, size: 342923
11:27
doc updates. file: [3189eb49ca] check-in: [70cfc14407] user: stephan branch: trunk, size: 342477
2014-08-06
17:10
fixed return index in cwal_array_index_of() when value==NULL. file: [ce2f11972c] check-in: [ee436d7317] user: stephan branch: trunk, size: 342257
2014-08-05
17:10
fixed a missing clearing of cwal_native::rescope_children which (justifiably) triggered an assertion in s2 code when a native was rescoped but it could not find its bound client-side part. file: [3c3f22bff4] check-in: [85b1c7157e] user: stephan branch: trunk, size: 342217
2014-07-22
17:57
minor internal efficiency tweak. file: [6f9bb6e331] check-in: [f541cd4d5e] user: stephan branch: trunk, size: 342113
2014-07-18
13:44
added cwal_buffer_to_zstring_value(), due to popular demand in client code. file: [18ef8ccba2] check-in: [f4705fd709] user: stephan branch: trunk, size: 342069
2014-07-16
22:22
core: popping the top-most scope now properly disconnects cwal_engine::prototypes, and will re-created it as needed. file: [da526e97e9] check-in: [30fcf92b1d] user: stephan branch: trunk, size: 341931
2014-07-09
15:48
core: minor cosmetic metrics dump tweak. file: [b8ad7111fc] check-in: [ea1e56e3c6] user: stephan branch: trunk, size: 341369
2014-07-07
21:22
core: minor metrics dumps tweak. file: [d8ca967606] check-in: [aaf8a5df0d] user: stephan branch: trunk, size: 341324
2014-07-06
15:53
core: minor metrics dump tweaks. file: [90f02995f0] check-in: [c913c665d7] user: stephan branch: trunk, size: 341296
2014-07-05
10:59
core: cwal_array_take(): replaced an old ugly refcount abuse the the formal mechanism for such abuse. file: [1989f22645] check-in: [d82ad21d69] user: stephan branch: trunk, size: 341189
2014-07-04
20:51
core: a minor optimization in one of the kvp search routines. file: [a881595cd5] check-in: [a8897043c6] user: stephan branch: trunk, size: 341280
15:13
minor assertion improvement after triggering it via an s2 bug. file: [c5260ca4eb] check-in: [7407fd839c] user: stephan branch: trunk, size: 341196
2014-07-02
22:24
tweaked weak ptr table size again. file: [588d740dfe] check-in: [cb2ccce9d9] user: stephan branch: trunk, size: 341170
18:06
core: added missing x/z-string to cwal_engine_recycle_max(). Comsetic metrics output tweaks. file: [96b78297f3] check-in: [464babc10e] user: stephan branch: trunk, size: 341169
17:48
Added cwal_hash_size(). file: [072b32b92d] check-in: [3fd4fe9001] user: stephan branch: trunk, size: 340824
2014-06-30
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: [0915092e70] check-in: [4434f6db64] user: stephan branch: trunk, size: 340744
2014-06-29
14:14
Tweaking of cwal_weak_ptr page sizes. Proactive range fix weak ref recycling. file: [b58f42db33] check-in: [c12e7f860a] user: stephan branch: trunk, size: 340170
13:33
Appear to have fixed a ptr_table-remove bug caught by an assertion in a mis-cleanup situation. file: [6c6234f30d] check-in: [b89eeb0831] user: stephan branch: trunk, size: 340141
2014-06-28
15:32
fixed a test broken by a recent change. Minor internal fix in cwal weak ref cleanup. file: [049fee7a40] check-in: [7f98a79b52] user: stephan branch: trunk, size: 340339
13:47
merged in the s2-semicolons branch. file: [81549c590b] check-in: [9af1212295] user: stephan branch: trunk, size: 340312
12:31
minor vacuum tweak. file: [af1df9ea21] check-in: [ed74bc8c9f] user: stephan branch: s2-semicolons, size: 340165
10:59
A fix for the two specially-propagating values in the face of a vacuum. file: [b7290d74df] check-in: [0362c958b3] user: stephan branch: s2-semicolons, size: 340063
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: [c8601b3adf] check-in: [640531cd49] user: stephan branch: s2-semicolons, size: 339855
02:20
Fixed a major blunder in cwal_engine_vacuum(), which did not start gc-queuing mode when cleaning up the scope. 7 hours debugging that. Amazing this has not backfired until now, but it requires certain conditions before it trips up. file: [a18e5772bd] check-in: [e377a0525b] user: stephan branch: s2-semicolons, size: 339854
2014-06-27
19:00
Added cwal_kvp_flags_set(), for use in some upcoming s2 bits. file: [9c8226967a] check-in: [14d18baad5] user: stephan branch: trunk, size: 339496
2014-06-26
19:56
improved an assertion triggered by an invalid unref in s2 code. file: [74ec443e13] check-in: [c993c23530] user: stephan branch: trunk, size: 339349
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: [a4c13df62b] check-in: [6a720a9358] user: stephan branch: trunk, size: 339231
19:55
minor doc/comment touchups. file: [21d936edf7] check-in: [ae9fdce53a] user: stephan branch: trunk, size: 338954
2014-06-23
21:46
minor cleanups file: [259241b670] check-in: [219ac05917] user: stephan branch: trunk, size: 338851
19:53
minor z-string metrics tweak: now assumes (and counts) a NUL byte (only for metrics purposes). file: [a3cbce8d53] check-in: [df4c4776d1] user: stephan branch: trunk, size: 338749
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: [b37d96e995] check-in: [ec0d73eba5] user: stephan branch: trunk, size: 338564
2014-06-22
08:51
Added cwal_function_call_array(). file: [5a8e4f5e0a] check-in: [519baf9738] user: stephan branch: trunk, size: 337598
2014-06-21
21:19
cwal_buffer_fill_from_FILE/filename() now try to pre-allocate the buffer based on the guessed size of the file (based on seek-probing), falling back to the default strategy. file: [d7803f063b] check-in: [5085bfa2c5] user: stephan branch: trunk, size: 337095
20:05
Added cwal_scope_search_kvp(). file: [ab46c4047d] check-in: [76860bb343] user: stephan branch: trunk, size: 336381
14:46
Removed a redundant cannot-happen block. file: [06c86180a7] check-in: [63a980a029] user: stephan branch: trunk, size: 335376
2014-06-20
17:39
Fixed string-request metrics miscounting when string interning is enabled. file: [0765dfbd4d] check-in: [33cbbb8fbc] user: stephan branch: trunk, size: 335508
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: [1c5f7c8ceb] check-in: [e801bfc408] user: stephan branch: trunk, size: 335404
10:10
bending around the s2 exception/error infrastructure a bit, in prep for throwing exceptions. file: [f476ec7c70] check-in: [d7399dd09b] user: stephan branch: trunk, size: 336098
2014-06-18
21:35
fixed a thinking error in that last commit. file: [5f6a5e3975] check-in: [d9bc552399] user: stephan branch: trunk, size: 336038
21:12
changed semantics of explicit bool/string comparison so that (false==""). Does not seem to break any existing code. file: [832a61d795] check-in: [a3ad2000cf] user: stephan branch: trunk, size: 336005
2014-06-15
19:41
Seem to have gotten sweep-up working how i want it in s2. file: [3e51ccfc07] check-in: [2239164d8f] user: stephan branch: trunk, size: 335902
2014-06-14
14:52
changed the cwal_value_compare() semantics for NULL and UNDEFINED. Surprisingly, this does not break th1ish. file: [d88500e40b] check-in: [cd2897a4e5] user: stephan branch: trunk, size: 335897
2014-06-13
18:59
added cwal_container_part() file: [6c2d9666ef] check-in: [d6def05713] user: stephan branch: trunk, size: 335400
2014-06-11
20:27
added cwal_value_unhand(). file: [9b85873797] check-in: [86085394ee] user: stephan branch: trunk, size: 335210
2014-06-05
18:26
minor internal cleanup. file: [6ce187830d] check-in: [99b9b8dd8e] user: stephan branch: trunk, size: 334954
2014-06-03
22:32
Got some basic PoC in place for s2. file: [cf41a6a7a7] check-in: [0e11ae0e16] user: stephan branch: trunk, size: 334947
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: [9eced6b08a] check-in: [25ee81e2ed] user: stephan branch: trunk, size: 334834
19:00
Fixed broken cleanup ordering in Natives (which i recently swapped), as this breaks natives which use their own properties in their cleanup (namely linenoiseish's auto-save-at-finalize). file: [8657a3c712] check-in: [242ab76d5d] user: stephan branch: trunk, size: 332677
2014-05-14
20:41
A round of cleanups, tweaks, and API renamings. Improvements in the ++/-- operators. file: [d045851350] check-in: [6fca161343] user: stephan branch: trunk, size: 332303
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: [cb5b730024] check-in: [1db9511921] user: stephan branch: trunk, size: 329922
2014-05-11
15:22
Minor internal touchups. file: [26c77941a0] check-in: [fb42f4b960] user: stephan branch: trunk, size: 329937
12:05
minor cleanups in the vacuum code. file: [2ae9c9fc77] check-in: [d37e7de872] user: stephan branch: trunk, size: 329868
2014-05-10
19:24
A round of doc additions and minor API renaming. file: [cc4ba6877b] check-in: [d4a56b1fb6] user: stephan branch: trunk, size: 329845
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: [96146116a6] check-in: [961ce26847] user: stephan branch: trunk, size: 329841
17:05
And now the lower-level bits for Buffer.resize(). file: [7f29563b17] check-in: [a698f5f7b6] user: stephan branch: trunk, size: 329221
2014-05-09
18:24
Minor cleanups. Increased StringPadSize to 8, as this gives us a big boost in efficiency on large scripts. Once again removed the 'phantom ref' on interned strings. Improved api.ob API a bit by returning api.ob from the void-returning methods. file: [77b52d12dc] check-in: [2c2187749f] user: stephan branch: trunk, size: 328569
15:09
reenabled an old assertion. file: [845b590af6] check-in: [05885cd8d9] user: stephan branch: trunk, size: 328187
15:04
minor internal tinkering. file: [28d6f2cbdf] check-in: [98dee75be2] user: stephan branch: trunk, size: 328193
11:31
Found the hashing (int range) culprit which broke interning lookups. Other tweaking with vacuuming and interning. Added a kludge ++refcount on interned strings upon insertion to save them from vacuuming. i don't like that, but it does save memory. Switched string hash algos again. file: [702f22aa50] check-in: [a6668115e9] user: stephan branch: trunk, size: 327928
10:38
More work on vacuuming and related code. Discovered in the process that string interning is not hitting anywhere nearly as often as i really expect it to. file: [79e49019bc] check-in: [a24cf62be2] user: stephan branch: trunk, size: 327734
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: [3c53218b22] check-in: [ae032f2d59] user: stephan branch: trunk, size: 328360
23:13
minor cleanups before larger changes. file: [5c6115eac4] check-in: [65535570a0] user: stephan branch: trunk, size: 329551
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: [315f1a0050] check-in: [f5ae60cad0] user: stephan branch: trunk, size: 329580
2014-05-07
19:29
metrics output is now less cramped. file: [ff1f0abada] check-in: [2a5a4c7ff8] user: stephan branch: trunk, size: 326586
19:01
cwal_dump_allocation_metrics() now counts scopes differently (only allocated ones) because they skew the stats unduly (and unfairly ;). file: [44269054e7] check-in: [e4e693eb9f] user: stephan branch: trunk, size: 326574
2014-05-06
20:54
minor cleanups. removed some dead code. added some comments. file: [43cdf2badc] check-in: [571cccbd37] user: stephan branch: trunk, size: 326089
2014-05-05
22:23
minor tracing message tweak. file: [3f02ae6eba] check-in: [f97d4ed9e2] user: stephan branch: trunk, size: 325982
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: [771bd0a749] check-in: [4ce80bab79] user: stephan branch: trunk, size: 325981
18:06
this variant of cwal_engine_vacuum() works for the first 3 th1ish unit test scripts, then falls apart somewhere, but is certainly better than the previous iteration. file: [07759d8973] check-in: [7a0a0b3e7a] user: stephan branch: trunk, size: 325350
2014-05-04
12:36
minor internal cleanups. file: [46787b7173] check-in: [4123cb68de] user: stephan branch: trunk, size: 325354
11:07
Added long-overdue cwal_buffer_clear() convenience function file: [192b593caf] check-in: [4dd397b5b4] user: stephan branch: trunk, size: 325140
2014-05-03
23:51
more tinkering with cwal_engine_vacuum(). file: [12ca405d45] check-in: [0cad6273e0] user: stephan branch: trunk, size: 325037
20:07
Added cwal_prop_flags_v(), admittedly a quick-hack measure for th1ish which needs to be improved upon at some point. file: [3c1c567878] check-in: [73df633530] user: stephan branch: trunk, size: 325058
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: [b8c65e0614] check-in: [01628d5381] user: stephan branch: trunk, size: 324692
16:28
More tinkering with vacuum. It does horrible things to th1ish. file: [26a8da30c9] check-in: [93310a20c0] user: stephan branch: trunk, size: 323145
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: [c17ae319f8] check-in: [e276ed0f1d] user: stephan branch: trunk, size: 324073
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: [8f72c11b15] check-in: [8f455e260b] user: stephan branch: trunk, size: 323324
2014-05-02
20:55
minor change to cwal_array_index_of() semantics. file: [15799f9582] check-in: [761fa1bdb2] user: stephan branch: trunk, size: 320417
17:41
minor tweaks to the cwal_native bindings. file: [52240b6680] check-in: [7411d5518f] user: stephan branch: trunk, size: 320314
13:21
Added cwal_buffer_to_zstring(). Minor string hash tinkering. file: [8b1a401aff] check-in: [88d8f96564] user: stephan branch: trunk, size: 320264
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: [b298b12c90] check-in: [bc61ad3eb4] user: stephan branch: trunk, size: 318934
2014-05-01
16:49
Switched to FNV-1a hash for string hashing. file: [43c1cb19c5] check-in: [e3fa91abaf] user: stephan branch: trunk, size: 318169
16:33
minor metrics-related tweaks. Now count scope_push() as a scope alloction request. file: [fce8315f74] check-in: [1d9683743e] user: stephan branch: trunk, size: 317492
14:21
Now tracks cwal_buffer_reserve()d memory via the metrics counter, recording only the peak capacity of any given buffer. file: [4d1d8b93a1] check-in: [7349e44714] user: stephan branch: trunk, size: 315799
14:05
minor internal cleanups. file: [67393b3b07] check-in: [b869fcd158] user: stephan branch: trunk, size: 315735
2014-04-30
20:51
improved the allocation metrics dump output a bit, adding percentages. file: [4fee6c1ae3] check-in: [cedeb7b5b1] user: stephan branch: trunk, size: 315666
20:06
Tweaked string interning table size. Does not affect memory usage of the th1ish unit tests in 64-bit mode and is now the same value on both 32/64-bit platforms. file: [f484f8851b] check-in: [880482bdb9] user: stephan branch: trunk, size: 314644
2014-04-27
10:40
Expanded the allocation metrics dump to include interned string and weak ref tables. file: [4ce4a8b950] check-in: [0b3097482a] user: stephan branch: trunk, size: 314539
2014-04-26
20:23
minor tweaks to allocation report output. file: [e1312d104b] check-in: [6309f987ed] user: stephan branch: trunk, size: 313580
19:42
improved allocation metrics a bit. file: [d906ff7e9f] check-in: [36fb4ce9a3] user: stephan branch: trunk, size: 313267
2014-04-25
23:12
added some internal comments. file: [4a4fc5519a] check-in: [bced5153b5] user: stephan branch: trunk, size: 310240
19:57
A fix for the Array.sort(Function) two-entry array case. file: [d64fb64a86] check-in: [c1024efd40] user: stephan branch: trunk, size: 310016
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: [bf9759b72a] check-in: [aacb2e833c] user: stephan branch: new-string-length, size: 310850
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: [6f4a03c8d5] check-in: [b0dee8928f] user: stephan branch: new-string-length, size: 310492
13:05
A big around of minor tinkering and cleanups. file: [c8a31b4e06] check-in: [41d834342c] user: stephan branch: trunk, size: 309740
2014-04-19
12:39
added long-missing cwal_strlen(). file: [9b9546bd2e] check-in: [0222186bbf] user: stephan branch: trunk, size: 310460
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: [c707fa49e1] check-in: [65cbcfd22a] user: stephan branch: trunk, size: 310364
16:56
Another round of minor cleanups and doc improvements. file: [69060c79b2] check-in: [66b65cb7ff] user: stephan branch: trunk, size: 308381
2014-04-13
15:31
minor internal cleanups. file: [76022b9234] check-in: [54972639a8] user: stephan branch: trunk, size: 306067
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: [10fc08415d] check-in: [4f0da73e06] user: stephan branch: trunk, size: 305453
2014-04-04
10:34
Fixed signed/unsigned comparison warnings, which apparently do not show up without -Wsign-compare. file: [f581caf450] check-in: [c256618440] user: stephan branch: trunk, size: 304309
2014-03-07
18:56
Changed hashes again. file: [aa4d44568f] check-in: [e421f08ab1] user: stephan branch: trunk, size: 304294
18:13
Changed hash routine used for string interning. file: [77942908dd] check-in: [0801afff42] user: stephan branch: trunk, size: 304149
16:59
Removed some dead code. Added some more. file: [eee181adf4] check-in: [44bd21d624] user: stephan branch: trunk, size: 304149
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: [803e881182] check-in: [7588890cb3] user: stephan branch: trunk, size: 303907
2014-03-04
13:51
Added cwal_array_index_of() and Array.indexOf(). file: [e7c8482027] check-in: [54039517f2] user: stephan branch: trunk, size: 302967
2014-03-02
10:16
minor internal cleanups. file: [c406a1b616] check-in: [8d9f762d8f] user: stephan branch: trunk, size: 302459
2014-02-28
20:41
minor optimizations and tweaks. print() and api.io.output() now outputs Buffers as their content instead of a type@ptr string. file: [6d84083b81] check-in: [9cc51aba6e] user: stephan branch: trunk, size: 302455
2014-02-27
21:22
fixed an unused var for non-tracing builds. file: [2c1841ac7e] check-in: [5dfd7a164d] user: stephan branch: trunk, size: 302416
20:40
minor internal cleanups and one optimization which cut 5.thish's mallocs down by almost two order of magnitude :-D. Happy accident, actually, but the reason for it is clear - mallocs are down notably across the board for all test scripts. file: [a69000a4d3] check-in: [6321c72aba] user: stephan branch: trunk, size: 302305
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: [5e7d0d356e] check-in: [4ea181bb5d] user: stephan branch: trunk, size: 302257
2014-02-26
23:07
fixed a slightly wrong assertion. file: [7f9f30f8e8] check-in: [db8d1e8273] user: stephan branch: trunk, size: 301486
22:45
moved th1ish_inject_callback_argv() into public th1ish API (will need it elsewhere), some const correctness fixes in the core API. file: [8b39fd2d1e] check-in: [f71379525b] user: stephan branch: trunk, size: 301465
2014-02-25
18:10
Fixed a problem in cwal_array_take() which caused it to not take built-in values. Doc update. file: [a0f0c3f794] check-in: [c59879843c] user: stephan branch: trunk, size: 301451
15:58
Added cwal_props_sort() and Object.sortProperties() binding. file: [35731ca641] check-in: [bc29f58ba4] user: stephan branch: trunk, size: 301119
2014-02-24
22:20
fixed an off-by-one in the cwal_array_copy_range() fix. file: [d428c81415] check-in: [41b5535a45] user: stephan branch: trunk, size: 299553
20:59
Fixed cwal_array_copy_range() (and thus Array.slice()) to work as advertized. Fixed a wrong assumption (assertion) in Array.shift() binding. file: [051e95dae0] check-in: [02490653cf] user: stephan branch: trunk, size: 299556
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: [18ce6225e6] check-in: [d1ed6fc7da] user: stephan branch: trunk, size: 299447
2014-02-19
18:31
Removed an extraneous rescoping of a re-used interened strings. Added yet more comments to the interned strings notes. file: [1653582f70] check-in: [a98e648aaf] user: stephan branch: trunk, size: 298591
2014-02-15
18:37
cwal_new_zstring() now no longer clones empty strings. file: [b30716df72] check-in: [2a469fd15d] user: stephan branch: trunk, size: 298135
2013-09-09
17:12
minor doc update file: [29d0c0c18c] check-in: [db4ff0d9fb] user: stephan branch: trunk, size: 297952
2013-09-03
09:08
cwal_value_compare() for two buffers now uses memcmp() semantics. file: [dd11fe4cb7] check-in: [825c349517] user: stephan branch: trunk, size: 298182
2013-08-07
22:20
another round of warnings which refuse to show up in this tree. file: [44a4eeb7ba] check-in: [1f300807c9] user: stephan branch: trunk, size: 297346
22:14
Fixed compile warnings which for some reason do not show up when i compile in this tree, but do in another. Weird. file: [7e60a7e2b3] check-in: [591d051369] user: stephan branch: trunk, size: 297339
2013-07-27
15:06
cwal_value_clone2() now deeply clones Buffers. file: [b80e86a6ec] check-in: [e201868761] user: stephan branch: trunk, size: 297328
2013-07-22
21:15
fix an endless loop case in cwal_value_derives_from(). file: [1174fd7f75] check-in: [d9008c02a7] user: stephan branch: trunk, size: 296953
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: [6cd1479eb6] check-in: [77d1757a8b] user: stephan branch: trunk, size: 296782
2013-07-20
14:36
Optimized string recycling to re-use strings based on a first-close-fit algorithm (was exact-fit). This cuts mallocs in the th1ish test scripts anywhere from a few percept, up to 36%. file: [5b6d890ef3] check-in: [9ee156625d] user: stephan branch: trunk, size: 294345
12:42
Minor refactoring of cwal_value_prototype_get() and friends. file: [9efa1ce3ae] check-in: [8bf2f71a4e] user: stephan branch: trunk, size: 291992
11:04
cwal_value_get_cstr() now also treats buffers as strings. file: [2784b63e3d] check-in: [89039d20a7] user: stephan branch: trunk, size: 291272
2013-07-19
11:41
Added cwal_engine_type_name_proxy() and friends and tweaked th1ish to use it. file: [2615c349eb] check-in: [aa092439d4] user: stephan branch: trunk, size: 290956
11:09
More work on buffer formatting. cwal_prop_xxx() and friends now have a const-correct container parameter. file: [f486c1a1c5] check-in: [9557396db3] user: stephan branch: trunk, size: 290308
2013-07-14
01:29
Ported in some utility code from cson (namely cwal_prop_get_sub() and friends). file: [7fbb5b15f0] check-in: [ee67dca8e2] user: stephan branch: trunk, size: 290191
2013-07-12
18:42
Ported in basic JSON parsing functionality from libcson. Added th1ish api.json.parse(). file: [db41caa530] check-in: [5b1b80dda0] user: stephan branch: trunk, size: 287294
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: [8b94e389a8] check-in: [491ad36c59] user: stephan branch: trunk, size: 286895
2013-07-07
16:22
Changed signature of cwal_buffer_fill(). file: [a43db64a24] check-in: [6bd4212d3f] user: stephan branch: trunk, size: 285550
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: [dbfb68b9d4] check-in: [e0e531af6d] user: stephan branch: trunk, size: 285541
18:50
Fixed a potential orphaning corner case in cwal_array_shift(). file: [492a0a81d1] check-in: [34cd72d7e5] user: stephan branch: trunk, size: 283213
17:43
Truly pedantic cleanup. file: [f031657138] check-in: [191b50dc48] user: stephan branch: trunk, size: 282695
16:29
Added cwal_new_number(). file: [0bd40b3447] check-in: [270172fac8] user: stephan branch: trunk, size: 282641
2013-07-04
18:30
Experimenting with accessor interceptors, but this is not quite the way there. file: [b01641a96c] check-in: [5299a543a6] user: stephan branch: accessor-interceptors, size: 284323
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: [af063a804f] check-in: [cdec608b94] user: stephan branch: trunk, size: 282393
2013-07-02
17:06
doc/assertion additions. file: [a8af4350f9] check-in: [6963074e47] user: stephan branch: trunk, size: 280679
16:38
Implemented recycling of cwal_weak_ref. file: [0d6fef6a75] check-in: [51dff05fca] user: stephan branch: trunk, size: 279976
15:14
Tweaking the weak ref support. file: [7599b8c18b] check-in: [6c85df8cb2] user: stephan branch: trunk, size: 278478
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: [8e26f22498] check-in: [fab8ad55e3] user: stephan branch: trunk, size: 276070
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: [a909e307ad] check-in: [8c04f5388e] user: stephan branch: trunk, size: 270043
17:31
Added (several prototypes).compare(). Added shell_extend.c as an easy way for clients to install their own script-side functionality into the default shell app. file: [163aca8282] check-in: [91250213b2] user: stephan branch: trunk, size: 268882
16:24
Expanded the function/args-state APIs a bit. Used them to implement Function.sourceInfo() type-safely. file: [7e70bc005c] check-in: [5f7fe4b6bc] user: stephan branch: trunk, size: 268833
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: [524e1a8d18] check-in: [cb4072639e] user: stephan branch: trunk, size: 268391
2013-06-30
16:05
Minor code reorg. file: [2448913634] check-in: [aa478564b2] user: stephan branch: trunk, size: 267917
15:45
Scope property objects now get their prototype removed so that they do not resolve members of the prototype via variable resolution. file: [2c4c22e188] check-in: [56974219ac] user: stephan branch: trunk, size: 267876
12:24
Changed return type of cwal_scope_properties(). file: [e3add04dcf] check-in: [fcdf9c23b7] user: stephan branch: trunk, size: 267187
2013-06-29
14:19
Added cwal_outputer::flush() and cwal_output_flush(). file: [4f68b89dc9] check-in: [ece45b44c4] user: stephan branch: trunk, size: 267218
11:34
Added cwal_parse_argv_flags(). file: [331b45b592] check-in: [882dfc6d7c] user: stephan branch: trunk, size: 266789
2013-06-28
23:48
moved an assert. file: [c6374be9f1] check-in: [66c27e2e54] user: stephan branch: trunk, size: 263479
2013-06-27
17:56
Added cwal_prototype_base_set/get() and started rewiring th1ish to use it. file: [c3cd4972aa] check-in: [1771a58344] user: stephan branch: trunk, size: 263479
2013-06-24
10:35
Moved the generated cwal_list code into the main API so i can re-use it in th1ish. file: [8fe5988919] check-in: [fb3224f152] user: stephan branch: trunk, size: 260980
2013-06-22
23:16
Added cwal_native_clear(). file: [2e5f551fdc] check-in: [8333211602] user: stephan branch: trunk, size: 258552
2013-06-21
20:31
fixed c99ism. file: [1cdb40ae17] check-in: [7c4fbde061] user: stephan branch: trunk, size: 258166
18:51
insignificant internal cleanups. file: [8873e01061] check-in: [66a69588a5] user: stephan branch: trunk, size: 258155
2013-06-20
16:21
More of the container functions now fail with CWAL_RC_ACCESS when called during traversal of the container. file: [4383a1fad4] check-in: [801932bb85] user: stephan branch: trunk, size: 257979
15:21
const-declared scope vars now ignore an assignment-to-self to simplify some client-side code. file: [ea327d9d7a] check-in: [f4f9b57191] user: stephan branch: trunk, size: 257630
2013-06-19
16:38
Fixed an argument-handling-related memory corruption case caused by a well-intentioned optimization (which was just removed). This also fixes the bug that returning argv from a function lead to unexpected results (empty array). file: [2717721d93] check-in: [90aad2442f] user: stephan branch: trunk, size: 257062
2013-06-18
15:38
cwal_value_prototype_set() no longer allows (what it can recognize as) cycles between the child and its prototype. file: [e176ebf1a5] check-in: [69ab011467] user: stephan branch: trunk, size: 256933
11:43
More re-working of cwal_value_clone() and friends. file: [1d89ccbeb3] check-in: [9fd33ca240] user: stephan branch: trunk, size: 256677
2013-06-17
20:27
Minor internal defensive hack. file: [5ef7f5deda] check-in: [29aac3c628] user: stephan branch: trunk, size: 256422
16:42
Started work on adding an option to disable doubles in cwal. It basically just changes cwal_double_t to be cwal_int_t. file: [97fa6e14df] check-in: [264317163d] user: stephan branch: trunk, size: 256387
2013-06-16
12:53
Added cwal_hash_clear(). file: [a0b90b1ef6] check-in: [b1cc0ee1ce] user: stephan branch: trunk, size: 255632
11:57
Fixed: buffers now also evaluate to true in a boolean context. file: [22f6beb886] check-in: [00d2d3851b] user: stephan branch: trunk, size: 255142
11:39
Fixed: the newer container now evaluate to boolean true. file: [1bd80876c0] check-in: [278f121614] user: stephan branch: trunk, size: 255067
06:18
Added cwal_array_copy_range() (a.k.a. slice). file: [1fb046c06f] check-in: [071c1cef8d] user: stephan branch: trunk, size: 255257
04:15
Added cwal_array_shift(). file: [91ffa7176b] check-in: [8e4d80789d] user: stephan branch: trunk, size: 254359
02:32
Fixed an inconsistency of cwal_scope_properties() vs cwal_scope_init_props(). Minor doc tweaks. file: [d6a4ae3ba1] check-in: [63caeada6c] user: stephan branch: trunk, size: 252684
2013-06-15
15:25
minor cleanups file: [ae69872c9d] check-in: [6465552570] user: stephan branch: scope-hash, size: 255327
15:18
Switched cwal_scope::props from object to hash. Not sure i am willing to pay the memory cost, though. file: [88818a0d97] check-in: [931fbcca46] user: stephan branch: scope-hash, size: 255172
12:41
cwal_hash_insert/remove() now fail with CWAL_RC_ACCESS if called while iterating over the table. file: [8a07d2b48c] check-in: [9e0415bcd6] user: stephan branch: trunk, size: 253131
11:58
Fixed bugs in cwal_hash search which caused it to not communicate left-hand chain member, which lead to broken linking on hash collisions. file: [94b840447f] check-in: [7374119631] user: stephan branch: trunk, size: 252709
2013-06-14
17:21
added cwal_value_may_iterate(). file: [792dd4c884] check-in: [292db68d9a] user: stephan branch: trunk, size: 253041
14:27
And more tinkering with hashes. file: [0627687e82] check-in: [f7e6535b53] user: stephan branch: trunk, size: 252756
13:35
More work onthe hashtable. file: [d65ede6cf1] check-in: [77a8222358] user: stephan branch: trunk, size: 252617
12:09
More tinkering with the hash table. file: [a3889c1491] check-in: [fc25158582] user: stephan branch: trunk, size: 248687
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: [2a3ddfe6d7] check-in: [670a0ad9c5] user: stephan branch: trunk, size: 240828
2013-06-12
16:04
Added cwal_array_sort_stateful() and friends. file: [66af6ebdb8] check-in: [3927173367] user: stephan branch: trunk, size: 241242
2013-06-11
12:38
Sometimes i hate printf. 32/64-bit compatibility fix. file: [60cb0d0e31] check-in: [7d9b4f2ee4] user: stephan branch: trunk, size: 237389
2013-06-10
21:24
Added integer -1 and double -1.0 to the list of built-in constant values because they appear so often in script code. file: [45e7d2e146] check-in: [54989ac4fa] user: stephan branch: trunk, size: 237396
20:46
Removed some old comments and a stray debug message. Tweaked size of string interning table size again. Cleaned up the main test app a bit. file: [eb6a4baf0b] check-in: [0c0a865f24] user: stephan branch: trunk, size: 237004
20:03
Fixed inconsistent orderings in cross-type value comparisons. Fixed a huge bug in the new cwal_ptr_table linked list which caused several megabytes of tables to be allocated (one per string). file: [85e51f5047] check-in: [f4773da793] user: stephan branch: trunk, size: 237265
17:25
Fixed a bug in the ptr_table remove-entry op which traversed tables unnecessarily. Renamed cwal_interned_search_v() to cwal_interned_search_val() file: [8ec4e2df6d] check-in: [11ea684831] user: stephan branch: trunk, size: 236296
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: [46bebcdf9a] check-in: [823220ffed] user: stephan branch: trunk, size: 236326
15:24
Added cwal_array_reverse(). cwal_array_sort() now fails if called while the array is being visited/traversed. Doc additions. file: [03190aa81f] check-in: [8079c5b03d] user: stephan branch: trunk, size: 238197
2013-06-09
19:48
th1ish: minor tinkering. Removed the limit that 'importSymbols' only works for the calling scope (too onerous given th1ish's tendency to create scopes whenever it can get away with it, and a function call's scope starts while the parameters are being processed, as a memory-saving measure). file: [66f6d10df5] check-in: [32806d9602] user: stephan branch: trunk, size: 237778
17:45
Fixed: prototype values are now re-scoped when child properties are re-scoped, and are unref'd using cwal_unref_from() instead of cwal_value_unref() (so they get re-probated if needed). Fixes a problem in th1ish with returning a new prototype value from a sub-scope. file: [b5b327911f] check-in: [3f002b6bc3] user: stephan branch: trunk, size: 237581
13:00
Added cwal_engine_recycle_max_get(). file: [f7093e5d1f] check-in: [1c28677e5b] user: stephan branch: trunk, size: 237140
11:24
Fixed (it seems) cwal_value_clone(). file: [f63ca5a94c] check-in: [c430cfad6c] user: stephan branch: trunk, size: 236779
08:54
th1ish: minor overhauling of the internal exception-throwing bits. file: [652a663041] check-in: [a7bf69df61] user: stephan branch: trunk, size: 234977
03:46
Documented an unsightly kludge. file: [b78836c57c] check-in: [47f9c9b09e] user: stephan branch: trunk, size: 234702
2013-06-08
04:31
Changed an assertion to a proper return value in cwal_prop_set(), and removed its requirement that its key be non-empty (for consistency). file: [b9896b611b] check-in: [9083d938ec] user: stephan branch: pcre, size: 233994
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: [74f7323454] check-in: [8f9e77f3ea] user: stephan branch: pcre, size: 233965
2013-06-06
19:36
Some rough (completely garbage) cycle-counting code i may want to revisit someday. file: [68e323765f] check-in: [429a1a3dad] user: stephan branch: cycle-counting-revisited, size: 233148
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: [ff3b06491f] check-in: [957ae67c59] user: stephan branch: trunk, size: 229969
2013-06-04
19:55
cwal_prototype_set() now ensures that the prototype's scope is at least as old as the child's. file: [84a2cb4d70] check-in: [6cc44d3e3d] user: stephan branch: th1ish_script, size: 229988
18:22
Added a missing return value check in cwal_array_length_set(). file: [419e1b631e] check-in: [b07032081c] user: stephan branch: th1ish_script, size: 229933
17:54
Removed some debuggering output. file: [5a45d3144c] check-in: [8711c79b82] user: stephan branch: th1ish_script, size: 229898
16:48
moved a #define. file: [e9b95c83ae] check-in: [ef558ed5c8] user: stephan branch: th1ish_script, size: 229890
15:24
Fixed a property lookup bug caused by recent sorting changes. file: [3728170eed] check-in: [ff0e48671c] user: stephan branch: th1ish_script, size: 229858
2013-06-03
22:58
Minor internal tinkering of the buffer size in cwal_buffer_fill_from(). file: [747367960c] check-in: [14158c119e] user: stephan branch: th1ish_script, size: 229823
2013-06-02
17:58
Added cwal_array_sort(). file: [79e6acc98c] check-in: [d114a07e93] user: stephan branch: trunk, size: 229523
14:23
Fixed switch-fall-through bug in the new string-to-number code. file: [b7ec830309] check-in: [f4a355ef3a] user: stephan branch: trunk, size: 228800
13:45
added cwal_cstr_to_int/double(). Documented CWAL_INT_T_MIN/MAX. file: [439d7010d3] check-in: [4b8d1e0a45] user: stephan branch: trunk, size: 228772
11:32
Added cwal_props_copy() and more docs. file: [8da9cf065f] check-in: [8d5d4a5040] user: stephan branch: trunk, size: 226088
2013-06-01
15:43
Fixed a potential buffer overflow in the previous cwal_int_to_cstr() fix. file: [a7e7ca187e] check-in: [dfac0b681b] user: stephan branch: trunk, size: 225520
15:13
Fixed a bug in cwal_int_to_cstr() - corner case involving INT_MIN. Added CWAL_INT_T_MIN/MAX macros. file: [069650a66b] check-in: [29e01f5d63] user: stephan branch: trunk, size: 225476
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: [5b9b7dd8fe] check-in: [76df00ac93] user: stephan branch: trunk, size: 224928
2013-05-31
23:56
removed an old ugly hack. file: [62929d1798] check-in: [15506c1773] user: stephan branch: trunk, size: 223350
21:50
Extended cwal_scope_push() to accept an externally-allocated scope instance (malloc optimization). file: [f65918c43c] check-in: [9c1398a9c1] user: stephan branch: trunk, size: 223344
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: [86828d9f01] check-in: [63ade6e28a] user: stephan branch: trunk, size: 223213
17:09
Changes signatures of cwal_new_function() and friends. Started adding toString support to th1ish.. file: [2cdaa3fa82] check-in: [0ac710027a] user: stephan branch: trunk, size: 222356
15:57
Simplified the func_call() signatures a bit. file: [1e54339c72] check-in: [dc614cb0ac] user: stephan branch: trunk, size: 222268
14:56
Fixed swapped undef/null value definitions (broken in last round of refctoring). file: [6ab66e7414] check-in: [8f0b505002] user: stephan branch: trunk, size: 222123
14:53
factored out cwal_value::value ptr, saving sizeof(void ptr) bytes per value instance. This has broken something in th1ish, though. file: [09105e3d13] check-in: [e7cf5db3b5] user: stephan branch: no-value, size: 222123
12:32
tinkinger, trying to find the cause of the errant recycled exception... file: [987a50663c] check-in: [ffecd3a6f0] user: stephan branch: trunk, size: 223752
2013-05-30
12:38
Added an assertion to help catch a bug triggered by certain piece of th1ish code. file: [4962e66e5e] check-in: [39ab96b342] user: stephan branch: trunk, size: 223679
2013-05-29
21:57
Minor refactoring for... Added an amalgamation build to the makefile. file: [58b60f86ef] check-in: [f0740b8f7d] user: stephan branch: trunk, size: 223386
20:54
Fixed cwal_value_prototype_set() to return CWAL_RC_MISUSE if the given prototype is-not-a obase. file: [fc22d9c4d7] check-in: [b4b8e2115d] user: stephan branch: trunk, size: 223471
20:06
Fixed a serious referencing error in cwal_prototype_set(). Make cwal_compare_cstr() NULL-safe. file: [96b1cba1db] check-in: [1049202a82] user: stephan branch: trunk, size: 223448
17:57
started adding facilities to allow cwal_native types to rescope non-property children. Simplified cwal_value_rescope() signature. file: [2aa3a4108a] check-in: [c2ab18c056] user: stephan branch: trunk, size: 223377
16:29
potential fix for a slight potential va_start/va_end misuse. file: [6909a02da1] check-in: [559635875a] user: stephan branch: trunk, size: 222674
14:46
more x-string-related fixes and some prep for z-strings (like x-strings, but the cwal_string owns and deallocates the (char*)). file: [f1710e2a14] check-in: [0edafb49ef] user: stephan branch: trunk, size: 222668
13:23
fixes related to x-string handling. file: [b0bd3dcb10] check-in: [93debd3607] user: stephan branch: trunk, size: 221484
2013-05-28
19:10
comment/doc changes only. file: [113e142f96] check-in: [8d31254298] user: stephan branch: trunk, size: 219984
19:04
Added initial support for x-strings (external strings, not allocated by cwal). file: [97fa374c93] check-in: [76b841bfbd] user: stephan branch: trunk, size: 219950
2013-05-25
17:16
minor pedantic corner-case fix for a not-really-a-problem. file: [d7dd88f5b4] check-in: [d0d89d47b2] user: stephan branch: trunk, size: 216971
14:36
added some (unused) code which keeps insertion order (instead of reverse) for object properties. file: [1f682671dd] check-in: [3c4c0c4ddc] user: stephan branch: trunk, size: 216966
12:04
Fixed cwal_array_set() to accept NULL values. file: [54acfb21ea] check-in: [1b3c313c6b] user: stephan branch: trunk, size: 216579
02:46
added a TODO note. file: [1e29f3c1e4] check-in: [a5107abac3] user: stephan branch: trunk, size: 216524
01:00
changed cwal_kvp_key() to return a cwal_value instead of cwal_string (old behaviour). file: [66d31bb365] check-in: [7f67301752] user: stephan branch: trunk, size: 216413
2013-05-24
21:15
experimenting with object/array access. file: [fd3f9804fa] check-in: [ad33b01201] user: stephan branch: trunk, size: 216437
18:12
cwal_new_string() and friends now no longer ref() a string which came from the internalizer. It _seems_ we don't really need to. file: [275490bcd2] check-in: [f67d411781] user: stephan branch: trunk, size: 215634
15:09
#if'd out a var which is only used in big-void-ptr mode. file: [932482cd56] check-in: [074279f425] user: stephan branch: trunk, size: 214436
15:02
pulled in [refcount0] branch, which changes how refcounting working (starts from 0 instead of 1, with 0 having a special "probationary" status). file: [b9432a6579] check-in: [f518911f69] user: stephan branch: trunk, size: 214408
14:59
internal doc changes - nothing functional. file: [e698cede28] check-in: [a457e7fb69] user: stephan branch: refcount0, size: 214407
14:56
Disabled the special value 1 when the big-void-ptr optimization is on because i cannot seem to get dereferencing of the int pointer working for that case. file: [1e566ff58c] check-in: [6987fd404a] user: stephan branch: refcount0, size: 214336
11:58
Weird - i made these changes in [bae0623b6c] and now they are gone. (Edit: DUH - wrong branch, Einstein!) file: [dcfb4860c7] check-in: [bd0c6073a0] user: stephan branch: trunk, size: 208122
2013-05-23
13:03
minor efficiency hack in cwal_new_integer(). file: [f1021ecef4] check-in: [d999a437fe] user: stephan branch: refcount0, size: 213825
12:58
Added integer 1 and double 1.0 to the list of built-in values. file: [ea1591945e] check-in: [925e2bc847] user: stephan branch: refcount0, size: 213779
12:22
started adding searchPrototype option to functions which can use it. file: [a5e77eecef] check-in: [6e23ecc726] user: stephan branch: refcount0, size: 213161
2013-05-22
19:28
Fixed an old null pointer deref bug in the cwal_value compare impl for INT/DBL when the LHS was the special value 0 (or 0.0). file: [cd2a077e6d] check-in: [bae0623b6c] user: stephan branch: refcount0, size: 212746
18:09
removed some debug code, doc updates. file: [bdb4ea0e48] check-in: [f036d8a611] user: stephan branch: refcount0, size: 212151
17:47
Tweaking of interned string refcount mechanics, but just cannot seem to get what i need here. Might need to special-case string destruction for this. file: [c3e0eaecec] check-in: [2cbe4802e5] user: stephan branch: refcount0, size: 211788
17:11
Added cwal_scope::mine::r0 list to keep extra track refcount==0 values. sweep-scope is now much faster and safer. file: [cbf72050c4] check-in: [ef4c8f9e67] user: stephan branch: refcount0, size: 210735
2013-05-21
22:53
minor tinkering before bed. Seems to work so far. file: [d03de23e08] check-in: [6be90896fc] user: stephan branch: refcount0, size: 210022
22:30
changed value refcount to start at 0, meaning no my ref held by the scope. This _might_ give me semantics off of which i can vastly improve the memory usage in th1ish, by proving a "purgatory" state where a value has not yet gotten an explicit reference. Previously we had start refcount==1, with the 1 being justified as the holding scope, but that causes us grief in script implementations (orphaned values held too long) and an adds ambiguity between "purgatory" and "refcount was _reduced_ to 1". file: [4ea2ceb93e] check-in: [7ca566b740] user: stephan branch: refcount0, size: 210003
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: [6166a61594] check-in: [88ba6547de] user: stephan branch: trunk, size: 208050
04:14
debug message changes only. file: [382fa8f3f4] check-in: [97e65d9d22] user: stephan branch: trunk, size: 206253
04:06
Added basic string value recycling. file: [3ae68ac328] check-in: [32a78562b9] user: stephan branch: trunk, size: 206229
00:15
Added the long-missing cwal_array_length_set(). file: [4e1b74e5c6] check-in: [cde01729a4] user: stephan branch: trunk, size: 202631
2013-05-19
21:21
Missing file from previous commit. file: [b4677a1fcb] check-in: [47140c2f78] user: stephan branch: trunk, size: 202094
19:33
Some disabled code saved for future consideration. file: [9f97ecb1c5] check-in: [03a2e937be] user: stephan branch: trunk, size: 201702
18:22
minor internal tweaking. file: [1811f4e6b0] check-in: [cb592daeae] user: stephan branch: trunk, size: 201283
15:13
Changed how cwal_function_call() manages the lifetime of the result value. Removed cwal_result_xxx() family of APIs. file: [4cad3185a8] check-in: [d7b822f53b] user: stephan branch: trunk, size: 201161
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: [74429ffaf1] check-in: [0e89645697] user: stephan branch: trunk, size: 203956
2013-05-18
12:10
Added miss types to cwal_value_type_id_name(). file: [8fe84623ca] check-in: [f8f041d801] user: stephan branch: trunk, size: 200058
11:29
added cwal_value_type_id_name() plus some notes about value interning. file: [6f72485be4] check-in: [325709de43] user: stephan branch: trunk, size: 199873
04:03
Simplified cwal_unref_string() signature. file: [87e95dc7b7] check-in: [8d3223b9b2] user: stephan branch: trunk, size: 198762
2013-05-17
17:44
started, the commented out, beginnings of cwal_output_buffer(). file: [279edad41f] check-in: [82c4d5df43] user: stephan branch: trunk, size: 198702
2013-05-15
19:49
more tinkering with th1ish. Can now evaluate basic math. file: [988d46bd81] check-in: [2c33797d53] user: stephan branch: trunk, size: 198153
2013-05-11
03:57
too tired to diff. file: [791db89377] check-in: [fdaaf81724] user: stephan branch: trunk, size: 198441
02:16
fixed var-set(NULL) return value. Changed semantics of sweep() return value. Other minor tweaking. file: [b218e19a85] check-in: [1eab8d6ab8] user: stephan branch: trunk, size: 198351
2013-05-10
21:18
Fixed a buffer appending problem. Added CWAL_RC_ASSERT. file: [3f3d55aa9f] check-in: [6782d563eb] user: stephan branch: trunk, size: 195729
20:02
Added string concat ops. file: [6994c2ac80] check-in: [ae73cb0299] user: stephan branch: trunk, size: 195674
17:15
more code consolidation. Changed some internal hash values. file: [e9dfee4de4] check-in: [a8307e7444] user: stephan branch: trunk, size: 194028
16:31
Consolidated some code. Added "catch" support to s1. file: [cf62a124a9] check-in: [7ee91d6574] user: stephan branch: trunk, size: 195737
15:01
fixes in the exception bubbling. file: [56ac859c63] check-in: [a324911a06] user: stephan branch: trunk, size: 193570
10:52
Added cwal_var_get_v(). Updated s1 to compile against recent changes. file: [f7a1090df2] check-in: [bcdc8f9f8f] user: stephan branch: trunk, size: 193215
09:48
Simplified more of the public API by removing more extraneous cwal_engine parameters. file: [6d26c13d6c] check-in: [17395f36ae] user: stephan branch: trunk, size: 191973
09:02
more tinkering. Added a missing s1 test script. file: [019a8f51f6] check-in: [3386bd8e93] user: stephan branch: trunk, size: 190933
2013-05-09
14:47
more minor tinkering. file: [e21355af13] check-in: [6522247bd2] user: stephan branch: basic-prototypes, size: 191472
10:17
minor internal tweaking and refactoring. file: [11aaa6927a] check-in: [4ba195c6b8] user: stephan branch: basic-prototypes, size: 190151
09:39
more object parameter simplifications file: [c528f64153] check-in: [57af8b5b6a] user: stephan branch: basic-prototypes, size: 189703
03:30
more removal of extraneous cwal_engine parameters. file: [0bafe777a5] check-in: [977eb9cd6e] user: stephan branch: basic-prototypes, size: 189011
03:08
Fixed the unset leak. Was an old, old bug which i am surprised i have no triggered yet. file: [f0718cfda6] check-in: [6fc95ba5ab] user: stephan branch: basic-prototypes, size: 189084
02:58
more work on values-as-keys. Found unset-prop cases for non-strings which cause leaks, though. file: [4ca333b5ce] check-in: [51fddf67c7] user: stephan branch: basic-prototypes, size: 189085
01:29
obase cleanup now unrefs the object's prototype. file: [21abf7b64b] check-in: [4d13c51957] user: stephan branch: basic-prototypes, size: 187522
01:14
more work on getting non-string key infrastructure in place. file: [52f5fae1b5] check-in: [630cba347c] user: stephan branch: basic-prototypes, size: 187199
00:02
Started adding experimental "prototypes" support (similar to JavaScript). More work on making key/value pairs able to use non-string keys. file: [7de39c7234] check-in: [743b712cda] user: stephan branch: basic-prototypes, size: 185493
2012-08-20
22:28
Added cwal_value_clear_mutable_state(). file: [dbb328644c] check-in: [01481544c5] user: stephan branch: trunk, size: 182207
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: [4e6955a791] check-in: [24a0e9a8f2] user: stephan branch: trunk, size: 181031
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: [1a36426ebc] check-in: [d06acf53ad] user: stephan branch: trunk, size: 175151
17:16
moved the main rescope-children operation into cwal_value_vtab to make it easier to re-use that code for new classes without touching the core for it. file: [3071ad0968] check-in: [47e431d767] user: stephan branch: trunk, size: 174123
2012-08-19
16:14
A number of fixes to the interpreter and incidental tweaks to the core to support them. s1 scope unit tests fail but scoping from a script file works fine, so i will chase that later. file: [49b44dad10] check-in: [f2a666d73e] user: stephan branch: trunk, size: 173999
14:14
Function values now compare equal if they have the same callback and state data pointers. file: [c7e2b65245] check-in: [cef477d430] user: stephan branch: trunk, size: 173949
05:11
Changed cwal_exception_setXXX() to treat a NULL format string as an empty one. file: [7bc5109e19] check-in: [ba78c2784e] user: stephan branch: trunk, size: 173178
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: [f796f241a7] check-in: [558d586769] user: stephan branch: trunk, size: 173177
2012-08-18
22:46
removed a dead line. file: [cae776201f] check-in: [2f2a687550] user: stephan branch: trunk, size: 172052
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: [312acc0b2c] check-in: [e744cdc31e] user: stephan branch: trunk, size: 172129
01:20
got first scripted function call working. file: [61b9437bb2] check-in: [6eec35f8e9] user: stephan branch: trunk, size: 171718
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: [bd918596a9] check-in: [baa62c845c] user: stephan branch: trunk, size: 171685
20:45
more touch-ups and testing of the exception handling. file: [125de84335] check-in: [668442941e] user: stephan branch: trunk, size: 170676
19:36
renamed cwal_error to cwal_exception. Fixed lifetime/ownership problems in exception message handling by moving into a normal property. file: [e6c6cf31a0] check-in: [6d6374aa15] user: stephan branch: trunk, size: 169289
15:48
Internal optimization to cwal_value_is_builtin() which shaves a percent or so of the runtime from my test app. file: [a76d66ce66] check-in: [a54b88187c] user: stephan branch: trunk, size: 161089
15:27
Added missing cwal_value_get_native() impl. file: [1ac1b7c35e] check-in: [b73394c788] user: stephan branch: trunk, size: 160162
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: [8e6a217e73] check-in: [9cd5ecdaba] user: stephan branch: trunk, size: 160008
14:48
oops - fixed memleaks caused by Function/Native/Array cleanup routines which did not honor their (new) property state. file: [78844d7a1a] check-in: [6f3110ea33] user: stephan branch: trunk, size: 160345
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: [616f871090] check-in: [c111db9842] user: stephan branch: trunk, size: 160119
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: [c5ba82dde7] check-in: [07c25cf985] user: stephan branch: trunk, size: 157240
03:32
too many changes to remember. Started work on ternary if, but am having token-skipping-without-executing related problems. file: [c4d62652e0] check-in: [92c2a21a66] user: stephan branch: trunk, size: 153959
2012-08-14
21:49
more work on the kvp-related internal refactoring (to consolidate key/value pairs support for higher-level types). file: [68ddd22f56] check-in: [15a61ebbf2] user: stephan branch: trunk, size: 153906
2012-08-12
11:14
Removed braindeaded auto-set-from-parent in cwal_var_set(). file: [da2c4c3527] check-in: [37ea7e0876] user: stephan branch: trunk, size: 150902
2012-08-11
22:17
cwal_value_is_number() now also returns true for booleans. file: [26ea2e861d] check-in: [98559140e8] user: stephan branch: trunk, size: 150740
19:57
Got first assignment working in interpreter. file: [489e61bf26] check-in: [35c7283fc3] user: stephan branch: trunk, size: 150569
18:07
Added cwal_array_clear(). Tinkering with the interpreter. file: [9853b1652c] check-in: [d7a2ab0fa8] user: stephan branch: trunk, size: 150533
15:21
More work on the script interpreter. file: [785173c061] check-in: [ed917d6e49] user: stephan branch: trunk, size: 150186
13:47
Fixed a bug which causes cwal_value_undefined() to not be recognized as a builtin value. file: [ede073d2cf] check-in: [d46319a52a] user: stephan branch: trunk, size: 149888
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: [bbdcfb93b1] check-in: [e99d61e441] user: stephan branch: trunk, size: 149848
11:27
Got first prototype script token eval working. file: [298c2c9876] check-in: [c74131e774] user: stephan branch: trunk, size: 151036
09:30
removed resultScope.level adjustment from call-in-scope op. file: [f303c2a56b] check-in: [f1d704b33e] user: stephan branch: trunk, size: 149871
05:36
Minor fixes(?) to the resultScope handling. Started some refactoring to consolidate property handling of Object and friends. file: [433803b981] check-in: [a9ff58bb0e] user: stephan branch: trunk, size: 149754
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: [9c8fff7948] check-in: [027070161a] user: stephan branch: trunk, size: 148597
00:37
minor internal cleanups file: [89b1c51eab] check-in: [74e03b3df5] user: stephan branch: trunk, size: 145389
2012-08-10
21:51
Had to add a second link to cwal_value. i cannot believe it even worked this far with one link. file: [5b49db070f] check-in: [ede1cffe1b] user: stephan branch: trunk, size: 144904
17:10
oops - moved cwal_list.h to where it belongs. file: [eaa1044c06] check-in: [432f1c4b11] user: stephan branch: trunk, size: 143557
14:56
"var" API seems to work. file: [f3a5b88301] check-in: [bc65ff9434] user: stephan branch: trunk, size: 143662
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: [0b408933b5] check-in: [00060a9b01] user: stephan branch: trunk, size: 143027
17:38
Added cwal_scope_sweep(). Reworked the trace masking (b/c 31 bits really is too few). file: [a572d7675f] check-in: [40e15d31ab] user: stephan branch: trunk, size: 136778
16:05
s/api/vtab/g for cwal_engine and cwal_value. file: [172c140354] check-in: [922c26c199] user: stephan branch: trunk, size: 135079
15:37
Fixed memory corruption in the kvp recycling code. Added cwal_engine_vtab::init_engine(). file: [d17c3e1481] check-in: [28ea4d13f9] user: stephan branch: trunk, size: 135026
14:39
Added basics for the Function type. file: [b5c4dd47d2] check-in: [2506f0d91a] user: stephan branch: trunk, size: 134547
12:31
Moved cwal_obase::list into cwal_array. Fixed json code to use cwal_object::kvp. Removed the cycle-counting code, since the current API doesn't use it. (We might need it later, though.) file: [fd39af08b2] check-in: [77b2583370] user: stephan branch: obj-kvp-list, size: 129240
12:07
Ah, it was just the child xscoping :). file: [8f64d09059] check-in: [ee9a15f061] user: stephan branch: obj-kvp-list, size: 134812
11:52
initial porting of cwal_object properties to a cwal_kvp linked list. Compiles but segfaults predictibly on some test code. file: [1b9c0517a4] check-in: [7c2b40e63a] user: stephan branch: obj-kvp-list, size: 134870
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: [66730832c5] check-in: [03c22e0473] user: stephan branch: trunk, size: 136254
2012-08-06
22:05
disabled auto-interning by default, minor tinkering with the VOID_PTR_IS_BIG bits (hope it still builds on x64). file: [ff385a06e8] check-in: [b53e520cfc] user: stephan branch: trunk, size: 129155
20:57
Minor config-level tweaking. Fixed some signed/unsigned screwyiness (thank you, clang). file: [03fbc9c540] check-in: [51fc55ddf7] user: stephan branch: trunk, size: 128956
20:20
Tinkering with interned string table size, other minor cleanups. file: [7407e2f067] check-in: [8e6142c151] user: stephan branch: trunk, size: 128757
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: [4eba6f7b1c] check-in: [02af50b668] user: stephan branch: trunk, size: 127692
17:22
removed a fixme note (fixed!) file: [7917056c62] check-in: [73c853583a] user: stephan branch: trunk, size: 128611
17:02
added Value binding for cwal_buffer class. file: [246983101c] check-in: [f378d18817] user: stephan branch: trunk, size: 128679
16:22
fixed up/down-scope terminology use. file: [01edcaabbb] check-in: [782b3781ad] user: stephan branch: trunk, size: 126411
13:47
dammit, i am simply not going to be able to get that to compile in both 32- and 64-bit modes, am i? file: [66e7dcf161] check-in: [44f5d6f109] user: stephan branch: trunk, size: 126412
2012-08-05
19:27
final (i think) tinkering for the night. file: [4216d6a377] check-in: [ee81b02749] user: stephan branch: trunk, size: 126412
19:09
Tracing tweaks. Fixed a bitmasking range error in the tracing flags. file: [9218bc4f90] check-in: [8414ccbc5b] user: stephan branch: trunk, size: 126230
17:51
valgrind likes it. time to walk Baako. file: [5b187f0e49] check-in: [0def871fe5] user: stephan branch: trunk, size: 125463
15:59
minor cleanups, nothing notable. file: [e57b9e9198] check-in: [6295b36c28] user: stephan branch: trunk, size: 124176
13:21
auto-interning of strings can now be toggled on/off at runtime. file: [fab222ad43] check-in: [3244397263] user: stephan branch: trunk, size: 127394
12:45
Turned the value linked list from doubly- to singly-linked. Shaves off 4-8 bytes/value (32/64-bit). file: [0b691e08ce] check-in: [0b4ebfbc5b] user: stephan branch: trunk, size: 126550
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: [abdbb14249] check-in: [1489228c0d] user: stephan branch: trunk, size: 127022
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: [d049fb1f1f] check-in: [c29b48dd13] user: stephan branch: trunk, size: 128081
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: [a1eb6b1337] check-in: [1f8844853b] user: stephan branch: trunk, size: 127569
2012-08-04
20:57
minor tinkering before bed. nothing functional. file: [fcee0e206c] check-in: [911afc1584] user: stephan branch: trunk, size: 128373
20:21
Renamed cwal_value_pop() to cwal_value_take(). file: [05be13c31a] check-in: [3e93418fa1] user: stephan branch: trunk, size: 128383
14:18
minor tinkering. file: [1fea21820b] check-in: [1a9442de79] user: stephan branch: trunk, size: 128320
13:28
more work on the tracing API. Added an engine param to cwal_value_ref(). file: [7e6df8f6c9] check-in: [4a5609991f] user: stephan branch: trunk, size: 128248
00:23
Fixed a string-re-use bug in cwal_trace(). file: [fe6ae8bcd4] check-in: [b28f3a9106] user: stephan branch: trunk, size: 125632
2012-08-03
16:12
First draft of tracing calls. file: [3df4976231] check-in: [ea25245906] user: stephan branch: trunk, size: 125527
00:13
Started adding more tracing infrastructure to replace most of the debug output. file: [d6658a7034] check-in: [536bb58c0b] user: stephan branch: scope-parenting, size: 122326
2012-08-02
21:57
Had to add auto-down-scoping of container children when a container is moved down, to avoid an up/down cross-scope cleanup problem. Seems to work. file: [c055ed2c3f] check-in: [3b1fc938cf] user: stephan branch: scope-parenting, size: 121419
19:43
valgrind seems to like this construct. file: [b5ea205768] check-in: [f3b2b88b06] user: stephan branch: scope-parenting, size: 118770
17:43
still more refactoring and docs. file: [619da76045] check-in: [0fbe8fb142] user: stephan branch: scope-parenting, size: 118310
16:54
more refactoring and docs. file: [81d795b0cf] check-in: [1053654f66] user: stephan branch: scope-parenting, size: 116853
2012-08-01
23:28
started adding infrastructure for tracing engine activity via a callback. file: [e584ae6af4] check-in: [7334a03423] user: stephan branch: scope-parenting, size: 116125
22:08
Demonstrates a client-supplied native living amongst the cycle gang :). file: [081556f338] check-in: [60d147bb16] user: stephan branch: scope-parenting, size: 115987
21:27
This one shows a well-knotted array/object graph going down the drain (in a good way). file: [cc51a2263a] check-in: [3cbd9d5079] user: stephan branch: scope-parenting, size: 115862
17:49
array cycling appears to work after scope-wandering refactoring. file: [8bd1f29ad5] check-in: [fb7610aa39] user: stephan branch: scope-parenting, size: 114891
16:20
fixed a counting error in value-list-removal. file: [71f3d4e605] check-in: [7c58c67231] user: stephan branch: scope-parenting, size: 113048
2012-07-31
23:12
added a todo. file: [f556aea884] check-in: [2de038aa43] user: stephan branch: scope-parenting, size: 112962
22:29
time for bed before i get carried away with getting the containers in order. file: [ec60a92814] check-in: [be2c482a7f] user: stephan branch: scope-parenting, size: 112839
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: [ad80ec8c74] check-in: [11a0bb37af] user: stephan branch: scope-parenting, size: 112106
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: [1930b5fe80] check-in: [f0b3dff0a7] user: stephan branch: scope-parenting, size: 111151
18:29
Started rewriting test code in baby steps to ensure new tracking/cleanup mechanism is working as desired. Lots not working right now, but the path looks clear :-D. file: [a5392d0ab3] check-in: [7fd3dcf630] user: stephan branch: scope-parenting, size: 109979
14:39
leaking atoms in some cases, but need to move to another machine... file: [9a9c762341] check-in: [a0ae26ab7c] user: stephan branch: scope-parenting, size: 111105
03:26
still leaking atoms, but debuggering will have to wait another 13 hours or so... file: [1157cefd30] check-in: [92cd1cd63f] user: stephan branch: scope-parenting, size: 110990
02:34
ALMOST got scope-parenting-based cleanup working. Leaking primitives now but not composites, it seems. file: [c3646fa10e] check-in: [0da5da5d1a] user: stephan branch: scope-parenting, size: 109045
2012-07-30
22:51
More tinkering with the string interning (to find a decent memory balance) and started add cycle-clearing/counting, but it is not working and i am too tired to debugger it. file: [c3615beb39] check-in: [e45735c13d] user: stephan branch: trunk, size: 107016
19:32
Minor tinkering with the scope cleanup and debug output. file: [f23894ce4f] check-in: [5c4e2e8c47] user: stephan branch: trunk, size: 100364
18:24
Added cwal_dump_interned_strings_table(), revealing what _appears_ to be a bug in the string de-internalization. Todo... file: [a8ce9d66ad] check-in: [f343473f84] user: stephan branch: trunk, size: 98874
17:37
Increased default string internalization table size to approx. 2kb/table (exact value depends on sizeof(void*) and a nearby prime number). file: [002152a56b] check-in: [c7ae7457d0] user: stephan branch: trunk, size: 97170
17:13
Refactored cwal_scope::allocs into two lists, one for containers and one for atomics, to help optimize some operations. file: [e88bbe5c9c] check-in: [de3b8113d7] user: stephan branch: trunk, size: 97149
16:24
Changed return semantics of cwal_value_unref() to provide precise info about what is does/does not do. file: [dc3bf2f910] check-in: [7319c8feb0] user: stephan branch: trunk, size: 96215
2012-07-29
20:58
more internal tinkering, added cwal_engine_recycle_max(). file: [1c9bac64a3] check-in: [bd79d5e6d8] user: stephan branch: trunk, size: 96153
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: [4eb5b19e73] check-in: [32a0ade6f0] user: stephan branch: trunk, size: 94738
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: [ea0cadb4c4] check-in: [19759dcf7b] user: stephan branch: trunk, size: 89823
03:40
Added initial 'native' (a.k.a. Host Object) binding support. file: [c6e31a9b67] check-in: [c5d9755013] user: stephan branch: trunk, size: 85492
02:07
more minor refactoring. file: [2595b3e638] check-in: [c0912871aa] user: stephan branch: trunk, size: 83683
2012-07-28
23:52
Ported in most of the missing cson docs. Minor refactoring. file: [60efcb8bdf] check-in: [0e4f895e99] user: stephan branch: trunk, size: 80398
21:14
added cwal_json_output() and friends, ported from libcson. Changed the signature for cwal_output_f as part of that. file: [c89da1b103] check-in: [d16e8ab46a] user: stephan branch: trunk, size: 87153
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: [3fd473f803] check-in: [48fd00e698] user: stephan branch: trunk, size: 86918
18:49
More private/internal refactoring. Seeing a weird bug in e_such_much_recycling(), but am too tired to chase it down. file: [c94f8e075c] check-in: [fc32638cd1] user: stephan branch: trunk, size: 86849
17:19
removed cwal_engine::scopes, subsumed by the cwal_engine::current linked list we already had. file: [37c16c95f3] check-in: [0062bd8ecf] user: stephan branch: trunk, size: 87640
16:46
started refactoring into two headers (public+internal). file: [daa01f2bb7] check-in: [fc05f69b2c] user: stephan branch: trunk, size: 88771
14:12
merged in cycle-counting branch. Works at least as well as it did before and has basic support for graph destruction for "relatively little" cost. file: [2515356da5] check-in: [e58a47936d] user: stephan branch: trunk, size: 88384
13:51
Added initial value allocation recyler. Lots of other tweaks, improvements, and debug output. file: [26a86ed437] check-in: [02ab3dc56e] user: stephan branch: cycle-counting, size: 88473
04:56
too... tired... file: [9f839da2ac] check-in: [73a2e1b526] user: stephan branch: cycle-counting, size: 84234
02:21
minor tinkering. Fixed, i think, a future bug when cycle counting more than once. file: [8f0109aba0] check-in: [92dd48c7c1] user: stephan branch: cycle-counting, size: 82535
01:17
more docs and minor refactoring/cleanups. file: [5de7282e11] check-in: [31d896646e] user: stephan branch: cycle-counting, size: 79652
2012-07-27
23:35
Added boatloads of API docs. Still far from finished (many still to be copied from cson). file: [57d4e38ab6] check-in: [6c4c514f74] user: stephan branch: cycle-counting, size: 77835
20:18
this is a beautiful thing when seen through the eyes of valgrind... file: [0beff61a14] check-in: [354aa42b4e] user: stephan branch: cycle-counting, size: 74729
20:13
this one looks a bit better. Fixed a REALLY dumb flags bitset bug which caused a mis-diagnosed is-destructing check. file: [87f0ae737b] check-in: [aed1986bae] user: stephan branch: cycle-counting, size: 74729
17:42
minor cleanups before the jackhammering begins. file: [1b9cf7dd6b] check-in: [50037bf0e2] user: stephan branch: cycle-counting, size: 72445
16:54
Improved the [f9924f2539] workaround (i think). file: [a04be01d44] check-in: [5a0e3b69cf] user: stephan branch: cycle-counting, size: 72100
16:49
merged in [f9924f2539] compile fix. file: [5d024c8cec] check-in: [e29713f468] user: stephan branch: cycle-counting, size: 72001
16:49
backed up a bit to remove some dysfunctional complexity. file: [c68e76916f] check-in: [a5ba13ffc8] user: stephan branch: cycle-counting, size: 71979
13:26
Temporary(?) hack for 32/64-bit compatibility. file: [2072dc7ddd] check-in: [f9924f2539] user: stephan branch: trunk, size: 68479
02:06
Auto-cycle-count/clean is now done at scope-pop, but this is not a complete solution because values can outlive a scope. file: [df7218aeec] check-in: [303510704d] user: stephan branch: cycle-counting, size: 74136
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: [544e547565] check-in: [5b1208c9f8] user: stephan branch: cycle-counting, size: 70855
2012-07-26
22:51
Contains an intentional memleak due to incomplete refactoring, but it is time for bed and do not want to risk losing this. file: [b07a73602b] check-in: [d73fbf518a] user: stephan branch: cycle-counting, size: 70010
2012-07-25
17:33
Added engine::current scope convenience ptr. file: [ff40907dc2] check-in: [9f145a967c] user: stephan branch: trunk, size: 68457
14:53
Tinkering with value-scope parenting, but the built-in values just threw a wrench in it. file: [25c2022877] check-in: [c8298bc6d1] user: stephan branch: trunk, size: 68259
13:05
a number of API tweaks. file: [d2c4d2774a] check-in: [56ac8240e7] user: stephan branch: trunk, size: 66780
10:33
more minor refactoring. file: [5970577cf1] check-in: [7d83b4f0e9] user: stephan branch: trunk, size: 64446
10:01
more refactoring and tinkering. file: [c27d0677ad] check-in: [348267e3b3] user: stephan branch: trunk, size: 64817
08:05
ported in the object API. file: [5dc2b22456] check-in: [e77bdf86b5] user: stephan branch: trunk, size: 58105
06:37
switched to stdint fixed-size ints throughout. Added cwal_size_t and renamed a few things. file: [7e0e480a50] check-in: [bb5b0db794] user: stephan branch: trunk, size: 51045
05:39
more refactoring. file: [42407d5c7a] check-in: [89909b7eac] user: stephan branch: trunk, size: 49255
05:05
got the object skeleton in place but it is missing any useful features. file: [755c438a36] check-in: [84f2fc8b27] user: stephan branch: trunk, size: 49232
04:14
minor refactoring. file: [321ce52b3d] check-in: [1868791179] user: stephan branch: trunk, size: 47043
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: [289d6d4f5a] check-in: [91da9fef15] user: stephan branch: trunk, size: 46423
02:02
Got an array containing a self-cycle to free without upsetting valgrind. :) file: [005a3c2310] check-in: [4dcb87c117] user: stephan branch: trunk, size: 44640
01:47
ptr table is looking good. file: [b13f13170e] check-in: [d88a5fa845] user: stephan branch: trunk, size: 44691
2012-07-24
21:45
ptr table almost works right, but page->entryCount seems to be off by one sometimes? To check tomorrow... file: [f20b867f5d] check-in: [0c98670772] user: stephan branch: trunk, size: 43449
20:31
got arrays ported in. file: [a5a5217a9e] check-in: [c1e7d24d89] user: stephan branch: trunk, size: 41544
19:43
new "key table" seems to work. Now i am not sure i need it :/. file: [39af67b50f] check-in: [0c7c5ce695] user: stephan branch: trunk, size: 35514
19:19
insert/search seem to work on the ptr table. file: [48b299747a] check-in: [69c3ef00e5] user: stephan branch: trunk, size: 34242
17:03
refactored page list to use a cwal_list (simplifies the code notably). file: [b7389b7495] check-in: [fb89dc98ad] user: stephan branch: trunk, size: 32579
16:47
some more work on the weird hashtable. file: [b7398bcc28] check-in: [33c220873c] user: stephan branch: trunk, size: 32633
00:03
Started adding special-case ptr-hashtable for tracking cycles and is-var-in-this-scope checks. file: [57de6b423d] check-in: [de91c24c1c] user: stephan branch: trunk, size: 30542
2012-07-23
21:58
We can now allocate vars, but scoping is not far enough to add the allocations there. file: [60d3f2cfa2] check-in: [d0cc64e478] user: stephan branch: trunk, size: 28127
20:14
We can now free values but not allocate them. Object/Array will be missing for a while. file: [6c76bfd0e5] check-in: [13ccbfc670] user: stephan branch: trunk, size: 14136
19:49
More infrastructure... file: [40c0085bb6] check-in: [25b7b37575] user: stephan branch: trunk, size: 6034
19:26
More infrastructure added. Still a long way to go. file: [56cbf063f7] check-in: [bff484cc73] user: stephan branch: trunk, size: 5768
18:47
Added: egg file: [55b5ba2ae3] check-in: [a71b168320] user: stephan branch: trunk, size: 4757