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