From 7daf4cece07d544161409977d8789296b8121efc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 22 Oct 2026 22:11:36 +0000 Subject: [PATCH] chore(main): release grayscale 0.13.0 --- .github/.release-please-manifest.json | 2 +- CHANGELOG.md | 356 ++++++++++++++++++++++++++ 2 files changed, 357 insertions(+), 1 deletion(-) diff --git a/.github/.release-please-manifest.json b/.github/.release-please-manifest.json index e1a55a368..ed21d28cb 100644 --- a/.github/.release-please-manifest.json +++ b/.github/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.12.3" + ".": "0.13.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e9098c36..549848c98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,361 @@ # Changelog +## [0.13.0](https://github.com/TechLateef/EZ/compare/grayscale-v0.12.3...grayscale-v0.13.0) (2026-10-22) + + +### Features + +* **arrays:** add arrays.sort_by ([#3046](https://github.com/TechLateef/EZ/issues/3046)) ([2ca93a1](https://github.com/TechLateef/EZ/commit/2ca93a17cdbd6dd33d63074d52d6b7e67eda442d)) +* **benchmarks:** record the C compiler in benchmark output ([#3014](https://github.com/TechLateef/EZ/issues/3014)) ([45aeceb](https://github.com/TechLateef/EZ/commit/45aecebf1fe958878cbf966eedb2d25e520827b5)) +* **build:** add per-target help to make (make help TARGET=<name>) ([#3117](https://github.com/TechLateef/EZ/issues/3117)) ([fb1f267](https://github.com/TechLateef/EZ/commit/fb1f267eb87df9b7859cfd36086e1bea3d69c0df)) +* **cli:** install shell completion scripts during make install, gray update, and gray install ([#3076](https://github.com/TechLateef/EZ/issues/3076)) ([6465a95](https://github.com/TechLateef/EZ/commit/6465a95776a8019204b1ab8f3a0db22a447fb856)) +* **cli:** shell tab-completion for the gray CLI ([#2117](https://github.com/TechLateef/EZ/issues/2117)) ([d55cc40](https://github.com/TechLateef/EZ/commit/d55cc40c926073c48663457b3150a4d557ce737b)) +* **grayc:** support TinyCC as a C backend ([#2826](https://github.com/TechLateef/EZ/issues/2826)) ([54b6498](https://github.com/TechLateef/EZ/commit/54b6498ace968dec68828988c193c15c2befd554)) +* **net:** add net.receive_line ([#3051](https://github.com/TechLateef/EZ/issues/3051)) ([ffdb62a](https://github.com/TechLateef/EZ/commit/ffdb62a10ae72fd559a5a8e80ba72c2f34319bef)) +* **parser:** add or_default for fallible calls ([#2949](https://github.com/TechLateef/EZ/issues/2949)) ([92544fd](https://github.com/TechLateef/EZ/commit/92544fd2c4818e3edb44c69cf1c7638f7d618904)) +* **parser:** add or_panic for fallible functions ([#2453](https://github.com/TechLateef/EZ/issues/2453)) ([fab8cf0](https://github.com/TechLateef/EZ/commit/fab8cf03a0ecbe5e96c8da501fbf3ac5f3403fe0)) +* **parser:** allow ';' as an optional statement and member separator ([#2590](https://github.com/TechLateef/EZ/issues/2590)) ([a882151](https://github.com/TechLateef/EZ/commit/a882151b910e10fd747b102d327d7246b0591328)) +* **parser:** declare multiple variables or constants on one line ([#2923](https://github.com/TechLateef/EZ/issues/2923)) ([fba6b4e](https://github.com/TechLateef/EZ/commit/fba6b4e2bc9664e86477ee67369e640f8b147712)) +* **stdlib:** add add_minutes, add_months, start_of_month, and end_of_month to the time module ([#3069](https://github.com/TechLateef/EZ/issues/3069)) ([290f280](https://github.com/TechLateef/EZ/commit/290f280e211d8885131aa83d6463c741709c4285)) +* **stdlib:** add counts, rand_bytes, roll_dice, mirror, is_vowel, and is_consonant ([#3070](https://github.com/TechLateef/EZ/issues/3070)) ([f75d829](https://github.com/TechLateef/EZ/commit/f75d8297a4065d8777badc22016a23b3bd3f7de7)) +* **stdlib:** add cpu_usage, memory_usage, disk_usage, and load_average to the os module ([#3071](https://github.com/TechLateef/EZ/issues/3071)) ([df3a171](https://github.com/TechLateef/EZ/commit/df3a1710318fffd8e02cc2b172f8a74e1a733584)) +* **stdlib:** add get_or_insert, sorted_keys, get_and_remove, and find_key to the maps module ([#3065](https://github.com/TechLateef/EZ/issues/3065)) ([006416f](https://github.com/TechLateef/EZ/commit/006416f0877fb7ce20fde37a1b0448e2521736fa)) +* **time:** add time.from_parts ([#3047](https://github.com/TechLateef/EZ/issues/3047)) ([db7a901](https://github.com/TechLateef/EZ/commit/db7a9016782db38a07f2898a44197f3395cae27c)) +* **typechecker:** generate names() and variants() for plain enums ([#2326](https://github.com/TechLateef/EZ/issues/2326)) ([3436f2a](https://github.com/TechLateef/EZ/commit/3436f2ab9a1952067218f77b308da4e2ec46ed61)) +* **typechecker:** require unsafe for raw, mem, threads, and extern calls ([#2660](https://github.com/TechLateef/EZ/issues/2660)) ([e5d7371](https://github.com/TechLateef/EZ/commit/e5d73716a024a222ea2790b6209815e20a7fd8a7)) + + +### Bug Fixes + +* **arrays:** order a NaN after every other value in float sort, min and max ([#2977](https://github.com/TechLateef/EZ/issues/2977)) ([2f8d8d8](https://github.com/TechLateef/EZ/commit/2f8d8d83a81d87e9277ada44c183cc92985aa55d)) +* **atomic:** panic when the spinlock allocation fails ([#3165](https://github.com/TechLateef/EZ/issues/3165)) ([0f9b9de](https://github.com/TechLateef/EZ/commit/0f9b9de88c93ef55d2fe52b29c3ebafbd4c79b35)) +* **binary:** take and return the named type in the 8- to 64-bit encode and decode functions ([#2867](https://github.com/TechLateef/EZ/issues/2867)) ([fafac6b](https://github.com/TechLateef/EZ/commit/fafac6b278e9aef895302809195f741df2a91bb2)) +* **build:** document CC and GRAY_CC in make help and build the benchmark stopwatch with the selected compiler ([#3113](https://github.com/TechLateef/EZ/issues/3113)) ([81dd1bb](https://github.com/TechLateef/EZ/commit/81dd1bb7f041bc743a9218f4fd4d7436d80f1a2e)) +* **build:** quote $(MAKE) in the embed tag call and fail when no embedded sources are found ([4345532](https://github.com/TechLateef/EZ/commit/4345532006276cddf48a0559a309862fbfd8e3eb)) +* **build:** reject multiple make targets in one invocation ([#3112](https://github.com/TechLateef/EZ/issues/3112)) ([28b1afd](https://github.com/TechLateef/EZ/commit/28b1afde7bfa33b778206ea182168cb5356c07f6)) +* **build:** remove GCC 11 compiler and linker warnings on macOS ([#3013](https://github.com/TechLateef/EZ/issues/3013)) ([81fa229](https://github.com/TechLateef/EZ/commit/81fa229cd0695b9df2c84e18c57940e8d04dc6d2)) +* **channels:** enforce --arena-limit in channels.open ([#3152](https://github.com/TechLateef/EZ/issues/3152)) ([4012399](https://github.com/TechLateef/EZ/commit/4012399002deb05a7a61751295b2135b15c4fb9a)) +* **channels:** panic when channels.open cannot allocate ([#3164](https://github.com/TechLateef/EZ/issues/3164)) ([d9b1e6e](https://github.com/TechLateef/EZ/commit/d9b1e6ee1ef7117175aa627052c442da65d4b1ef)) +* **channels:** panic when channels.open capacity overflows the buffer size ([#3163](https://github.com/TechLateef/EZ/issues/3163)) ([b9b19d2](https://github.com/TechLateef/EZ/commit/b9b19d29370536f71f7de97292b8b0e23570ea76)) +* **cli:** accept --no-color, --arena-limit, and --cc on gray check and gray watch ([#3090](https://github.com/TechLateef/EZ/issues/3090)) ([ab23cf7](https://github.com/TechLateef/EZ/commit/ab23cf781f1f64ed7cea68488df32d5560ef4878)) +* **cli:** cast enum values explicitly in the verify test ([8bc4325](https://github.com/TechLateef/EZ/commit/8bc432558b00f5af6c84ce90ecd107198da19e16)) +* **cli:** check a directory as one merged module and drop the main requirement ([#3100](https://github.com/TechLateef/EZ/issues/3100)) ([1f4413b](https://github.com/TechLateef/EZ/commit/1f4413b0f8f77d1a3935ebb1a87e5994c2548d17)) +* **cli:** describe --cc accepting commands, precedence, and examples in gray --help ([#3114](https://github.com/TechLateef/EZ/issues/3114)) ([9b2e586](https://github.com/TechLateef/EZ/commit/9b2e586d2125e0b863ce507479b7fb5a610244b2)) +* **cli:** expand ~ when completing source paths at the root command ([#3079](https://github.com/TechLateef/EZ/issues/3079)) ([90dd8fa](https://github.com/TechLateef/EZ/commit/90dd8fa8f30049b3bfd570d8e0c99dab6966c0d4)) +* **cli:** gray update verifies the archive's SHA-256 before installing ([#3172](https://github.com/TechLateef/EZ/issues/3172)) ([b2208af](https://github.com/TechLateef/EZ/commit/b2208afa1e27075c848c389158e7b7c0c2d503d8)) +* **cli:** join a multi-line function signature in gray doc ([#3084](https://github.com/TechLateef/EZ/issues/3084)) ([58ead7a](https://github.com/TechLateef/EZ/commit/58ead7ad2b001a9bc6629e260ad647dc6059c973)) +* **cli:** keep a multi-line variable initializer in the gray doc signature ([#3085](https://github.com/TechLateef/EZ/issues/3085)) ([da1ea71](https://github.com/TechLateef/EZ/commit/da1ea71c0b246fe43b2ead4812e0bcc890a053b3)) +* **cli:** leave multi-line raw string contents untouched in gray fmt ([#3082](https://github.com/TechLateef/EZ/issues/3082)) ([8980663](https://github.com/TechLateef/EZ/commit/8980663d222374bc830fd4bddf81406b2bcdf178)) +* **cli:** name the command and show usage when required arguments are missing ([#3075](https://github.com/TechLateef/EZ/issues/3075)) ([9b81974](https://github.com/TechLateef/EZ/commit/9b819744f32030f825439be40be22d18100390a5)) +* **cli:** name the default cross build output after the target so it keeps the native binary ([#3102](https://github.com/TechLateef/EZ/issues/3102)) ([17c68e6](https://github.com/TechLateef/EZ/commit/17c68e678f1d8c458ab8fab5af847e270511fa4b)) +* **cli:** offer symlinked directories in root tab completion ([#3080](https://github.com/TechLateef/EZ/issues/3080)) ([e174650](https://github.com/TechLateef/EZ/commit/e174650faef78240977a8e2413a231ef31fedd43)) +* **cli:** pass arguments after the file to the program in gray <file> ([#3092](https://github.com/TechLateef/EZ/issues/3092)) ([086d897](https://github.com/TechLateef/EZ/commit/086d89742ff2d6ed09383ba7388e91e8288c7e51)) +* **cli:** read escaped quotes in a gray doc description ([#3086](https://github.com/TechLateef/EZ/issues/3086)) ([e3338db](https://github.com/TechLateef/EZ/commit/e3338db257ce2b0939adc3dc88a12d7cd010400c)) +* **cli:** redact only a path that is under the home directory in gray report ([#3108](https://github.com/TechLateef/EZ/issues/3108)) ([0c2d20e](https://github.com/TechLateef/EZ/commit/0c2d20ea54640f5dc1d5356c3e63fbe7e72e0178)) +* **cli:** refuse to format a file with lexer or parser errors ([#3095](https://github.com/TechLateef/EZ/issues/3095)) ([c591922](https://github.com/TechLateef/EZ/commit/c591922c327fea77e4bfc7006dfd7976855738ae)) +* **cli:** reject a -q value that is not a warning code instead of reading it as the input file ([#3105](https://github.com/TechLateef/EZ/issues/3105)) ([eaa6057](https://github.com/TechLateef/EZ/commit/eaa60579f3f00f22e1c1298462e9cd63348aab5c)) +* **cli:** reject an --arena-limit value that overflows instead of wrapping ([#3104](https://github.com/TechLateef/EZ/issues/3104)) ([a597233](https://github.com/TechLateef/EZ/commit/a59723392221b431f41dbb08587e8e0f053ee786)) +* **cli:** reject dot segments in the gray update trusted URL check ([#3093](https://github.com/TechLateef/EZ/issues/3093)) ([fb7b335](https://github.com/TechLateef/EZ/commit/fb7b3353df5ba1b6f11fd048a18baae4dbca24c2)) +* **cli:** reject surplus arguments to version, report, cross targets, man, and update ([#3094](https://github.com/TechLateef/EZ/issues/3094)) ([c18acbd](https://github.com/TechLateef/EZ/commit/c18acbd75a5d89fa47c3b0fcb130d1ffd9661448)) +* **cli:** resolve the C compiler in gray report in the order grayc uses ([#3109](https://github.com/TechLateef/EZ/issues/3109)) ([ea6add0](https://github.com/TechLateef/EZ/commit/ea6add0b8986b1698b572cff86d05ee02dbb222e)) +* **cli:** skip #doc text inside raw strings and block comments in gray doc ([#3083](https://github.com/TechLateef/EZ/issues/3083)) ([48a9b22](https://github.com/TechLateef/EZ/commit/48a9b22c80ddfbe0ea8f820c083c67ae505c1c77)) +* **cli:** stop offering flag-like names in gray man completion ([#3078](https://github.com/TechLateef/EZ/issues/3078)) ([d088c79](https://github.com/TechLateef/EZ/commit/d088c79ea847a16806ecae8d277ce5b739272ed9)) +* **cli:** strip trailing whitespace and collapse blank lines in CRLF files ([#3097](https://github.com/TechLateef/EZ/issues/3097)) ([b58e537](https://github.com/TechLateef/EZ/commit/b58e5374d0ea9bc413aefa8bc2eaf06673be67f2)) +* **cli:** watch every file a watched file imports, transitively ([#3089](https://github.com/TechLateef/EZ/issues/3089)) ([9120a7e](https://github.com/TechLateef/EZ/commit/9120a7efbb15aeb18c5142d452a72b271772213e)) +* **codegen:** accept a map literal or call result in http functions and json.pretty_print ([#2904](https://github.com/TechLateef/EZ/issues/2904)) ([78d48a6](https://github.com/TechLateef/EZ/commit/78d48a6f7750a0c7946a13f45b2cb639b0789eba)) +* **codegen:** allocate map-field inserts on a new() object in the heap arena ([#3134](https://github.com/TechLateef/EZ/issues/3134)) ([add8f22](https://github.com/TechLateef/EZ/commit/add8f22ea72fd9828b83f6948d4a4577e7b44587)) +* **codegen:** append, prepend and insert_at on a new() object's array field allocate in the heap arena ([#3149](https://github.com/TechLateef/EZ/issues/3149)) ([4de14a2](https://github.com/TechLateef/EZ/commit/4de14a22c5462e214a49a30a660a81eeb107f150)) +* **codegen:** cast a wide integer to f32 or f64 without the i64 range check ([#2903](https://github.com/TechLateef/EZ/issues/2903)) ([7585d49](https://github.com/TechLateef/EZ/commit/7585d492ee954955c87263c1507a68c7c7f47413)) +* **codegen:** cast between every pair of wide integer types and range-check the value ([#2919](https://github.com/TechLateef/EZ/issues/2919)) ([8726d24](https://github.com/TechLateef/EZ/commit/8726d24b02b3dde51ffbc97455dc3863e252663a)) +* **codegen:** check bare func elements against the typed func slot they flow into ([#3192](https://github.com/TechLateef/EZ/issues/3192)) ([2977014](https://github.com/TechLateef/EZ/commit/297701491a281de537937c7c8af4dc14488cb075)) +* **codegen:** check that char(n) and casts to char receive a valid codepoint ([#2857](https://github.com/TechLateef/EZ/issues/2857)) ([7d99777](https://github.com/TechLateef/EZ/commit/7d997771cc9cfcd9aa070b4bf0afcfef0621ae77)) +* **codegen:** compare unsigned and signed integers by value ([#2858](https://github.com/TechLateef/EZ/issues/2858)) ([d267dfc](https://github.com/TechLateef/EZ/commit/d267dfc6d32e9adb417d23ff8b8c5e20bafae9a0)) +* **codegen:** convert each element when an array is cast out of a wide integer element type ([14628bf](https://github.com/TechLateef/EZ/commit/14628bf7d5fdc23303a4df01a6fdfd71b56589e3)) +* **codegen:** convert each element when an array is cast to a wide integer element type ([#2920](https://github.com/TechLateef/EZ/issues/2920)) ([069f247](https://github.com/TechLateef/EZ/commit/069f247ea7aa8a02250e422f20162e58fe91a2ad)) +* **codegen:** convert wide-integer constructors the way cast does ([#2994](https://github.com/TechLateef/EZ/issues/2994)) ([4d82f34](https://github.com/TechLateef/EZ/commit/4d82f34834d4ab792ea338c8691e14eec1945154)) +* **codegen:** copy a local array or map into the heap when assigned to a new() struct field ([#3017](https://github.com/TechLateef/EZ/issues/3017)) ([d7867a1](https://github.com/TechLateef/EZ/commit/d7867a1d6743f9b88a57d21735c7a57a04e544c7)) +* **codegen:** copy a string assigned to a global through a variable into the heap arena ([#3128](https://github.com/TechLateef/EZ/issues/3128)) ([632cd4b](https://github.com/TechLateef/EZ/commit/632cd4b0077cfd565fb51e2b4213b7b4665e6cfd)) +* **codegen:** copy composite defaults in maps.get_or_insert on store and on return ([1cdbe88](https://github.com/TechLateef/EZ/commit/1cdbe88d981aa56051e93c3318b160579557c5de)) +* **codegen:** copy composite payloads when constructing a tagged enum variant ([#2991](https://github.com/TechLateef/EZ/issues/2991)) ([6f6b52c](https://github.com/TechLateef/EZ/commit/6f6b52c2bf7921656273254136530d53ed6a358a)) +* **codegen:** copy composite values stored by index to the outer arena ([#3191](https://github.com/TechLateef/EZ/issues/3191)) ([1ddb33e](https://github.com/TechLateef/EZ/commit/1ddb33e5a1a449eb10a380f433495b23049d4d5a)) +* **codegen:** copy composite variables embedded in array, map and struct literals ([#3193](https://github.com/TechLateef/EZ/issues/3193)) ([d75b6e1](https://github.com/TechLateef/EZ/commit/d75b6e128b3890732944edcabb0724e94e341bab)) +* **codegen:** copy nested storage out of arrays and maps results and generic returns ([#2958](https://github.com/TechLateef/EZ/issues/2958)) ([5671579](https://github.com/TechLateef/EZ/commit/5671579db5da30b5de3dc027a7842fa8c5ced409)) +* **codegen:** copy values stored through a pointer into the heap arena ([#3153](https://github.com/TechLateef/EZ/issues/3153)) ([1ffab22](https://github.com/TechLateef/EZ/commit/1ffab22ecd3c8be3c8e1c162bc1abc4e96a108c8)) +* **codegen:** copying an array field into a mut local and writing it back exhausts the arena ([#2928](https://github.com/TechLateef/EZ/issues/2928)) ([934544c](https://github.com/TechLateef/EZ/commit/934544c5d79911cc6f4dbee0b41bcea7afc327eb)) +* **codegen:** deep-copy tagged enum payloads when the value leaves its scope ([#3155](https://github.com/TechLateef/EZ/issues/3155)) ([3f364e6](https://github.com/TechLateef/EZ/commit/3f364e6b6333962e5ae61f090a1f027f568b31a0)) +* **codegen:** default a #json enum field the JSON omits to the enum's default variant ([522e43c](https://github.com/TechLateef/EZ/commit/522e43c5db4b7c85dfec13b6605861762658ab94)) +* **codegen:** default an enum with an explicit first value to its first variant ([#2844](https://github.com/TechLateef/EZ/issues/2844)) ([06e9fed](https://github.com/TechLateef/EZ/commit/06e9fed1b1b0de5c734688ad5491d8c7541bdcd7)) +* **codegen:** emit a module-level mut's constant initializer without a runtime range check ([#2872](https://github.com/TechLateef/EZ/issues/2872)) ([f08a941](https://github.com/TechLateef/EZ/commit/f08a9416cdfa03605c4f3dcdffb6ea48982aa213)) +* **codegen:** emit an empty map for {} in a map-typed struct literal field ([0c09a37](https://github.com/TechLateef/EZ/commit/0c09a372e87287ded9d75a08feb9bc0747d5f067)) +* **codegen:** emit compound assignment on a wide integer local typed by a type parameter ([fad6db1](https://github.com/TechLateef/EZ/commit/fad6db1621d14cc9ef0003941a0e7d8033c13e0e)) +* **codegen:** emit wide-integer literal locals in a generic function bound to u128 or u256 ([#3140](https://github.com/TechLateef/EZ/issues/3140)) ([085b3b4](https://github.com/TechLateef/EZ/commit/085b3b477e0c3be46cfd96f10f34b614a7d84486)) +* **codegen:** end stepped range loop instead of panicking past the last element ([#3182](https://github.com/TechLateef/EZ/issues/3182)) ([fb23554](https://github.com/TechLateef/EZ/commit/fb235548529c806903e4b6364fc533d4a70ebc30)) +* **codegen:** escape source filenames written into generated C ([#3098](https://github.com/TechLateef/EZ/issues/3098)) ([a0c7fe4](https://github.com/TechLateef/EZ/commit/a0c7fe47cb3cc9f67233e70fca7192745776383a)) +* **codegen:** evaluate named arguments and struct literal fields in the order written ([#2934](https://github.com/TechLateef/EZ/issues/2934)) ([3d79b02](https://github.com/TechLateef/EZ/commit/3d79b022d4b59d937c1a3500372dad6defbea3cd)) +* **codegen:** evaluate range() and arrays.insert_at() arguments left to right ([#2939](https://github.com/TechLateef/EZ/issues/2939)) ([55ff2d3](https://github.com/TechLateef/EZ/commit/55ff2d32f60cec6f8d803e9e40e615251800aff9)) +* **codegen:** evaluate the argument of type_of, fields and size_of ([#2992](https://github.com/TechLateef/EZ/issues/2992)) ([4c6b578](https://github.com/TechLateef/EZ/commit/4c6b578de8c9fdcb345bc4ded90bfb0f1def949c)) +* **codegen:** evaluate the index before the right-hand side in array element assignment ([#2935](https://github.com/TechLateef/EZ/issues/2935)) ([0ad964b](https://github.com/TechLateef/EZ/commit/0ad964be8e1c6dc6727c3465355e585449e139ff)) +* **codegen:** evaluate the map argument once in maps.get_or_insert and maps.get_and_remove ([fafe025](https://github.com/TechLateef/EZ/commit/fafe025904e33672d667f69aa26acf2b998b51ae)) +* **codegen:** format a negative i8, i16 or i32 at its own width for %x, %X and %o ([#2908](https://github.com/TechLateef/EZ/issues/2908)) ([f1c01e8](https://github.com/TechLateef/EZ/commit/f1c01e89aec48b0bff2f3b8847b4c9161c269c91)) +* **codegen:** give a fixed-size array field N slots in new() ([#2893](https://github.com/TechLateef/EZ/issues/2893)) ([bc5a770](https://github.com/TechLateef/EZ/commit/bc5a770f3222c8d20ae18244af4d6c7dcc06ffde)) +* **codegen:** give array literals an explicit element count so TinyCC snapshots compile them ([#3131](https://github.com/TechLateef/EZ/issues/3131)) ([725f16a](https://github.com/TechLateef/EZ/commit/725f16a5f2473f2450577e65a1d0f91375b9d200)) +* **codegen:** guard indexed and map-lookup arrays during for_each ([#3183](https://github.com/TechLateef/EZ/issues/3183)) ([d2d1b52](https://github.com/TechLateef/EZ/commit/d2d1b52429f22bc262b948e77947a5dc19ff1eb4)) +* **codegen:** guard plain field assignment on array elements during for_each ([#3184](https://github.com/TechLateef/EZ/issues/3184)) ([86ac56a](https://github.com/TechLateef/EZ/commit/86ac56a060084a92b02c93801a102c3cef44743e)) +* **codegen:** initialize a shadowing variable from the outer variable it reads ([#3018](https://github.com/TechLateef/EZ/issues/3018)) ([4dee938](https://github.com/TechLateef/EZ/commit/4dee938fcfd8b34c97c4fdabb806bf8433c35aab)) +* **codegen:** iterate for_each over a string by codepoint ([#3004](https://github.com/TechLateef/EZ/issues/3004)) ([d021de3](https://github.com/TechLateef/EZ/commit/d021de32431562c197ca6e0de81761112e6bc14c)) +* **codegen:** keep the for_each element type across emitting a deep collection chain ([#3028](https://github.com/TechLateef/EZ/issues/3028)) ([0dd2d79](https://github.com/TechLateef/EZ/commit/0dd2d795674db2ec306b701792eeb95a45bedad8)) +* **codegen:** literal built from a const value or by-value parameter aliases it ([#2912](https://github.com/TechLateef/EZ/issues/2912)) ([88f4fb9](https://github.com/TechLateef/EZ/commit/88f4fb9b90eb0a8f8952f6f9e83578c5fb3cc13f)) +* **codegen:** map each function's signature to its .gray line so coverage is keyed to .gray files ([#2671](https://github.com/TechLateef/EZ/issues/2671)) ([c8a8a28](https://github.com/TechLateef/EZ/commit/c8a8a281e7bcb1483ffb045187504cb851066a21)) +* **codegen:** maps.get_or_default() evaluates its default argument on every call ([#2940](https://github.com/TechLateef/EZ/issues/2940)) ([0ae185e](https://github.com/TechLateef/EZ/commit/0ae185ec9832e2952745d13a0c9ee18e6447aeaa)) +* **codegen:** overflow- and zero-check compound assignment to integer map values ([#2871](https://github.com/TechLateef/EZ/issues/2871)) ([282b5ec](https://github.com/TechLateef/EZ/commit/282b5ecd37fdd41ecbe55b6dabe7b30ce27a0dbe)) +* **codegen:** overflow-check unary negation of i128 and i256 values ([311fc26](https://github.com/TechLateef/EZ/commit/311fc26addba4dcdd669cf3a0120eaec4ce15fc2)) +* **codegen:** panic when a negative signed scalar is cast to u128 or u256 ([#2918](https://github.com/TechLateef/EZ/issues/2918)) ([ee0d386](https://github.com/TechLateef/EZ/commit/ee0d3868a4f394bc5939b368790a5d5cb1b99a4c)) +* **codegen:** panic when a string cast to a string-backed enum matches no variant ([#3006](https://github.com/TechLateef/EZ/issues/3006)) ([f87492c](https://github.com/TechLateef/EZ/commit/f87492c47fd5594f73f204a6a5639fe7fe448e78)) +* **codegen:** panic when assigning the array or map being iterated in for_each ([#2978](https://github.com/TechLateef/EZ/issues/2978)) ([aae3e2d](https://github.com/TechLateef/EZ/commit/aae3e2d70e2fb2242d044c5080c3942618078584)) +* **codegen:** pick the membership direction of a wide inline range from its step at runtime ([#2996](https://github.com/TechLateef/EZ/issues/2996)) ([c9dece3](https://github.com/TechLateef/EZ/commit/c9dece37bb434dea1241b8952a42dfccee0f0f79)) +* **codegen:** print a bare nil as nil in println, print and string interpolation ([#2985](https://github.com/TechLateef/EZ/issues/2985)) ([e1ae989](https://github.com/TechLateef/EZ/commit/e1ae989185e5cb129d97553f45d36d43d6e5433e)) +* **codegen:** print an Error field of a struct as its message instead of the internal pointer ([#2942](https://github.com/TechLateef/EZ/issues/2942)) ([04b47f2](https://github.com/TechLateef/EZ/commit/04b47f2b5f720a6a036b764ba1b65beb0e3c3677)) +* **codegen:** range-check a float cast to a wide integer ([#2902](https://github.com/TechLateef/EZ/issues/2902)) ([96d0d1c](https://github.com/TechLateef/EZ/commit/96d0d1c6b4d14d5870073fea1e52c9dea3a1d502)) +* **codegen:** range-check narrowing casts from u64 and float sources before converting through int64 ([#2856](https://github.com/TechLateef/EZ/issues/2856)) ([dade0c5](https://github.com/TechLateef/EZ/commit/dade0c524d66d8407d4ca25da7ba35a2321a7937)) +* **codegen:** resolve #json struct field types in the struct's own module ([#3202](https://github.com/TechLateef/EZ/issues/3202)) ([758895f](https://github.com/TechLateef/EZ/commit/758895ffe8d21832ab30b8494dbf491a043f4df6)) +* **codegen:** resolve the sqlite Database type to GraySqlite * ([#2885](https://github.com/TechLateef/EZ/issues/2885)) ([56580dc](https://github.com/TechLateef/EZ/commit/56580dc58b5c95cef05ebe2d8d61e11a3d37c0f5)) +* **codegen:** resolve zero-value struct field types in the struct's own module ([#3204](https://github.com/TechLateef/EZ/issues/3204)) ([abd4cfd](https://github.com/TechLateef/EZ/commit/abd4cfd670490ce09abf5328c98021d28ec9e670)) +* **codegen:** restore the maps clear and is_empty branches removed in 60cfefc ([d364798](https://github.com/TechLateef/EZ/commit/d3647984243eb8b23be780d3b737cd396d35287f)) +* **codegen:** shift a generic unsigned operand at its bound type ([#3145](https://github.com/TechLateef/EZ/issues/3145)) ([0c1a3cd](https://github.com/TechLateef/EZ/commit/0c1a3cdea347b038dc1e47acfa7b542988e7554d)) +* **codegen:** size an empty tagged enum array literal by its element type ([#3205](https://github.com/TechLateef/EZ/issues/3205)) ([a46abc5](https://github.com/TechLateef/EZ/commit/a46abc5135bf2fd84c101daa8920672a3aa0b08a)) +* **codegen:** skip the for_each mutation check when storing a & parameter element temporary back ([#2945](https://github.com/TechLateef/EZ/issues/2945)) ([1870525](https://github.com/TechLateef/EZ/commit/187052537147e590445722d7caff242f8cc8983d)) +* **codegen:** skip the heap copy when storing back an elided array field copy ([33557b3](https://github.com/TechLateef/EZ/commit/33557b32b9d7dc6a1da0312a13fed7aff198330e)) +* **codegen:** skip the narrowing cast for a generic local whose value is typed by its type parameter ([#3143](https://github.com/TechLateef/EZ/issues/3143)) ([9918bfd](https://github.com/TechLateef/EZ/commit/9918bfd81f2f88826e2af0934313640643259fec)) +* **codegen:** sort arrays of bool at their 1-byte width in sort_asc and sort_desc ([#2873](https://github.com/TechLateef/EZ/issues/2873)) ([985e7f4](https://github.com/TechLateef/EZ/commit/985e7f4cc3530aa55618c2d391dd5846592beec3)) +* **codegen:** store a container element back after a & parameter call so a growing callee's write reaches it ([#2945](https://github.com/TechLateef/EZ/issues/2945)) ([0b543bb](https://github.com/TechLateef/EZ/commit/0b543bb34235a95e7c0cae2d5863ee4597a5aabe)) +* **codegen:** store a string-backed enum in map slots as a string ([#3005](https://github.com/TechLateef/EZ/issues/3005)) ([20d0cae](https://github.com/TechLateef/EZ/commit/20d0cae304112f645aeda4d99fcb4f7d6bf0cc91)) +* **codegen:** support bitwise operators on i128, u128, i256 and u256 values ([#2875](https://github.com/TechLateef/EZ/issues/2875)) ([ec9aa87](https://github.com/TechLateef/EZ/commit/ec9aa87a6ce0f5f16ec688d51a0320d16f755e18)) +* **codegen:** tagged enum payload bindings from an imported module get an unqualified type ([#2930](https://github.com/TechLateef/EZ/issues/2930)) ([aca3745](https://github.com/TechLateef/EZ/commit/aca3745e2fcd33c084f3a20f0d84a8cba5e658da)) +* **codegen:** test membership in an inline range with a negative step ([#2996](https://github.com/TechLateef/EZ/issues/2996)) ([1cf4616](https://github.com/TechLateef/EZ/commit/1cf46160cd1653ca2b651b6a46032964a9f953bb)) +* **codegen:** to_c_string returns a program-lifetime copy instead of a pointer into a reclaimable arena ([#2721](https://github.com/TechLateef/EZ/issues/2721)) ([d498875](https://github.com/TechLateef/EZ/commit/d4988754f817d9e9a559d1cb24ff29b1368e1692)) +* **codegen:** type a field read through a generic-typed value by its declared type ([#2957](https://github.com/TechLateef/EZ/issues/2957)) ([c761bed](https://github.com/TechLateef/EZ/commit/c761bedf77cb8c64ae7c16f0e88969562d252d1a)) +* **codegen:** type expressions on a literal-initialized generic local by its wide binding ([#3144](https://github.com/TechLateef/EZ/issues/3144)) ([1583f8e](https://github.com/TechLateef/EZ/commit/1583f8e3b4992694bae5c9ed0be23172738725d8)) +* **codegen:** undefine C library macros that share a name with an emitted identifier ([#2961](https://github.com/TechLateef/EZ/issues/2961)) ([103ed06](https://github.com/TechLateef/EZ/commit/103ed06f0c0e2f29068a9040cf2e9be97b5fb874)) +* **codegen:** write a bare f32 or f64 argument to json.encode with enough digits to round-trip ([e804ddd](https://github.com/TechLateef/EZ/commit/e804dddcc80a32c6b940e90729e20395b7289ee6)) +* **codegen:** write arrays.sort_by results through the live array buffer and drop the unchecked malloc ([#3046](https://github.com/TechLateef/EZ/issues/3046)) ([45b8ade](https://github.com/TechLateef/EZ/commit/45b8ade318a6673d79fb6413ef7c90647989bb4d)) +* **codegen:** zero-filled [T, N] slots hold the element type's zero value ([#2842](https://github.com/TechLateef/EZ/issues/2842)) ([4da468e](https://github.com/TechLateef/EZ/commit/4da468e7861caec78186bc41b205b3bb2dacea7f)) +* **csv:** drop a leading UTF-8 byte-order mark when parsing ([#2987](https://github.com/TechLateef/EZ/issues/2987)) ([f31f3d2](https://github.com/TechLateef/EZ/commit/f31f3d235a1b422434bf2fc256bf1741daf77bcb)) +* **csv:** parse drops the trailing empty field of a row ([#2792](https://github.com/TechLateef/EZ/issues/2792)) ([8e3b9b1](https://github.com/TechLateef/EZ/commit/8e3b9b1097374b7138cc3d1dc46a47ed18843766)) +* **csv:** quote a lone empty field so encode then parse keeps the row ([#2986](https://github.com/TechLateef/EZ/issues/2986)) ([02d2825](https://github.com/TechLateef/EZ/commit/02d282566931546f00e37eacacde10dd7f6fdd92)) +* **csv:** reject malformed quoting in parse and read_file ([#2988](https://github.com/TechLateef/EZ/issues/2988)) ([26452ad](https://github.com/TechLateef/EZ/commit/26452adad0503eae0746f0b69bcfdb58e451ffdd)) +* **diagnostics:** cut a long source line to a window around the error column ([#3103](https://github.com/TechLateef/EZ/issues/3103)) ([b20433f](https://github.com/TechLateef/EZ/commit/b20433f19711e02cce8c834ba9de38b379746b6c)) +* **driver:** archive the cross runtime with zig ar so windows-amd64 links ([#3101](https://github.com/TechLateef/EZ/issues/3101)) ([e79711e](https://github.com/TechLateef/EZ/commit/e79711e14c00582fdedb3129c2793bd043c84f0d)) +* **driver:** build and link the runtime with GCC on macOS ([bbf9e14](https://github.com/TechLateef/EZ/commit/bbf9e14bb2f89498ad37532b151c7c784b0f5338)) +* **driver:** declare glibc's default feature set so extern interop sees realpath ([#3123](https://github.com/TechLateef/EZ/issues/3123)) ([c60a049](https://github.com/TechLateef/EZ/commit/c60a049f954570b277466215b52813b760dba9fc)) +* **driver:** hash the embedded runtime at run time when no build tag is injected ([25467d5](https://github.com/TechLateef/EZ/commit/25467d58479889e4397c9e9c4fed282b72e7d1b2)) +* **driver:** make the generated C and signature checks work under tcc ([#3010](https://github.com/TechLateef/EZ/issues/3010)) ([e9f04f8](https://github.com/TechLateef/EZ/commit/e9f04f8494deb55b35cfbc4ba40e4600e1fc61ef)) +* **driver:** name the extracted runtime directory by every embedded input ([#3073](https://github.com/TechLateef/EZ/issues/3073)) ([38b7b60](https://github.com/TechLateef/EZ/commit/38b7b604a1164e799d9c5ec6ab93a3a1d96f6f0d)) +* **driver:** pass -Wl,-w only on Apple so GNU ld older than 2.40 links ([#3127](https://github.com/TechLateef/EZ/issues/3127)) ([bac4eeb](https://github.com/TechLateef/EZ/commit/bac4eeb1fa01b40d7f401877b897ae13f4f05623)) +* **driver:** refuse a build output path that is the input file ([#3087](https://github.com/TechLateef/EZ/issues/3087)) ([a79bb60](https://github.com/TechLateef/EZ/commit/a79bb60a8691c50191ca8503bbf073c506fe0bc0)) +* **driver:** reject a -q warning code that is not in the registry ([#3106](https://github.com/TechLateef/EZ/issues/3106)) ([bfc7a91](https://github.com/TechLateef/EZ/commit/bfc7a9160603b145e4fd5e28217853973d1a409b)) +* **driver:** report an unusable build output path instead of toolchain errors ([#3088](https://github.com/TechLateef/EZ/issues/3088)) ([cf1e5fa](https://github.com/TechLateef/EZ/commit/cf1e5faf56eb254b5c2688e9b4688d24fefaf9cf)) +* **driver:** use _XOPEN_SOURCE instead of _DEFAULT_SOURCE so string.h does not pull in strings.h ([20e24ae](https://github.com/TechLateef/EZ/commit/20e24ae6f117bf0b6fdc50b84b2746ea7f81bb19)) +* **encoding:** panic on malformed hex in from_hex like hex_decode ([#2966](https://github.com/TechLateef/EZ/issues/2966)) ([92310b8](https://github.com/TechLateef/EZ/commit/92310b897f75a776d4d8e9ab6d870f24262bd16e)) +* **fmt:** count characters, not bytes, in padding and the %s width and precision ([#2962](https://github.com/TechLateef/EZ/issues/2962)) ([c783b22](https://github.com/TechLateef/EZ/commit/c783b22df4cc26fac08a551ce97bc239baba3996)) +* **grayc:** keep the runtime archive cache in a private per-user directory ([#3171](https://github.com/TechLateef/EZ/issues/3171)) ([e72826d](https://github.com/TechLateef/EZ/commit/e72826d5f0691ae7437f951ad69562d932da0df0)) +* **http:** canonicalize response header names ([#3057](https://github.com/TechLateef/EZ/issues/3057)) ([7ee2f99](https://github.com/TechLateef/EZ/commit/7ee2f999139849daae0daad38bccca0b2ef971fc)) +* **http:** decode chunked response bodies and keep the last header ([#3053](https://github.com/TechLateef/EZ/issues/3053)) ([adb45e7](https://github.com/TechLateef/EZ/commit/adb45e7c5ce4e1318329bad6586fe0042fc55dad)) +* **http:** include a non-default port in the Host header ([#3054](https://github.com/TechLateef/EZ/issues/3054)) ([dde6647](https://github.com/TechLateef/EZ/commit/dde66477538bddeed560fbf84af8662ef1875112)) +* **http:** return a specific error code and fixed message for each request failure ([#3055](https://github.com/TechLateef/EZ/issues/3055)) ([a118f37](https://github.com/TechLateef/EZ/commit/a118f3711f02516cd5c2a02230e9e6e3eaaab456)) +* **http:** return OutOfRange for a response over the 1 MB limit ([#3056](https://github.com/TechLateef/EZ/issues/3056)) ([1428f3f](https://github.com/TechLateef/EZ/commit/1428f3f9a5170aaae430e8e78ad2336a2c5f739b)) +* **http:** send one Content-Type and drop caller-set Host, Content-Length and Connection ([#3052](https://github.com/TechLateef/EZ/issues/3052)) ([eb51e23](https://github.com/TechLateef/EZ/commit/eb51e23821e8c72a83ac760349261409c71f1c74)) +* **imports:** keep an imported module's variable declarations in source order ([#3136](https://github.com/TechLateef/EZ/issues/3136)) ([2474eb8](https://github.com/TechLateef/EZ/commit/2474eb87ec5503a5d7285a59ccfb34889beecbb1)) +* **input:** keep NUL bytes, drop CRLF terminator, add io.stdin_at_eof ([#2993](https://github.com/TechLateef/EZ/issues/2993)) ([4102856](https://github.com/TechLateef/EZ/commit/410285647dbff125e6ca354a10f3a5c0ca9d4f52)) +* **io:** copy_file gives the copy the source file's permission bits ([#3174](https://github.com/TechLateef/EZ/issues/3174)) ([ef65e53](https://github.com/TechLateef/EZ/commit/ef65e532c6884d7f8a72b8a43af6dc68cf625aa0)) +* **io:** reject io.copy_file onto the same file instead of truncating it ([#2973](https://github.com/TechLateef/EZ/issues/2973)) ([33e4339](https://github.com/TechLateef/EZ/commit/33e433977e6cf971e313c8fbeeae49884b92a513)) +* **io:** remove_dir_all unlinks a symlink root instead of deleting its target's contents ([#3170](https://github.com/TechLateef/EZ/issues/3170)) ([fe7fe71](https://github.com/TechLateef/EZ/commit/fe7fe719c4f184ba6d89943cbd2be520cbe42541)) +* **io:** remove_dir_all unlinks symlinks instead of following them ([#3161](https://github.com/TechLateef/EZ/issues/3161)) ([d2e76e7](https://github.com/TechLateef/EZ/commit/d2e76e794cc7af506f361bdd26ee95e8d19c63ab)) +* **io:** return an error when io.make_dir_all's path is an existing regular file ([#2974](https://github.com/TechLateef/EZ/issues/2974)) ([0448f1d](https://github.com/TechLateef/EZ/commit/0448f1da1882179013f3e339549c87b9fa176c7d)) +* **io:** write functions report success when the data never reached the file ([#2831](https://github.com/TechLateef/EZ/issues/2831)) ([61592a8](https://github.com/TechLateef/EZ/commit/61592a894755428aad664e8bd4c02d78e905a865)) +* **json:** panic when json.parse gets a value of the wrong JSON type for a field ([#2911](https://github.com/TechLateef/EZ/issues/2911)) ([df03ce3](https://github.com/TechLateef/EZ/commit/df03ce3a133942837712744fe171f665842a6001)) +* **json:** panic when json.parse input is not a valid JSON document ([#2967](https://github.com/TechLateef/EZ/issues/2967)) ([04cfa05](https://github.com/TechLateef/EZ/commit/04cfa0541d754bc3cc0ff2d4e4a380ccfa35c108)) +* **json:** panic when json.parse reads a number or null into a bool field ([#2968](https://github.com/TechLateef/EZ/issues/2968)) ([a3b9a27](https://github.com/TechLateef/EZ/commit/a3b9a27c45cfc8f4a12cf66db9d1e0a590d7451a)) +* **json:** panic when json.parse reads a number outside the range of an f32 field ([#2910](https://github.com/TechLateef/EZ/issues/2910)) ([55cfc96](https://github.com/TechLateef/EZ/commit/55cfc96ef9c2d103605a6866f0f0e181af157d27)) +* **json:** panic when json.parse reads a number outside the range of an i128, u128, i256 or u256 field ([#2909](https://github.com/TechLateef/EZ/issues/2909)) ([b47c2c3](https://github.com/TechLateef/EZ/commit/b47c2c379c193741f957df1700168fa2f3f6e2cd)) +* **json:** panic when serializing a non-finite floating-point value ([#2969](https://github.com/TechLateef/EZ/issues/2969)) ([025f9ab](https://github.com/TechLateef/EZ/commit/025f9abaf89393562ad6d84c9a8abbae1515a601)) +* **math:** return the argument type from min, max and clamp ([#2866](https://github.com/TechLateef/EZ/issues/2866)) ([a106897](https://github.com/TechLateef/EZ/commit/a106897ea88d9fa79912ae545f82d57247db978c)) +* **math:** support i128, i256 and u128 arguments in abs and neg ([#2874](https://github.com/TechLateef/EZ/issues/2874)) ([e279e66](https://github.com/TechLateef/EZ/commit/e279e661e8d48959ef6b830c5032cb05267b6a34)) +* **net:** classify net.receive failures as Closed, Timeout or the system error ([#3049](https://github.com/TechLateef/EZ/issues/3049)) ([0e11b71](https://github.com/TechLateef/EZ/commit/0e11b7107cef97df7173c61cd2c4d36d1926a503)) +* **net:** write the whole string in send and report a failed write ([#3050](https://github.com/TechLateef/EZ/issues/3050)) ([77cbd9f](https://github.com/TechLateef/EZ/commit/77cbd9f2aa912002773bc79ac2587ae9f9f22dcb)) +* **os:** exec closes inherited file descriptors in the child ([#3175](https://github.com/TechLateef/EZ/issues/3175)) ([8ccd393](https://github.com/TechLateef/EZ/commit/8ccd39367437e2f96c1b34f33d134610a16954f9)) +* **os:** panic on an embedded NUL byte in os.exec's command or arguments ([#2970](https://github.com/TechLateef/EZ/issues/2970)) ([81666fa](https://github.com/TechLateef/EZ/commit/81666fa5edb00a6184260139827a9208194c2402)) +* **parser:** accept a bare return followed by a semicolon ([#2899](https://github.com/TechLateef/EZ/issues/2899)) ([e75087a](https://github.com/TechLateef/EZ/commit/e75087abddfa9794458afe90dd1d536234e7e7bf)) +* **parser:** accept a leading ';' after '{' in struct and enum bodies ([#2907](https://github.com/TechLateef/EZ/issues/2907)) ([e91c387](https://github.com/TechLateef/EZ/commit/e91c3871486c7f38140d9f918e458061a11fcde4)) +* **parser:** accept a lowercase type alias as the first type in a multi-value return ([#2850](https://github.com/TechLateef/EZ/issues/2850)) ([6821456](https://github.com/TechLateef/EZ/commit/6821456b45fa9a53d9549580342bf540d24edcc0)) +* **parser:** evaluate multi-name declaration initializers before binding any name ([6a03a6d](https://github.com/TechLateef/EZ/commit/6a03a6de5e8d7bec13e8e2eb36d00306de273d73)) +* **parser:** parse a fixed-size array of any element type ([#2841](https://github.com/TechLateef/EZ/issues/2841)) ([cc44edc](https://github.com/TechLateef/EZ/commit/cc44edc8a3bdb3e1f3843a3d8cf5102ffe241ea9)) +* **parser:** parse for_each over an index expression on a member chain ([#3203](https://github.com/TechLateef/EZ/issues/3203)) ([2e6c902](https://github.com/TechLateef/EZ/commit/2e6c902a8cd05c65e7c9a31efed94e378332b0d3)) +* **parser:** reject a default value on a mutable (&) parameter ([#3002](https://github.com/TechLateef/EZ/issues/3002)) ([d898aa8](https://github.com/TechLateef/EZ/commit/d898aa8b0454ef82c70a8c26d7c620d67595e5c8)) +* **parser:** reject long pointer type prefixes and binary operator chains instead of overflowing the stack ([#3099](https://github.com/TechLateef/EZ/issues/3099)) ([e5d963a](https://github.com/TechLateef/EZ/commit/e5d963a54f2556108522d0617bc98c2d40b5d380)) +* **parser:** return swallows the statement on the next line as its return value ([#2926](https://github.com/TechLateef/EZ/issues/2926)) ([41b00c9](https://github.com/TechLateef/EZ/commit/41b00c9f716813df7ff16efbec3b71bc1e66420d)) +* **parser:** stop an E3134 alias error from skipping the next declaration ([#2897](https://github.com/TechLateef/EZ/issues/2897)) ([8d1aba8](https://github.com/TechLateef/EZ/commit/8d1aba8ba6a42106be6c53ecbe68518d6f50fc0c)) +* **platform:** declare realpath on Linux under Clang ([e936be2](https://github.com/TechLateef/EZ/commit/e936be2fadf8ace48b7058996c701725242ca932)) +* **platform:** route the crash signal name through a platform helper ([#2881](https://github.com/TechLateef/EZ/issues/2881)) ([ac3cd1b](https://github.com/TechLateef/EZ/commit/ac3cd1b2fdd537854e960d8ee64c51614158450a)) +* **random:** panic when rand_i64, rand_f64 or rand_char get an empty range ([#2906](https://github.com/TechLateef/EZ/issues/2906)) ([1c286a7](https://github.com/TechLateef/EZ/commit/1c286a783f21f1f4dcc26bffa16ae73f36437c01)) +* **random:** panic with a dedicated code when choice gets an empty array ([#2905](https://github.com/TechLateef/EZ/issues/2905)) ([9ae2e02](https://github.com/TechLateef/EZ/commit/9ae2e02836d5cfca37e36177656a19e1ace620cc)) +* **regex:** match whole UTF-8 characters instead of bytes ([#2989](https://github.com/TechLateef/EZ/issues/2989)) ([600adab](https://github.com/TechLateef/EZ/commit/600adabc43363b868ab16cd430a5df9242bbd3de)) +* **regex:** support capture groups in the Windows regex shim ([#2880](https://github.com/TechLateef/EZ/issues/2880)) ([ad02d80](https://github.com/TechLateef/EZ/commit/ad02d8037045673143289bb4dfd45d173ad27514)) +* **runtime:** allow updating an existing key's value during map for_each ([#2979](https://github.com/TechLateef/EZ/issues/2979)) ([ce85547](https://github.com/TechLateef/EZ/commit/ce85547d05650c9b6aa6eeb3375e213a3a59e11a)) +* **runtime:** apply --arena-limit to thread and server connection arenas ([#3151](https://github.com/TechLateef/EZ/issues/3151)) ([45cdeb6](https://github.com/TechLateef/EZ/commit/45cdeb661c028401a9bcd126ed37ed0956e7c02f)) +* **runtime:** enforce --arena-limit in function, block and loop arenas ([#3150](https://github.com/TechLateef/EZ/issues/3150)) ([d2587bf](https://github.com/TechLateef/EZ/commit/d2587bfbfdd97f1ba3806e50220fa1f543cd4b52)) +* **runtime:** keep the recursion depth counter per thread ([#3201](https://github.com/TechLateef/EZ/issues/3201)) ([341772e](https://github.com/TechLateef/EZ/commit/341772ed10caf46a929d02d047c50ecc3da8e7a6)) +* **runtime:** panic instead of clamping when a string cast to i64 or u64 is out of range ([0020699](https://github.com/TechLateef/EZ/commit/00206992b848dd6068c53569345288a271e3e72e)) +* **runtime:** provide the atomic operations for TinyCC snapshots without stdatomic.h ([#3121](https://github.com/TechLateef/EZ/issues/3121)) ([db7a2a1](https://github.com/TechLateef/EZ/commit/db7a2a116004e5b93bac4dcc73460277b62c2a43)) +* **runtime:** reject trailing junk and parse whole input in string casts ([#3190](https://github.com/TechLateef/EZ/issues/3190)) ([f112e43](https://github.com/TechLateef/EZ/commit/f112e437a942388d073375949f8c4d9ff0fee0c6)) +* **scripts:** emit blank example lines in gray man instead of a stray comment marker ([#3111](https://github.com/TechLateef/EZ/issues/3111)) ([c15d3c9](https://github.com/TechLateef/EZ/commit/c15d3c972f4b5c8478af22de6f6811661fa1eaf2)) +* **server:** read the full request body before running the handler ([#3206](https://github.com/TechLateef/EZ/issues/3206)) ([a27fbb7](https://github.com/TechLateef/EZ/commit/a27fbb7710de730850587fd740a47c885a228fa1)) +* **server:** reject a request whose method or path contains a NUL byte ([#3173](https://github.com/TechLateef/EZ/issues/3173)) ([f69d6c0](https://github.com/TechLateef/EZ/commit/f69d6c0543e2df8dd4be3f995c4cec901f5fe5b2)) +* **sqlite:** keep the full text value when a query result contains an embedded NUL byte ([#2972](https://github.com/TechLateef/EZ/issues/2972)) ([e22d97b](https://github.com/TechLateef/EZ/commit/e22d97b44f852fb126de48592c78a7fb50b5de1e)) +* **stdlib:** declare getloadavg when the os module is built for Linux ([f72e994](https://github.com/TechLateef/EZ/commit/f72e9947fcf07a0f8bb0c76e1cbea83c08afbdb2)) +* **stdlib:** draw whole characters in random.rand_string and never return a surrogate from rand_char ([7948330](https://github.com/TechLateef/EZ/commit/7948330b4ad5e698088a8f6fb1d2d32ef6dfbd3c)) +* **stdlib:** drop glibc's regexec array size for TinyCC so regex.h parses ([#3126](https://github.com/TechLateef/EZ/issues/3126)) ([ac92a68](https://github.com/TechLateef/EZ/commit/ac92a683c7992e6a0acb82aca5c0d59bec428853)) +* **stdlib:** give server connection and spawned threads their own heap arena for new() ([#3107](https://github.com/TechLateef/EZ/issues/3107)) ([0484ff5](https://github.com/TechLateef/EZ/commit/0484ff517b6a4bb57d5a1d764ccecc623bdd5f2e)) +* **stdlib:** keep a spawned thread's used heap arena alive until the program exits ([#3122](https://github.com/TechLateef/EZ/issues/3122)) ([dff31cc](https://github.com/TechLateef/EZ/commit/dff31cca39076646ac84f597efd16c11923228cb)) +* **stdlib:** make http and server share one HttpResponse type ([#2886](https://github.com/TechLateef/EZ/issues/2886)) ([3c0331e](https://github.com/TechLateef/EZ/commit/3c0331ea11affd03dddc621804b0abdad0ee176d)) +* **stdlib:** panic on an embedded NUL byte in csv, sqlite, time and regex string arguments ([#2971](https://github.com/TechLateef/EZ/issues/2971)) ([8ca2dbe](https://github.com/TechLateef/EZ/commit/8ca2dbecf22448722c806f96b836c153a87a5300)) +* **stdlib:** panic when json.parse reads a mistyped array element or a non-array array field ([67de8f2](https://github.com/TechLateef/EZ/commit/67de8f23bcadbb5f03d6ae5460b939513ad5dcf9)) +* **stdlib:** panic when the random.roll_dice total overflows i64 ([a66edeb](https://github.com/TechLateef/EZ/commit/a66edebced20f767b5e841978945362923641b07)) +* **stdlib:** parse http URL authority by query and fragment and reject over-long parts as invalid input ([7280f35](https://github.com/TechLateef/EZ/commit/7280f35ccaa5f2d846b0e3ad4ffc7f5352211ced)) +* **stdlib:** parse the whole string in strconv to_i64, to_u64 and to_f64 ([#3188](https://github.com/TechLateef/EZ/issues/3188)) ([b8940c7](https://github.com/TechLateef/EZ/commit/b8940c7a1242e0b7f468bae775ccc76990ad8634)) +* **stdlib:** read io lines without getline on Windows ([28cb20e](https://github.com/TechLateef/EZ/commit/28cb20e85abb96e89d6ef25fb58369f31cb9a481)) +* **stdlib:** reject an embedded NUL byte in strconv number parsers and os env functions ([#2954](https://github.com/TechLateef/EZ/issues/2954)) ([ecb7d0d](https://github.com/TechLateef/EZ/commit/ecb7d0deeed8936273de609e72197df4eea00e2b)) +* **stdlib:** reject an http header value containing NUL as invalid input ([30bfdd0](https://github.com/TechLateef/EZ/commit/30bfdd020bef005f3a93ef33de3ef885c09c3cb4)) +* **stdlib:** reject an http URL containing a space or control byte as invalid input ([e6e5256](https://github.com/TechLateef/EZ/commit/e6e5256198ec59cf6aebb02b2f1a2ceb265a1e34)) +* **stdlib:** reject an http URL with a port outside 1-65535 or with userinfo as invalid input ([397f886](https://github.com/TechLateef/EZ/commit/397f886841783d1ed6fdf37f8f9003f4384ae459)) +* **stdlib:** reject hexadecimal float input in strconv.to_f64 ([#2955](https://github.com/TechLateef/EZ/issues/2955)) ([f293a2e](https://github.com/TechLateef/EZ/commit/f293a2e4fac9357917892d6a3bc683e421243dae)) +* **stdlib:** reject http request headers with CR, LF, or a non-token name ([a479f64](https://github.com/TechLateef/EZ/commit/a479f64f4945fa1f0f2a99a3cff7b11552b7c558)) +* **stdlib:** report random.roll_dice total overflow at the call site with its own panic code ([7f07788](https://github.com/TechLateef/EZ/commit/7f07788a10d1a594265c326da8ee72e473229fe6)) +* **stdlib:** report time arithmetic overflow at the call site with its own panic code ([4fa85e6](https://github.com/TechLateef/EZ/commit/4fa85e61b9d339434e010dd41106d4d10e995467)) +* **stdlib:** restrict the sys-relative libc header lookup under GCC to macOS ([354e1b2](https://github.com/TechLateef/EZ/commit/354e1b21753a72c1760265de11f4ebae51bbc6f1)) +* **stdlib:** size f64_to_fixed output from the formatted length ([#3189](https://github.com/TechLateef/EZ/issues/3189)) ([53fa0e9](https://github.com/TechLateef/EZ/commit/53fa0e9fe766a4cf9955e43152344a1884e3832f)) +* **stdlib:** step past shadowing headers through arpa so TinyCC reaches system headers on Debian layouts ([#3129](https://github.com/TechLateef/EZ/issues/3129)) ([5f1db13](https://github.com/TechLateef/EZ/commit/5f1db13f518c16e6e7223a4c06e2755709db55b9)) +* **stdlib:** step past shadowing strings.h when glibc string.h reaches it mid-runtime.h under TinyCC ([#3130](https://github.com/TechLateef/EZ/issues/3130)) ([1794e0a](https://github.com/TechLateef/EZ/commit/1794e0a4b36426010ae96e92d7caaf413b3a4179)) +* **stdlib:** step past the stdlib header directory under Clang when the runtime is built from source ([#3022](https://github.com/TechLateef/EZ/issues/3022)) ([66c2153](https://github.com/TechLateef/EZ/commit/66c21538302896e433cd3d6439c2547b4577d44a)) +* **stdlib:** store enum keys of arrays.counts at map-key width ([ab146d2](https://github.com/TechLateef/EZ/commit/ab146d2332cf6925a9d40b1629897bf7622a0bd3)) +* **stdlib:** use gray overflow wrappers in time duration parsing ([6e49916](https://github.com/TechLateef/EZ/commit/6e4991614ff34c38025b9b0941dab29e44ac7050)) +* **stdlib:** use the portable overflow helpers so programs build with tcc ([#3118](https://github.com/TechLateef/EZ/issues/3118)) ([d0c1adb](https://github.com/TechLateef/EZ/commit/d0c1adbc4ef8b7af98a1b8f1ba230b9dbab01fae)) +* **stdlib:** write f32 and f64 values in json.encode with enough digits to round-trip ([5b3c369](https://github.com/TechLateef/EZ/commit/5b3c36955882c7510938b96e9802252d20435fa1)) +* **strconv:** reject a 0x prefix in base 16 and a nan(...) payload ([#2975](https://github.com/TechLateef/EZ/issues/2975)) ([5787dda](https://github.com/TechLateef/EZ/commit/5787dda3ba3b60b00b28f9bf8a3becd9011e88de)) +* **strings:** reverse by character so a multi-byte character stays valid UTF-8 ([#2976](https://github.com/TechLateef/EZ/issues/2976)) ([e1054e6](https://github.com/TechLateef/EZ/commit/e1054e67c1136a06cbc065dbe77625ba40b5a35d)) +* **tests:** mark unsafe calls in tests and reword E5065 as 'unsafe function' ([b91372d](https://github.com/TechLateef/EZ/commit/b91372d186d79f3024757a3b4ae7a19f179c2619)) +* **tests:** redirect stdin by descriptor so test_stdlib builds on mingw ([#3124](https://github.com/TechLateef/EZ/issues/3124)) ([173f59b](https://github.com/TechLateef/EZ/commit/173f59b6093173a6bbec004bcec40b414ed7017f)) +* **tests:** update codegen e2e tests to the one-signature error and threads.spawn ([bc52de3](https://github.com/TechLateef/EZ/commit/bc52de36763828413289febf5e171deae5dfc092)) +* **time:** panic or error on i64 overflow in add_days, add_hours, start_of_day, end_of_day and parse_duration ([#2990](https://github.com/TechLateef/EZ/issues/2990)) ([ec8febf](https://github.com/TechLateef/EZ/commit/ec8febfcf18c6767b691fd1499789c6ded1f6350)) +* **time:** panic when a timestamp is outside the range gmtime supports ([#2965](https://github.com/TechLateef/EZ/issues/2965)) ([2d473c9](https://github.com/TechLateef/EZ/commit/2d473c916d3a4cd5b630b9ce97f1a7e438cd7ab7)) +* **typechecker:** #json struct fields accept nested #json structs and arrays ([#2759](https://github.com/TechLateef/EZ/issues/2759)) ([7a86492](https://github.com/TechLateef/EZ/commit/7a86492fc11a173ad2f83e2eb67516fadddc14d5)) +* **typechecker:** accept a #json struct declared in an imported module in json.encode and json.parse ([6a353ae](https://github.com/TechLateef/EZ/commit/6a353ae527fb839d5a7160df711dd87f8beb37eb)) +* **typechecker:** accept a func-typed value as an arrays callback argument ([c4e58ac](https://github.com/TechLateef/EZ/commit/c4e58ac01cfdb7c3090444707b0de214c9e417eb)) +* **typechecker:** accept a mutable-receiver call through a const pointer to a mutable variable ([#2998](https://github.com/TechLateef/EZ/issues/2998)) ([45b03e4](https://github.com/TechLateef/EZ/commit/45b03e406cedbab3f9b73cc7f9ef0cb1638f07ae)) +* **typechecker:** accept an f32 literal that rounds to the largest finite f32 ([#2947](https://github.com/TechLateef/EZ/issues/2947)) ([cd35e7e](https://github.com/TechLateef/EZ/commit/cd35e7ec91a5deb11737b2e0ffe8702b25dcce46)) +* **typechecker:** allow cast from string to i128, u128, i256 and u256 ([#2921](https://github.com/TechLateef/EZ/issues/2921)) ([32675f2](https://github.com/TechLateef/EZ/commit/32675f210a849cae0863fb1f1db9722015cfa377)) +* **typechecker:** call a no-self struct function through an expression receiver and evaluate the receiver ([#3001](https://github.com/TechLateef/EZ/issues/3001)) ([fab2451](https://github.com/TechLateef/EZ/commit/fab2451cd798a2578eb946d735f2256a8a8faa53)) +* **typechecker:** check a module-qualified arrays callback's signature ([97d7c74](https://github.com/TechLateef/EZ/commit/97d7c745892019b7fb5f7ef3e80cf067e8e7009e)) +* **typechecker:** check func-typed generic parameter arguments against the bound type ([#3026](https://github.com/TechLateef/EZ/issues/3026)) ([25568d5](https://github.com/TechLateef/EZ/commit/25568d535c60dbdfe1fe13aee1f2ca583ff8e5f7)) +* **typechecker:** check maps.sorted_keys key type at each generic instantiation ([6215f24](https://github.com/TechLateef/EZ/commit/6215f248986c549b56194e08fdc99e0fcab22469)) +* **typechecker:** check the function signature passed to threads spawn and spawn_arg ([#2889](https://github.com/TechLateef/EZ/issues/2889)) ([2587ebc](https://github.com/TechLateef/EZ/commit/2587ebc9bfce341e60048d53b198b66ecd595ff2)) +* **typechecker:** check the handle, pointer and number arguments of the sync, threads, atomic, mem, sqlite and server functions ([#2916](https://github.com/TechLateef/EZ/issues/2916)) ([181c7f4](https://github.com/TechLateef/EZ/commit/181c7f440bb79cc1827015af792043316bc9ea12)) +* **typechecker:** check the key, value and map arguments of the maps functions ([#2915](https://github.com/TechLateef/EZ/issues/2915)) ([85ead06](https://github.com/TechLateef/EZ/commit/85ead06243ab3180a97bccd43fd252f7265791bd)) +* **typechecker:** clear a label's reference flags when a member access is rewritten into one ([#3125](https://github.com/TechLateef/EZ/issues/3125)) ([717fa33](https://github.com/TechLateef/EZ/commit/717fa33657f66247fa2cfea510dec45e54ee736c)) +* **typechecker:** compare every enum variant's value for duplicates ([#3186](https://github.com/TechLateef/EZ/issues/3186)) ([4c4d4cc](https://github.com/TechLateef/EZ/commit/4c4d4cc5c6d4f0e7ce33c2f4ddae5eec2fcedf80)) +* **typechecker:** convert a wide integer stored into a floating-point slot ([#2901](https://github.com/TechLateef/EZ/issues/2901)) ([51a0b44](https://github.com/TechLateef/EZ/commit/51a0b4462a19fc97f79550564d11d755d316b1bf)) +* **typechecker:** declare a local initialized with cast to a type parameter ([#3142](https://github.com/TechLateef/EZ/issues/3142)) ([f01a441](https://github.com/TechLateef/EZ/commit/f01a441d2acd62f43ccc66e94371ef951d8b30c6)) +* **typechecker:** detect duplicate map keys and when cases written as constants ([#3031](https://github.com/TechLateef/EZ/issues/3031)) ([2f54c0f](https://github.com/TechLateef/EZ/commit/2f54c0f020cbd64923a23168e998240290b422ae)) +* **typechecker:** dispatch instance struct function calls on a struct literal receiver ([#3137](https://github.com/TechLateef/EZ/issues/3137)) ([3a04630](https://github.com/TechLateef/EZ/commit/3a04630e24ba6c8fc950a30811f82d13da7d3dfe)) +* **typechecker:** do not treat a loop that contains a break as returning on every path ([fe54b5e](https://github.com/TechLateef/EZ/commit/fe54b5e015752b9a682c04f53c5e34b8c13f4c9e)) +* **typechecker:** emit registry messages for E7015 and the non-call or_* operand (E3211) ([2673ae2](https://github.com/TechLateef/EZ/commit/2673ae21b26904d4505c77f4938dd397abcd7794)) +* **typechecker:** enforce signedness for 128- and 256-bit integers in fmt %d and %u directives ([6d582ff](https://github.com/TechLateef/EZ/commit/6d582fffeee7c2ca691fdad10a65a5f3281c2d08)) +* **typechecker:** ensure with a multi-value call reports E5011 instead of E3040 advice that cannot apply ([#2932](https://github.com/TechLateef/EZ/issues/2932)) ([0530ba3](https://github.com/TechLateef/EZ/commit/0530ba30e67541d3550193f31234d7ae2063fbcb)) +* **typechecker:** for_each with both positions discarded warns its collection is unused ([#2927](https://github.com/TechLateef/EZ/issues/2927)) ([e6f590c](https://github.com/TechLateef/EZ/commit/e6f590c8c389a1505dd8d671cb766a4f27173477)) +* **typechecker:** give a narrow operand combined with a wide integer the wide type ([73c6160](https://github.com/TechLateef/EZ/commit/73c6160a7287ed1a084958190a9d1cb4d42abb4e)) +* **typechecker:** hide a multi-name declaration's earlier names from its file-scope initializers ([3abad46](https://github.com/TechLateef/EZ/commit/3abad460fcf244854dfab46294b50b5e478830e8)) +* **typechecker:** keep the flattened-key shadow check for a function of the local's own module ([#3146](https://github.com/TechLateef/EZ/issues/3146)) ([641ee03](https://github.com/TechLateef/EZ/commit/641ee036ec3a30a08fddf4f7859ac5f765b4699e)) +* **typechecker:** mixed number types in a stdlib call report E5057 once ([7b26ff8](https://github.com/TechLateef/EZ/commit/7b26ff831cd07e7486a04b91068d7f5ad69e0a11)) +* **typechecker:** move diagnostic messages into error_codes.h ([#2890](https://github.com/TechLateef/EZ/issues/2890)) ([26f2184](https://github.com/TechLateef/EZ/commit/26f21844c1825e73a67da3b862a840347f10125e)) +* **typechecker:** print the declared name of an imported type in E3043 ([0050c56](https://github.com/TechLateef/EZ/commit/0050c564d528dd5c79a41e853653366cf5a82103)) +* **typechecker:** print the whole fixed-size array type in E3054 ([#2894](https://github.com/TechLateef/EZ/issues/2894)) ([0ebcb1a](https://github.com/TechLateef/EZ/commit/0ebcb1a15ebfddcb95042353340d2fe10515e6c6)) +* **typechecker:** record pointer origin for a variable declared without mut ([#3176](https://github.com/TechLateef/EZ/issues/3176)) ([20ed9ac](https://github.com/TechLateef/EZ/commit/20ed9acbc5e461857463b787e10c3f5371209257)) +* **typechecker:** reject {} for a map-typed struct literal field ([bbc842a](https://github.com/TechLateef/EZ/commit/bbc842a4d3645efd4703b010c8b450279fd240a4)) +* **typechecker:** reject {} where a map is expected in a return, assignment, argument, stdlib default or map element ([aabdb78](https://github.com/TechLateef/EZ/commit/aabdb7852d14d89e883f1de4ca5f5439c6d0666a)) +* **typechecker:** reject a bool as an integer in call arguments and comparisons ([#2983](https://github.com/TechLateef/EZ/issues/2983)) ([fb7aa73](https://github.com/TechLateef/EZ/commit/fb7aa734a6ddfc795a5095101721f9acab0e6d11)) +* **typechecker:** reject a bool source in wide-integer constructors ([66d8de6](https://github.com/TechLateef/EZ/commit/66d8de60ba5619192b17b91e258c4e22d8e74806)) +* **typechecker:** reject a discarded arrays.find, maps.find_key or maps.get_and_remove result ([a4ec1eb](https://github.com/TechLateef/EZ/commit/a4ec1eba4717b6194b7dd159e903b77c070dfcc0)) +* **typechecker:** reject a field or element of a temporary passed to a mutable parameter ([1d24d24](https://github.com/TechLateef/EZ/commit/1d24d24fc6cc1001cb336b5c7cdfca7081a7dcdf)) +* **typechecker:** reject a generic parameter name used as a value ([#3154](https://github.com/TechLateef/EZ/issues/3154)) ([751bd02](https://github.com/TechLateef/EZ/commit/751bd0250facb772233874afc6cd094af48509e0)) +* **typechecker:** reject a literal or call result passed to a stdlib mutable parameter ([af9618a](https://github.com/TechLateef/EZ/commit/af9618a90549bb2eae2b43d3a58b1db59fe0cd85)) +* **typechecker:** reject a local declared with a parameter's name at function-body level ([#2960](https://github.com/TechLateef/EZ/issues/2960)) ([d0c15fd](https://github.com/TechLateef/EZ/commit/d0c15fd43ea6df1c7ad0b2d15523c1a5b2682c02)) +* **typechecker:** reject a local redeclaring a generic parameter's name in the same scope ([#3030](https://github.com/TechLateef/EZ/issues/3030)) ([f7a6d1f](https://github.com/TechLateef/EZ/commit/f7a6d1f643f0795c537525166a22a8e4707463b4)) +* **typechecker:** reject a mutable-receiver call through a pointer to a const variable ([#2997](https://github.com/TechLateef/EZ/issues/2997)) ([c2e7709](https://github.com/TechLateef/EZ/commit/c2e7709d77c392dbe5da63828eff65704b68de92)) +* **typechecker:** reject a nil source in bool() and wide-integer constructors ([26e1546](https://github.com/TechLateef/EZ/commit/26e154644ec1ef0a8e075d381dd55cace4c4950e)) +* **typechecker:** reject a non-bool condition in if, or and as_long_as ([#2984](https://github.com/TechLateef/EZ/issues/2984)) ([6dbd088](https://github.com/TechLateef/EZ/commit/6dbd0880dd6764ecac12ec0938e2dcd53a4ca556)) +* **typechecker:** reject a nonexistent struct function reached through an imported module ([#3000](https://github.com/TechLateef/EZ/issues/3000)) ([78a0147](https://github.com/TechLateef/EZ/commit/78a0147ae971d621656b94cbe3c0e01e8c9b247f)) +* **typechecker:** reject a one-argument random.rand_f64 or random.rand_char call with E5008 ([#2882](https://github.com/TechLateef/EZ/issues/2882)) ([0285832](https://github.com/TechLateef/EZ/commit/028583254d749ccad4c360c7839c6827de26da07)) +* **typechecker:** reject a private type used as a generic type argument ([#3027](https://github.com/TechLateef/EZ/issues/3027)) ([f746580](https://github.com/TechLateef/EZ/commit/f74658045c5dd1080f2779babd4cbcbf911bb536)) +* **typechecker:** reject a single return value discarded by defer and ensure ([#2953](https://github.com/TechLateef/EZ/issues/2953)) ([2abd6f7](https://github.com/TechLateef/EZ/commit/2abd6f7e78fc2d48af8892de13d6f339c53413b9)) +* **typechecker:** reject a struct function or module function used as a value ([#2999](https://github.com/TechLateef/EZ/issues/2999)) ([0940ca3](https://github.com/TechLateef/EZ/commit/0940ca3cd0b209b7922edcb40ff8ad02f4b2e248)) +* **typechecker:** reject an alias whose target is not a type ([#2891](https://github.com/TechLateef/EZ/issues/2891)) ([3255738](https://github.com/TechLateef/EZ/commit/3255738323d209eae294482abac6922dec7fc348)) +* **typechecker:** reject an integer in a struct-typed struct field initializer ([#2980](https://github.com/TechLateef/EZ/issues/2980)) ([4610cb3](https://github.com/TechLateef/EZ/commit/4610cb31c614e275dd2e1827c3269c076e3508a0)) +* **typechecker:** reject an integer where a struct is expected in call arguments, generic arguments and assignment ([#2981](https://github.com/TechLateef/EZ/issues/2981)) ([3e0c229](https://github.com/TechLateef/EZ/commit/3e0c22972a1dac73cf0315908c6492bf332dc0ba)) +* **typechecker:** reject calls through a bare func array element, map value, or loop variable ([#2963](https://github.com/TechLateef/EZ/issues/2963)) ([0efaf9a](https://github.com/TechLateef/EZ/commit/0efaf9ac7aa306b7e2433a1e64677ee226b57ca1)) +* **typechecker:** reject defer inside an unsafe block ([8edce5b](https://github.com/TechLateef/EZ/commit/8edce5bdc96b7d666b42224cb5a5b3d097b018fd)) +* **typechecker:** reject enum values outside the i64 range ([#3187](https://github.com/TechLateef/EZ/issues/3187)) ([c1c5547](https://github.com/TechLateef/EZ/commit/c1c55470dc7ec2ee9c98de36760f5082f54331cb)) +* **typechecker:** reject Error values in array and map literals without a declared type ([#2943](https://github.com/TechLateef/EZ/issues/2943)) ([4ad5f03](https://github.com/TechLateef/EZ/commit/4ad5f03d3256eb9428ed23290a1ca61e2a622079)) +* **typechecker:** reject fallible and multi-value calls as operands of unary operators, range(), cast(), and member access ([#2931](https://github.com/TechLateef/EZ/issues/2931)) ([5ec77b5](https://github.com/TechLateef/EZ/commit/5ec77b5396ae602f10f7699478a3052580bae09f)) +* **typechecker:** reject implicit conversion of an enum value to an integer or string ([#3007](https://github.com/TechLateef/EZ/issues/3007)) ([056a4aa](https://github.com/TechLateef/EZ/commit/056a4aac3e1450b1473bb1c4887b6f88f0f06e40)) +* **typechecker:** reject json.parse as the initializer of an untyped declaration ([c3794a7](https://github.com/TechLateef/EZ/commit/c3794a77ee0b51f44d3b41d5e3010fb81c83fe2c)) +* **typechecker:** reject json.parse outside a declaration or return value ([557f5a7](https://github.com/TechLateef/EZ/commit/557f5a769f3e394ce7c2e6631b02d1db9488d6f1)) +* **typechecker:** reject len() on a user struct named Builder or Channel when its module is not imported ([b8a5082](https://github.com/TechLateef/EZ/commit/b8a5082d3a346bce6d0a387fe4194abb02a720af)) +* **typechecker:** reject mutating arrays and maps functions on a container reached through a const field or index ([#2956](https://github.com/TechLateef/EZ/issues/2956)) ([023bf52](https://github.com/TechLateef/EZ/commit/023bf523b8be18c76feca3799ada3624cfc83340)) +* **typechecker:** reject or_panic, or_default and or_return on a non-call operand ([7062d2a](https://github.com/TechLateef/EZ/commit/7062d2a29ea732ece400b4464cc3e57c6951cfe4)) +* **typechecker:** reject print and println of a composite containing a tagged enum ([#2938](https://github.com/TechLateef/EZ/issues/2938)) ([d33dd07](https://github.com/TechLateef/EZ/commit/d33dd07734b626f07af9be06a38839815e89f786)) +* **typechecker:** reject returning a wide integer as a narrower or differently signed integer ([ea44ea3](https://github.com/TechLateef/EZ/commit/ea44ea3926d4455459a098b3ff1bb01b506a7243)) +* **typechecker:** reject SourceLocation struct literals ([#3074](https://github.com/TechLateef/EZ/issues/3074)) ([9f4c32f](https://github.com/TechLateef/EZ/commit/9f4c32f52c35b9f5f39ae4882a497410edd4b059)) +* **typechecker:** reject tagged enum, string and nil sources in cast, string(), bool() and wide-integer constructors ([#2995](https://github.com/TechLateef/EZ/issues/2995)) ([9a09567](https://github.com/TechLateef/EZ/commit/9a09567771d57185928cc8f076175ab40cc2088a)) +* **typechecker:** reject when cases made unreachable by an earlier range ([#3194](https://github.com/TechLateef/EZ/issues/3194)) ([899beb5](https://github.com/TechLateef/EZ/commit/899beb557bf00785721c194a58cd748d6fd3f08b)) +* **typechecker:** report a pointer-depth return mismatch once ([#2896](https://github.com/TechLateef/EZ/issues/2896)) ([734bf67](https://github.com/TechLateef/EZ/commit/734bf67ce32dc5c7672000d8307d107b48ec7513)) +* **typechecker:** report an f64 strings.repeat count or strings.slice bound once ([#2878](https://github.com/TechLateef/EZ/issues/2878)) ([2dec0a7](https://github.com/TechLateef/EZ/commit/2dec0a76f3214d7e02594c85957b438282951b6e)) +* **typechecker:** report an import after a declaration with its own error code ([#2959](https://github.com/TechLateef/EZ/issues/2959)) ([7b2faa0](https://github.com/TechLateef/EZ/commit/7b2faa08170ed0962a0c86ab4195ff127622dbbc)) +* **typechecker:** report an undefined parameter or return type inside a func(...) type with E4016 ([#2854](https://github.com/TechLateef/EZ/issues/2854)) ([68f5f66](https://github.com/TechLateef/EZ/commit/68f5f6621e8bce23432bd79cafef491642ea60e5)) +* **typechecker:** report E4016 for an undefined tagged enum payload type ([#2853](https://github.com/TechLateef/EZ/issues/2853)) ([2e0f0d7](https://github.com/TechLateef/EZ/commit/2e0f0d7d0e187f9ff53b56260cbf8f4168ec9ee3)) +* **typechecker:** report E4031 for a variable, constant, struct or enum name that two using modules both declare ([#2798](https://github.com/TechLateef/EZ/issues/2798)) ([9c796c4](https://github.com/TechLateef/EZ/commit/9c796c4e5d5209f948f1ac97feacdd4e17cf429f)) +* **typechecker:** report one error for a multi-value call returned from a multi-value function ([#2933](https://github.com/TechLateef/EZ/issues/2933)) ([57d265e](https://github.com/TechLateef/EZ/commit/57d265ea9b78a779f356d6a8e45713ffd58f3206)) +* **typechecker:** require [u8] for the binary decode functions ([#2913](https://github.com/TechLateef/EZ/issues/2913)) ([ac738ad](https://github.com/TechLateef/EZ/commit/ac738adcc44f6480f87e7741dcbf7f52313ac9ad)) +* **typechecker:** require a ^i64 pointer argument for the 64-bit atomic functions ([#2868](https://github.com/TechLateef/EZ/issues/2868)) ([82d6311](https://github.com/TechLateef/EZ/commit/82d6311467e5c1cc7bdec31f891f8c31c081e1f9)) +* **typechecker:** require bool operands for && and || ([#3181](https://github.com/TechLateef/EZ/issues/3181)) ([f6d1696](https://github.com/TechLateef/EZ/commit/f6d1696805fecaeb579e52d4ed67a26ba411176b)) +* **typechecker:** resolve the function a local shadows from the declaring file's scope ([#3146](https://github.com/TechLateef/EZ/issues/3146)) ([dc188e5](https://github.com/TechLateef/EZ/commit/dc188e5daf63616139a7ed2407d3ce4d60a3a21b)) +* **typechecker:** run range() over u64 bounds in u64 ([#3185](https://github.com/TechLateef/EZ/issues/3185)) ([10428d7](https://github.com/TechLateef/EZ/commit/10428d7b02204e28b8235f60b5dc68cebe64ac4a)) +* **typechecker:** size the function-reference signature buffer to its text ([#3162](https://github.com/TechLateef/EZ/issues/3162)) ([ebf1ad8](https://github.com/TechLateef/EZ/commit/ebf1ad8cbfd1a329c50fa9cbf3a05d9d676fe409)) +* **typechecker:** suggest or_default instead of or_panic when a multi-value fallible call is unhandled ([799eb65](https://github.com/TechLateef/EZ/commit/799eb654877b65bda27ea61c98e32412dd1a2321)) +* **typechecker:** tagged enum variant with a pointer payload cannot be constructed from another module ([#2929](https://github.com/TechLateef/EZ/issues/2929)) ([49e1034](https://github.com/TechLateef/EZ/commit/49e1034f2156da93bfbfee8f2de7c871fd565d2a)) +* **typechecker:** type a literal as the wide integer binary encode functions take ([#2914](https://github.com/TechLateef/EZ/issues/2914)) ([68a6a8b](https://github.com/TechLateef/EZ/commit/68a6a8ba4952374f281ec3169c7742bbd87585a1)) +* **typechecker:** type Enum.names() and Enum.variants() when the enum is declared in an imported module ([5d2e032](https://github.com/TechLateef/EZ/commit/5d2e03264913dbb0384c4a356934ece20d302031)) +* **typechecker:** type or reject an arrays call whose result derives from an empty literal ([#2964](https://github.com/TechLateef/EZ/issues/2964)) ([a4295b2](https://github.com/TechLateef/EZ/commit/a4295b260f606ec13eda69195929ffb25b94621c)) +* **typechecker:** type the tuple result of a module-qualified generic call by its type argument ([#3141](https://github.com/TechLateef/EZ/issues/3141)) ([2ab934c](https://github.com/TechLateef/EZ/commit/2ab934c6a23817515ee92a61cf922c2cfd5c899c)) +* **typechecker:** type-check assignments through a map element or an element's field ([#2982](https://github.com/TechLateef/EZ/issues/2982)) ([f4269f8](https://github.com/TechLateef/EZ/commit/f4269f8565934fd62bb60d40c3db56e1a9a6269f)) +* **typechecker:** warn on a deprecated type in container, pointer, new, size_of, generic and alias positions ([#3029](https://github.com/TechLateef/EZ/issues/3029)) ([cde660f](https://github.com/TechLateef/EZ/commit/cde660f136fee6848de4e9a971a0931944eacc8d)) +* **typechecker:** warn on unused variables in nested blocks and position each multi-name declaration at its name ([f8cf661](https://github.com/TechLateef/EZ/commit/f8cf66139a9d0662d26cdf373a5ed10bd91daadc)) +* **typechecker:** warn W1001 on a variable that is only written, never read ([aea1044](https://github.com/TechLateef/EZ/commit/aea1044d6ce5f9d8aa0befe43185aee48b54d0fa)) +* **typechecker:** word E7015 so a user struct named like a stdlib type is not read as listed ([a89754b](https://github.com/TechLateef/EZ/commit/a89754b19277cfbfa1983fdd9a9ff529a27fc68a)) + + +### Performance Improvements + +* **codegen:** skip per-call arenas for self-recursive and call-composed allocation-free functions ([#2710](https://github.com/TechLateef/EZ/issues/2710)) ([153f0c9](https://github.com/TechLateef/EZ/commit/153f0c98cbf1172f0633b931747b3018a4f0d78a)) +* **driver:** default to -O3 when the C compiler is GCC ([#3020](https://github.com/TechLateef/EZ/issues/3020)) ([9e42a4f](https://github.com/TechLateef/EZ/commit/9e42a4f55b4e104b4fa36915eb67ba838ecf6e51)) +* **driver:** reuse a cached runtime archive for a --cc compiler ([#3021](https://github.com/TechLateef/EZ/issues/3021)) ([8812855](https://github.com/TechLateef/EZ/commit/881285541c21519f25479787f7d68cca07e29337)) +* **grayc:** build the gcc runtime archive at -O3 ([#3159](https://github.com/TechLateef/EZ/issues/3159)) ([a493e83](https://github.com/TechLateef/EZ/commit/a493e8351370aead23ba5a112205363c64a5fbe8)) +* **grayc:** cache a runtime archive for tcc builds ([#3156](https://github.com/TechLateef/EZ/issues/3156)) ([42800ce](https://github.com/TechLateef/EZ/commit/42800cef837c5692051980d66a04cb899a8a4e84)) +* **json:** copy unescaped runs with memcpy in json_append_escaped ([#3024](https://github.com/TechLateef/EZ/issues/3024)) ([726f3bf](https://github.com/TechLateef/EZ/commit/726f3bf8c0e2e43889ddfefbd6c0dbd8e9ae23aa)) +* **runtime:** count arena allocations with a flag on the arena ([#3025](https://github.com/TechLateef/EZ/issues/3025)) ([06088f4](https://github.com/TechLateef/EZ/commit/06088f4fc8f35cb5351a91977260d02425d0e710)) +* **runtime:** cut per-thread state lookups under TCC ([#3019](https://github.com/TechLateef/EZ/issues/3019)) ([901ec8a](https://github.com/TechLateef/EZ/commit/901ec8a0a099f1ad34ab05bb52fa942c12d6ab6d)) +* **runtime:** use a sign test for tcc overflow-checked add and sub ([#3157](https://github.com/TechLateef/EZ/issues/3157)) ([5d4241e](https://github.com/TechLateef/EZ/commit/5d4241e6f40f719168c5505339e49699c0e3fb86)) +* **strings:** find candidates with memchr in search, split and replace ([#3023](https://github.com/TechLateef/EZ/issues/3023)) ([85fd2eb](https://github.com/TechLateef/EZ/commit/85fd2eb2a60585a602dd7cc9e51efb26d2d16ecf)) +* **typechecker:** index file-scope const integers in a hash table instead of scanning them linearly ([5836cd1](https://github.com/TechLateef/EZ/commit/5836cd1ca5bf35d5c6dbcba5546858892c2a6440)) + ## [0.12.3](https://github.com/grayscale-lang/grayscale/compare/grayscale-v0.12.2...grayscale-v0.12.3) (2026-10-20)