v3.3.0 #50
minirang
announced in
Announcements
v3.3.0
#50
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Description
Functions saw globals without a bridge.
Environment::resolve()fell back to the global scopewhen a name was not found in a function, so a function could read any global, and
change g to 99silently overwrote one with noglobaldeclaration. A function now resolves onlyits own locals plus the names it bridged with
change x to global(reads,change, andadd/remove/change x[i];constantglobals included). An unbridged global gets a messagethat says so and hints at
change x to global; in apurefunction it is stillPureFunctionGlobalAccess(E4-027). Behavior change: any function that read a global withoutbridging it now fails with
UndefinedVariable(E4-001);examples/02_comprehensive_demo.cuffand
examples/lib/greetings.cuffwere updated accordingly.DLC:network: chunked responses could exceed the 8 MiB cap. A hostile chunk size such asffffffffffffffffwrapped around the size check and the client buffered until the 15 s deadline(measured 642 MiB). It is now rejected immediately.
DLC:network:http://[::]/bypassed the private-address block (the IPv6 unspecified addressreaches the local host on Linux). It is now blocked like
::1.file_removedeleted empty directories. It now removes regular files only.[int]matched a bare+or-, e.g."+5" is "[int][one:5]"was true.remove <key> from <map>is about 2x faster for keys near the front of a large map (it no longerre-hashes every later key); removing the last key is still O(1).
cuffshaccepts--no-filesystem, ascuffcalready did.tests/run.shtakesCUFFCandUNIT_FLAGSfrom the environment (for ASan/UBSan runs) and fallsback to
gtimeout, or no timeout, wheretimeoutis missing (stock macOS).All documentation is in English (
SPEC.md,REGEX.md,IMPLEMENTATION_NOTES.md,EXTENDING.md,examples/README.md), as are the comments and demo output inexamples/andtests/. Hangul that exists as UTF-8 test data was kept.SPEC.mdsection 10 states the new scope rule; section 13 documentsfile_remove's file-onlybehavior; the comprehensive example mirrors
examples/02_comprehensive_demo.cuff.REGEX.md:[nl]is\nor\r(a\r\npair is two characters);find ... gwith no matchreturns
[]; syntax errors are raised at parse time; a run of digits after any atom is a repeatcount, so
010-[num]4became[one:010]-[num]4in the examples; the[str!]{8,}example, whichwas not valid and never matched, became
[!sp]8~.IMPLEMENTATION_NOTES.md: new item 40; fixed theUtf8.hpath, the regex recursion limit(3,000, not 20,000), and the "unresolved" reserved-words note (fixed in item 28); item 11 now
records that self-referencing lists/maps are never freed.
EXTENDING.md:pureenforcementdescription updated, and a reference to a nonexistent "Deferred implementations" section removed.
SECURITY.md,cli/README.md,tests/README.mdupdated (including how to run the suite underASan/UBSan).
New:
global_bridge_required(case),global_read_without_bridgeandglobal_write_without_bridge(E4-001),map_remove_reindex(case), andtests/unit/dlc_guards_test.cpp(address policy incl.::,file_remove).regex_test.cppcovers
[int].This discussion was created from the release v3.3.0.
All reactions