Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
History for include/wh/cwal/whcl/whcl.h
2022-04-11
| ||
02:52 | Centralized setup of the whcl-centric cwal_json_output_opt settings. (Edit re-applying trunk tag here. The repo somehow got into a state with two branches at the same time and cancelling the trunk tag completely eliminated the trunk.) file: [9f73838e30] check-in: [b50f3fa675] user: stephan branch: trunk, size: 155440 | |
2022-04-10
| ||
04:44 | Expanded whcl numeric tests and fixed the not-working-as-advertized script-bound number-parsing routines. file: [43f862f214] check-in: [07e5f6c85c] user: stephan branch: trunk, size: 154909 | |
00:22 | Removed some dead code. file: [5d4b5c2435] check-in: [e76d4dbd84] user: stephan branch: trunk, size: 153708 | |
2022-04-09
| ||
05:44 | "Finished" the whcl port _back_ to "deeply-scoped." This seems to solve the explosion of cyclic values caused by aliases but potentially requires more allocs on the whole. Oh, this means that the sweep guard propbably now needs to be moved back into the scope. Hmm. This approach is much faster, in any case, because sweepup/vacuuming are more localized. file: [417e78f231] check-in: [d2b51b4325] user: stephan branch: whcl-scope-rework, size: 153709 | |
03:32 | Switched most of whcl back to a "deeply scoped" model, in order to help alleviate the cyclic zombies caused largely by the new proprefs features. Still need to move the evalHolder, dotHolder, and the like from the engine back into the scope. file: [85d28185f6] check-in: [dceee567d5] user: stephan branch: whcl-scope-rework, size: 153752 | |
2022-04-05
| ||
03:17 | The beginnings of a 'with' command for whcl, per suggestion by Larry B. It's not yet complete and has a few bugs. It's a process. file: [865c909c01] check-in: [1d8ebbf447] user: stephan branch: whcl-with, size: 152970 | |
2022-04-02
| ||
15:13 | Docs and internal cleanups. file: [70dcdc0212] check-in: [e61ebfc44e] user: stephan branch: trunk, size: 152772 | |
11:12 | whcl.load-module now treats a CWAL_RC_RETURN result intuitively/conventionally. Added a sample loadable module implemented entirely as script code, to replace require.whcl (since that one is now built in). file: [d621ea1bbc] check-in: [86651140ed] user: stephan branch: trunk, size: 152411 | |
2022-04-01
| ||
18:57 | Corrected whcl eval so that the -> flag works with a {} operand. Added line/column renumbering support to whcl_script. Reworked whcl__script_slice() to be able to handle both client-alloced and alloced-by-it destination whcl_script instances. Added __COLUMN builtin value. file: [c1b1f12814] check-in: [d15d10652f] user: stephan branch: trunk, size: 152275 | |
13:10 | Numerous cleanups in whcl's install-api bits. Made whcl.Script an installable API rather than a core class. Added -post flag to whcl new command to make the special handling of a trailing {...} argument opt-in and simplify Script constructor usage. file: [4b3f1e7875] check-in: [6c7675f79a] user: stephan branch: trunk, size: 149948 | |
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: [5dd3d54477] check-in: [5adaa164b2] user: stephan branch: trunk, size: 153618 | |
16:53 | More work on the whcl_script binding. Added -f (filename) flag to script ctor, so it can load from files. file: [2bcaed8739] check-in: [46de7557a0] user: stephan branch: trunk, size: 152623 | |
06:00 | Internal tinkering with whcl. Added whcl_get() and friends. file: [ce46a9e1a9] check-in: [291f9b2af0] user: stephan branch: trunk, size: 151198 | |
03:38 | More work in/around the whcl_script binding. Added -noscope flag to the catch command. file: [2a5cc88926] check-in: [9838b0ecdd] user: stephan branch: trunk, size: 150392 | |
2022-03-30
| ||
23:51 | More work on the whcl tmpl and Script APIs. file: [4b8666f5bd] check-in: [8f4004d40d] user: stephan branch: trunk, size: 150054 | |
20:10 | Started documenting whcl script binding of whcl_script. Added a script name accessor/mutator method. file: [3bda186889] check-in: [52be9958f1] user: stephan branch: trunk, size: 150097 | |
19:51 | Merged inadvertent fork. file: [781448651c] check-in: [aecf588b8d] user: stephan branch: trunk, size: 150095 | |
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: [b931c8aef6] check-in: [8e69c7dff8] user: stephan branch: trunk, size: 149310 | |
17:20 | Initial port of s2.tmpl to whcl. Docs are TODO. This change really points out the need to expose whcl_script to the script API, so things like tmpl-generated scripts need to be compiled only a single time. file: [20afbe1d7e] check-in: [c0c5658f44] user: stephan branch: trunk, size: 149305 | |
2022-03-28
| ||
14:08 | whcl: rename the proc -xlookup flag and its related native flags to -xsym. Added some docs for it. file: [aceb8a3bfc] check-in: [bff4bb6c65] user: stephan branch: trunk, size: 142180 | |
13:12 | Added some metrics to whcl. Moved whclsh's metrics-dumping code into whcl_dump_metric(). file: [e8d98d2709] check-in: [19f3df632b] user: stephan branch: trunk, size: 141881 | |
2022-03-24
| ||
11:54 | Moved whcl__scope_block_size from internal.h to whcl.h to fix a compilation error in whclsh in amalgamation-mode builds. file: [f0baea60f4] check-in: [9fdc6087dd] user: stephan branch: trunk, size: 141395 | |
2022-03-22
| ||
10:22 | Refactored whcl scope list so that it's not subject to realloc invalidation, simplifying some higher-level usage and validation of push/pop levels. file: [008737ff0d] check-in: [fa642d8241] user: stephan branch: trunk, size: 140917 | |
00:05 | Merged in the [whcl-single-scope] branch. This is a significant overhaul of how scoping works in whcl. file: [050814b178] check-in: [c205852940] user: stephan branch: trunk, size: 141514 | |
2022-03-21
| ||
23:50 | More docs and internal cleanups in prep for moving this branch to trunk. file: [676daa3685] check-in: [be102e8742] user: stephan branch: whcl-single-scope, size: 139509 | |
23:22 | More whcl_scope API renaming and reorganizing. file: [dffd5376c2] check-in: [b969dfc4d0] user: stephan branch: whcl-single-scope, size: 138294 | |
21:53 | Because all/most values are now global-scoped, moved the so-called dot-op holder from whcl_scope to whcl_engine, which saves tons of allocs in the current amalgamated unit tests (anywhere from 170 to 5160, depending on the recycling-related flags). file: [d539529906] check-in: [4b45e4145d] user: stephan branch: whcl-single-scope, size: 135137 | |
21:06 | Renamed whcl__scope to whcl_scope in prep for making it a first-class member of the public API. file: [8546fbdbc8] check-in: [e79422d17c] user: stephan branch: whcl-single-scope, size: 135214 | |
20:14 | Corrected some slightly confusing sweep metric output. Testing, so far, shows that recursive vacuum works in this branch, possibly because all relevant values are stored in a single scope, leaving no real room for related breakage. file: [290ce62e81] check-in: [2586dfab1b] user: stephan branch: whcl-single-scope, size: 134321 | |
16:31 | Minor doc tweaks. file: [7fa2b754d6] check-in: [dba9c1f763] user: stephan branch: whcl-single-scope, size: 134122 | |
12:03 | Cherrypicked [2b4811a743] and cleaned up/corrected the sweep/vacuum interval calculation. file: [8de1c40f38] check-in: [87b843f630] user: stephan branch: trunk, size: 129404 | |
01:07 | Moved the sweep guard and counter from whcl__scope to whcl_engine. Testing shows it vacuuming quite a lot but why it has to vacuum so much is unclear - refcounting should be taking care of most of them. Hmm. file: [6c121fd9a2] check-in: [2b4811a743] user: stephan branch: whcl-single-scope, size: 133914 | |
2022-03-20
| ||
22:05 | Moved whcl eval holder from whcl__scope to whcl_engine, saving a lot of allocs but now officially moving all whcl-managed values into the global scope. file: [84453c35f0] check-in: [d8f9cef600] user: stephan branch: whcl-single-scope, size: 132601 | |
21:16 | More work on the new scope model, but the number of abstraction leakages is starting to pile up to an uncomfortable level. file: [e7ecd5bdd1] check-in: [fd2e5aed1d] user: stephan branch: whcl-single-scope, size: 132580 | |
17:18 | More work on the single-scope experiment. Just discovered that we can no longer set call-local vars for funcs which are triggered via a native function (e.g. a regex replace callback) unless we add a way to tell the upcoming callback that its whcl__scope is already in place and should be reused, but that seems a bit hacky. Time for a break. file: [ca5f588790] check-in: [ae7eb8a01f] user: stephan branch: whcl-single-scope, size: 131814 | |
16:39 | Fixed missing releasing of the eval holder array in whcl__scope_pop(). file: [6eb2b47950] check-in: [0627ff9017] user: stephan branch: whcl-single-scope, size: 130128 | |
16:25 | A complete overhaul to get whcl running in (mostly) a single cwal_scope, using whcl__scope for variables. This has horrid performance implications (sweeping and vacuuming take ages) but hypotheticaly eliminates (almost) any possibilities of leaks which we cannot currently reach because of the fragility of recursive vacuum (the exception being those triggered by a forever-running function). It seems to essentially work but not quite properly - loops are not recycling memory like expected. There is much analysis, tweaking, and decision-making to do. file: [89b3daacc8] check-in: [7fd98f2fa0] user: stephan branch: whcl-single-scope, size: 129436 | |
2022-03-16
| ||
14:11 | whcl: more bending of code to enable configurable function-call symbol lookup boundaries. Whether this a feature or bug is not yet clear. It enables certain types of callbacks which aren't otherwise possible but it's also a bit invasive. Still might remove it. file: [65dc38da57] check-in: [2ac3f991d6] user: stephan branch: trunk, size: 128844 | |
11:43 | whcl: experimenting with an approach to telling the engine that some functions should not act as boundaries for symbol resolution lookup. It works fine with script functions but levels of indirection internally make it problematic with native functions. Still subject to much change or removal, but some significant unrelated fixes and tweaks are also in this batch, so it's not in a branch of its own. file: [c7deb06692] check-in: [4896aa02b3] user: stephan branch: trunk, size: 127518 | |
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: [c0a478619e] check-in: [df93d45e85] user: stephan branch: whcl-symbol-lookup-overhaul, size: 126919 | |
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: [b4c45a6441] check-in: [166f2fcb2d] user: stephan branch: trunk, size: 123625 | |
08:26 | Split whcl's string.glob into glob-matches and matches-glob to hopefully avoid more downstream confusion about argument order, and replaced the final argument with a -like/-ilike/-glob flag to specify the globbing style. file: [c2f0eace00] check-in: [8f3f11bd74] user: stephan branch: trunk, size: 123447 | |
2022-03-11
| ||
09:20 | New whcl compile/eval options which take over the memory of a client-provided buffer, rather than copying it. API renaming. Added init-script and history-file env var support to whclsh. file: [2675a0b5c7] check-in: [f7406030b4] user: stephan branch: trunk, size: 123008 | |
2022-03-06
| ||
16:43 | More whcl docs and work on the sqlite3 module unit tests. file: [abbf0dfc42] check-in: [89e0807cb1] user: stephan branch: trunk, size: 120703 | |
08:21 | More work on refactoring the tok2 API into a public whcl_script interface. Tons of API renaming. Got the first whcl sqlite3 module tests running. file: [78e941ace5] check-in: [03673eed9c] user: stephan branch: trunk, size: 120426 | |
05:07 | Renamed the tok2 API to whcl_script in prep for upcoming restructuring. Fixed a memory corruption bug uncovered by valgrind in which a whcl__scope pointer was moved out from under us via a realloc when the whcl set command's RHS was a sub-command and pushed the scope list beyond its current limit. file: [30a2db36f1] check-in: [b9b3f93451] user: stephan branch: trunk, size: 117055 | |
03:58 | Accommodated a recent API change. Added a whcl function needed by the pending sqlite3 binding. file: [920343d6dd] check-in: [bda484f89b] user: stephan branch: trunk, size: 118952 | |
2022-03-05
| ||
06:05 | whcl: added -this flag to the object command, which behaves like the -scope flag but also makes 'this' refer to the scope properties object. file: [176a3f60ac] check-in: [ed907a6d3d] user: stephan branch: trunk, size: 118582 | |
2022-03-04
| ||
01:11 | whcl: added __debug {...} blocks which work like eval -scope {} but discard any eval result and are only executed if the engine's debug-block feature flag is enabled. Restructured how assert/affirm tracing works to make use of the new whcl_feature_flag_set() API. file: [f4c73ae2a8] check-in: [5a8afa3a35] user: stephan branch: trunk, size: 118496 | |
2022-03-03
| ||
07:24 | whclsh: show the list of available install-api modules at startup and resolve a mis-propagating was-interrupted result code which could be triggered by tapping ctrl-c while readline is waiting on input. file: [04268e5cae] check-in: [95893e5789] user: stephan branch: trunk, size: 117263 | |
06:25 | whcl's 'this' is once again a call-local variable to avoid certain unfortunate fiddliness in downstream code like the regex and sqlite3 modules. It retains its status as a built-in so that we can keep vars from being declared with that name, but it's now internally managed like a normal var. file: [bce564392f] check-in: [9f7dca8dcb] user: stephan branch: trunk, size: 116535 | |
05:55 | More work on the whcl regex module. Need to step back and evaluate replacing the 'this' built-in value with call-local variables, as modules like this one often want to supply their own 'this' in eval blocks. file: [8942e5a7fd] check-in: [3cc5d4d6e1] user: stephan branch: trunk, size: 117594 | |
04:23 | Added a tuple class to whcl but it's not yet documented. file: [13e4140b56] check-in: [603062e3ce] user: stephan branch: trunk, size: 116081 | |
04:03 | Got the regex-posix module ported from s2 to whcl but still have many docs and tests to port, and have to interrupt this port to add tuple-type APIs to whcl because this module exposes them to scripts. file: [35d7d319df] check-in: [a49bc893cf] user: stephan branch: trunk, size: 115952 | |
01:02 | Ported C99 math module from s2 into whcl. file: [6cd671b72c] check-in: [011f5b2df5] user: stephan branch: trunk, size: 115092 | |
00:26 | Ported s2 infrastructure needed for sample_cpp into whcl. Introduced an s2-style alternative class structure to get that working. Module build fixes. file: [ba78e324c8] check-in: [66b90b63f6] user: stephan branch: trunk, size: 114902 | |
2022-03-02
| ||
17:36 | More work on the whcl module-loading infrastructure. Plugged statically-bound external modules in via whcl.install-api. file: [1c36902ab6] check-in: [96525eefe2] user: stephan branch: trunk, size: 105455 | |
11:41 | Doc additions. file: [887ffa0a5c] check-in: [aa39dea9dd] user: stephan branch: trunk, size: 103590 | |
10:54 | Ported s2 loadable module API and sample module to whcl. file: [c09f36bb7e] check-in: [e1bf6b8270] user: stephan branch: trunk, size: 103570 | |
06:56 | whcl: changed logical && and || operators to use JS semantics rather than C, as that's generally more useful in scripts. Changed whcl math ops to use floating point if either operand is floating point, instead of s2's semantics of always using the LHS type. More docs. file: [fba1f05e3d] check-in: [29123f3cda] user: stephan branch: trunk, size: 89828 | |
02:08 | Ported s2's time API to whcl. More whcl docs. file: [dc352e627f] check-in: [52405f41cf] user: stephan branch: trunk, size: 89830 | |
2022-03-01
| ||
02:48 | whcl doc touchups. Fixed another counter in whcl_dump_tokens() and added a flag to that function to cause virtual EOF tokens to be included in the output (they are no longer on by default). Added -eof flag to pragma dump-tokens to apply that flag. file: [c44b524768] check-in: [5c8fbd73eb] user: stephan branch: whcl-dot-op, size: 89293 | |
2022-02-28
| ||
14:18 | Doc touchups. file: [d4d2eff78c] check-in: [92ed8a7d3a] user: stephan branch: trunk, size: 88979 | |
02:13 | whcl: no longer load supplemental APIs by default, instead delegating loading to script code via the new (whcl install-api THE-NAME...) function. This significantly lowers memory usage for most scripts. file: [f9aaddf973] check-in: [1ac4d9d037] user: stephan branch: trunk, size: 88498 | |
2022-02-27
| ||
04:07 | Cleanups in the whcl PathFinder init and adjacent code, added the path-from-env method and more docs. file: [a6e1bbce4a] check-in: [ca33c44e06] user: stephan branch: trunk, size: 88501 | |
02:18 | Minor internal cleanups and added some missing API docs. file: [0d20cc5593] check-in: [15c495f9a8] user: stephan branch: trunk, size: 86967 | |
2022-02-26
| ||
20:57 | Minor header touchups. Re-enabled the historical 'touch' feature of mkcdep.c to work around some otherwise weak deps handling when headers change. On the one hand, this improves rebuilding for header changes. On the other, it causes the deps files to get rebuilt twice in a row at times. file: [d75c759a23] check-in: [347aa1caf8] user: stephan branch: trunk, size: 84085 | |
16:45 | Tweaks to the various config headers. Moved whcl dist creation into an external script. file: [7d696d37dc] check-in: [a2df56da01] user: stephan branch: trunk, size: 84453 | |
14:33 | whcl: fixed a broken assert in the decl command. The set command now supports -const when used for setting object properties. Added whcl[fs] pushd/popd functions (implemented as script code). file: [04180aaa70] check-in: [34e4e2df9d] user: stephan branch: trunk, size: 84911 | |
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: [6ef49a8595] check-in: [86a52436f3] user: stephan branch: trunk, size: 84048 | |
11:53 | whcl: added the Exception class, primarily so that the exception prototype can be extended by scripts. The exception builtin command is still easier to use. file: [d14a81a063] check-in: [b54d23484a] user: stephan branch: trunk, size: 82186 | |
2022-02-24
| ||
14:47 | whcl: painstakingly added some special support for -flags in script-side functions. This required much experimentation and dead-end/deleted code due to levels of call indirection interfering with making the distinction between real flags vs flag-like strings. file: [c1681e4c80] check-in: [50919c3bb8] user: stephan branch: trunk, size: 81870 | |
2022-02-23
| ||
12:36 | whcl: added whcl[json] APIs. Added mechanism for extending whclsh with client-side C code without modifying whclsh.c. Some minor API renaming. Fixed a cwal_value midhandling bug in whcl__call_cwal_f() which triggered an assert(). file: [d73ade807b] check-in: [823625ce00] user: stephan branch: trunk, size: 81677 | |
10:43 | Renamed and modified whcl/whcl.h → include/wh/cwal/whcl/whcl.h. Moved s2 headers to include/wh/cwal/s2/. and whcl's to include/wh/cwal/whcl/. file: [3b98f49941] check-in: [3772b84475] user: stephan branch: trunk, size: 79977 | |