v0.2.0-beta
·
339 commits
to main
since this release
What's Changed
- update docs by @cs01 in #72
- fix json.stringify for inline object literals with booleans and numbers by @cs01 in #73
- json stringify with mixed-type variables and type assertions by @cs01 in #74
- add ast-dump subcommand and parser parity tests by @cs01 in #76
- HTTP Usability: Router + improved exec by @cs01 in #71
- error on getter/setter methods in class declarations by @cs01 in #77
- add semantic pass to validate inline type assertion field order by @cs01 in #78
- add chadscript/* stdlib module resolution (router, argparse, http-utils) by @cs01 in #79
- JSON.stringify Runtime Error Prevention by @cs01 in #80
- Worktree staged singing lighthouse by @cs01 in #81
- consolidate http apis into chadscript/http module by @cs01 in #84
- Router and JSON auto-serialization fixes by @cs01 in #82
- add Router to chadscript/http, fix routing bugs, restructure docs by @cs01 in #86
- add generic class and function support by @cs01 in #83
- Worktree docs update by @cs01 in #87
- Json array support by @cs01 in #90
- Type keyword support by @cs01 in #89
- fix examples: http-server and websocket by @cs01 in #91
- Disallow var by @cs01 in #92
- add named type assertion checker to catch wrong-indexed subset types by @cs01 in #88
- readme: accuracy fixes + timeval platform fix + float i64 promotion fix by @cs01 in #95
- binary http body: bodyBytes(), Buffer.from base64, serveFile, remove body size limit by @cs01 in #94
- sqlite: getRow(), parameterized query types/docs, fix interface method_call alloc by @cs01 in #96
- Benchmarks by @cs01 in #97
- req.queryString: expose query string from http requests by @cs01 in #100
- remove router.compile dead code, fix http docs, add uint8array doc, f… by @cs01 in #101
- crypto.hmacSha256: add hmac-sha256 signing primitive by @cs01 in #102
- c.json(): accept any value, auto-serialize objects/arrays by @cs01 in #103
- json stringify: nested interfaces, llvm-type resolution, member_access dispatch by @cs01 in #99
- add console.error and console.warn (stderr output) by @cs01 in #105
- docs: consolidate http-server and embed pages, promote router-first by @cs01 in #106
- Ci test fix by @cs01 in #98
- add url and urlsearchparams classes with c bridge by @cs01 in #107
- Feat/btoa uri pbkdf2 by @cs01 in #104
- escape analysis for automatic stack allocation of local objects by @cs01 in #109
- fix: replace inline anonymous type assertions with named ast types in… by @cs01 in #110
- feat: conditional srand48/cs_time_ms startup calls + usesGC infrastructure by @cs01 in #108
- refactor: discriminated union narrowing in closure-analyzer by @cs01 in #111
- refactor: extract named-object dispatch into sub-module by @cs01 in #113
- fix: use getAllInterfaceFields to include inherited fields in interface codegen by @cs01 in #114
- fix: use getAllInterfaceFields in control-flow.ts for inherited fields by @cs01 in #115
- fix: annotate let x = -1 with : number to prevent native compiler mistype by @cs01 in #116
- fix: getAllInterfaceFields in remaining codegen sites + fneg type tracking by @cs01 in #118
- fix: track terminator status after fully-terminating if/else in generateBlock by @cs01 in #120
- fix: use getAllInterfaceFields in variable-allocator interface field lookups by @cs01 in #119
- fix: replace slice(0, -1) with slice(0, len-1) across codegen by @cs01 in #117
- fix: use ctx.getAllInterfaceFields in class-dispatch for inherited interface fields by @cs01 in #121
- fix: use getAllInterfaceFields for function interface parameter metadata by @cs01 in #122
- fix: use getAllInterfaceFields in type-resolver for inherited interface fields by @cs01 in #123
- fix: use getAllInterfaceFields in findInterfaceByDiscriminant for inherited discriminant fields by @cs01 in #125
- fix: use getAllInterfaceFields in getUnionCommonFields for inherited interface fields by @cs01 in #124
- refactor: extract if-chains from dispatchNamedObject to prevent if-drop bug by @cs01 in #126
- refactor: extract string and array dispatch chains from generate() by @cs01 in #127
- fix: replace remaining inline type assertions with named types by @cs01 in #128
- refactor: extract expression dispatch chains from orchestrator by @cs01 in #129
- fix: use getAllInterfaceFields in type-inference getInterfaceProperty by @cs01 in #130
- fix: handle negative indices in array slice by @cs01 in #131
- fix: extract loadFieldValue if-chain to prevent if-drop bug by @cs01 in #132
- fix: split named-object-dispatch if-chains to prevent if-drop bug by @cs01 in #133
- fix: split infrastructure if-chains to prevent if-drop bug by @cs01 in #134
- fix: split type-inference and codegen if-chains for if-drop bug by @cs01 in #135
- fix: use getAllInterfaceFields for http handler return type by @cs01 in #136
- fix: split if-return chains in string-dispatch and type-system by @cs01 in #137
- fix: split discriminant and resolvedTypeToLlvm if-chains by @cs01 in #138
- fix: object destructuring from function calls by @cs01 in #139
- fix: index access on function call results by @cs01 in #140
- fix: annotate let x = -1 with : number type by @cs01 in #141
- fix: split long if-return chains to prevent if-drop bug by @cs01 in #142
- fix: split if-return chains in type-inference.ts by @cs01 in #143
- fix: propagate ?. optional chaining to method call nodes in native parser by @cs01 in #144
- fix: replace nested inline type assertions with named ast types by @cs01 in #145
- fix: replace silent 0.0 fallbacks with compile errors in member access by @cs01 in #146
- fix: remove 82 unnecessary as-unknown-as double casts in escape-analysis by @cs01 in #147
- fix: compile-time errors for silent map/set method dispatch fallthroughs by @cs01 in #148
- fix: replace catch-all else branches with explicit method checks in map/set dispatch by @cs01 in #149
- fix: remove unnecessary double casts in json, json-array, and variable-allocator by @cs01 in #150
- fix: add return before emitError to prevent dead code execution in native compiler by @cs01 in #151
- fix: split long if-return chains to prevent if-drop bug by @cs01 in #152
- fix: replace for-of on getAllInterfaceFields with index loops by @cs01 in #153
- fix: emit error instead of null for unsupported module method calls by @cs01 in #154
- fix: emit error instead of silent null for unknown class in new expression by @cs01 in #155
- fix: add null checks for getInterface() before getAllInterfaceFields() by @cs01 in #156
- fix: add missing return before emitError in 7 codegen locations by @cs01 in #157
- fix: split 35+ consecutive if-return chain in calls.ts by @cs01 in #158
- fix: split if-drop chains in type-inference.ts by @cs01 in #159
- fix: strict type resolution — eliminate silent default-to-double/i8* by @cs01 in #160
- fix: resolve inline type assertions to matching interfaces by @cs01 in #162
- fix: consolidate duplicate FieldInfo interfaces by @cs01 in #163
- fix: robust for...of support for nested arrays, class fields, and function returns by @cs01 in #165
- fix: replace remaining catch-all else branches in map/set dispatch by @cs01 in #166
- fix: propagate resolvedtype for global variables by @cs01 in #167
- fix: add missing setVariableType in map/set has/delete/size by @cs01 in #168
- feat: add code coverage via c8 by @cs01 in #169
- fix: replace silent 0.0 defaults with emitError for unresolved properties by @cs01 in #170
- fix: error on silent no-op member assignment for unresolved classes by @cs01 in #171
- fix: replace silent returns with emitError in assignment codegen by @cs01 in #172
- fix: support Map<string, number> with value boxing/unboxing by @cs01 in #173
- fix: complete map<string, number> unboxing and literal boxing by @cs01 in #174
- fix: use correct struct type for stringmap .size dispatch by @cs01 in #175
- add --skill flag and include claude skill in chad init by @cs01 in #177
- fix: convert emitwarning to emiterror for silent wrong-code paths by @cs01 in #176
- suppress macos linker warnings from boehm gc by @cs01 in #178
- fix: add missing setvariabletype in array filter, map, reduce, some, every, includes, shift by @cs01 in #179
- fix: add missing setVariableType calls in string search and array pop by @cs01 in #180
- fix: heap-allocate array structs in filter, map, split by @cs01 in #181
- bump version to 0.1.1-alpha by @cs01 in #182
- add runtime bounds checking and improve array method error diagnostics by @cs01 in #183
- add pr workflow and description guidelines to claude.md by @cs01 in #184
- fix: eliminate oob array access in function parameter counting by @cs01 in #185
- fix: improve error messages for set, map, constructor, and control flow errors by @cs01 in #186
- fix: detect for...of on strings and emit compile error by @cs01 in #187
- fix: replace 16 stack traces with compile errors for property/variable access failures by @cs01 in #188
- fix: replace 18 more stack traces with compile errors across codegen by @cs01 in #189
- docs: fix incorrect process.exit() requirement in claude skill by @cs01 in #190
- fix: convert last 12 control-flow throws to compile errors by @cs01 in #191
- fix: add missing setvariabletype in array reduce and numeric find by @cs01 in #192
- fix: convert 8 throw-to-emiterror in base-generator ir validation by @cs01 in #193
- feat: compile error for uninitialized class fields by @cs01 in #194
- fix: type assertion property access warning to error + loc propagation by @cs01 in #195
- fix: convert last 2 codegen throws to clean error messages by @cs01 in #196
- fix: use dynamic ports in all network tests by @cs01 in #197
- fix: declare destructured for-of variables in semantic analyzer + map iteration tests by @cs01 in #198
- feat: rust-style beautiful error messages by @cs01 in #199
- fix: emit compile error for for...of on numeric maps instead of segfaulting by @cs01 in #200
- fix: support class instances and typed arrays returned from function calls by @cs01 in #201
- fix: emit compile error for global-scope map instead of segfaulting by @cs01 in #202
- fix: support map and set at global scope by @cs01 in #203
- feat: console.log/JSON.stringify for all types, for...of on strings by @cs01 in #204
- feat: console.log prints booleans/null correctly, fix JSON.stringify format by @cs01 in #205
- update readme and examples by @cs01 in #206
- add bounds checking for string[] and object[] array access by @cs01 in #207
- feat: add jsonc parser example and test fixture by @cs01 in #208
- fix global-scope optional chaining on nullable interface fields by @cs01 in #209
- add jsonc benchmark suite by @cs01 in #211
- add complete Map<Interface, T> support (has, delete, size, entries, keys, values) by @cs01 in #210
- add keys() and values() for Map<number, number> by @cs01 in #212
- refactor: decompose method-calls.ts — extract map/set/urlsearchparams dispatch by @cs01 in #213
- fix: pointer map setVariableType + clear/reset test coverage by @cs01 in #214
- refactor: extract debug metadata builder from llvm-generator by @cs01 in #215
- fix: replace inline type assertions with proper ast types in closure-analyzer by @cs01 in #216
- replace local type definitions with ast types in array and embed codegen by @cs01 in #217
- consolidate duplicated types across codegen files by @cs01 in #218
- add missing test fixtures for string, math, and path methods by @cs01 in #219
- add test fixtures for switch, class extends, array/string methods, numeric enum by @cs01 in #220
- add test fixtures for comparisons, closures, collections, default params, and more by @cs01 in #221
- fix: use SetNode type for Set allocation, fixing native compiler codegen bug by @cs01 in #222
- refactor: replace 5 inline type assertions with named ast types by @cs01 in #223
- add test fixtures for array chaining, recursion, class methods, and more edge cases by @cs01 in #224
- replace 8 inline type assertions with named ast types by @cs01 in #225
- add test fixtures for string and date methods by @cs01 in #226
- fix: prevent divide-by-zero in padstart/padend with empty pad string by @cs01 in #227
- add test fixtures for loop control flow and chained closures by @cs01 in #228
- fix: use correct llvm types for super() constructor args by @cs01 in #229
- fix: emit error for object spread instead of silently dropping by @cs01 in #230
- fix: use proper type mapping for object method dispatch by @cs01 in #231
- fix: add bounds checking to charAt and charCodeAt by @cs01 in #232
- add test fixtures for arithmetic, bitwise, functions, objects, edge cases by @cs01 in #233
- fix: emit error for x++/x-- at global scope instead of silently dropping by @cs01 in #234
- add bitwise not, unsigned right shift, and exponentiation operators by @cs01 in #235
- fix: propagate arrow function return types and fix lambda pointer codegen by @cs01 in #237
- add test fixtures for typeof, increment, null comparisons, ternary, find by @cs01 in #236
- fix: emit error for spread arguments and rest parameters instead of generating invalid ir by @cs01 in #238
- feat: support all compound assignment operators (%=, &=, |=, ^=, <<=, >>=, >>>=, **=) by @cs01 in #239
- fix: handle boolean values correctly in template literal interpolation by @cs01 in #240
- fix: handle non-double types when converting to i1 for object boolean fields by @cs01 in #241
- fix: convert booleans to true/false in string concatenation by @cs01 in #242
- fix: prevent crash when concatenating null strings with + operator by @cs01 in #243
- fix: typeof returns 'boolean' for boolean variables instead of 'number' by @cs01 in #244
- fix: typeof correctly returns type for functions, undefined, and literals by @cs01 in #245
- fix: implement variable shadowing in if/else blocks by @cs01 in #246
- fix: valid double literal for void function return assignment by @cs01 in #247
- fix: JSON.stringify integers, implement number array join, add NaN/Infinity by @cs01 in #248
- fix: propagate declared interface type for nested inline object literals by @cs01 in #249
- fix: add bounds checking to substr for negative/out-of-range start by @cs01 in #250
- fix: add zero-divisor guard to modulo to prevent srem UB by @cs01 in #251
- fix: add bounds checking to array index assignment by @cs01 in #252
- fix: clamp negative count in string repeat to prevent huge allocation by @cs01 in #253
- fix: recognize NaN and Infinity as built-in globals in semantic analyzer by @cs01 in #254
- feat: implement string.at() method with negative index support by @cs01 in #255
- feat: implement Array.at() with negative index support by @cs01 in #256
- fix: parseInt/parseFloat return NaN for non-numeric strings by @cs01 in #257
- fix: Number() returns NaN for non-numeric strings instead of 0 by @cs01 in #258
- fix: isNaN() returns true for non-numeric strings instead of false by @cs01 in #259
- fix: Number.isInteger() returns false for Infinity/-Infinity by @cs01 in #260
- fix: Math.max/min/sign correctly handle NaN values by @cs01 in #261
- fix: NaN comparisons now work correctly (!=, !==, <, >, etc.) by @cs01 in #262
- fix: remove nnan/ninf fast-math flags from arithmetic to fix nan propagation (#263) by @cs01 in #263
- fix: add missing setVariableType calls and remove remaining fast-math flags (#264) by @cs01 in #264
- fix: resolve negative fromindex in array indexof to prevent oob access (#265) by @cs01 in #265
- fix: clamp negative deletecount in splice, fix assert.notequal nan (#266) by @cs01 in #266
- add test fixtures for edge cases by @cs01 in #267
- fix: prevent i32 overflow in array/string copy size calculations by @cs01 in #268
- fix: support try-catch at global scope by @cs01 in #269
- fix: substring() swaps args when start > end per js spec by @cs01 in #270
- feat: support optional fromindex in string lastindexof by @cs01 in #271
- feat: support optional position param in string includes() and endswith() by @cs01 in #272
- replace husky/lint-staged with simple pre-commit hook by @cs01 in #276
- feat: support optional fromindex parameter in array includes() by @cs01 in #275
- update autonomous workflow to require branch cleanup by @cs01 in #277
- feat: implement array lastindexof with optional fromindex parameter by @cs01 in #278
- perf: optimize charAt comparisons — 1,833x faster character parsing by @cs01 in #279
- fix: map<string, number>.set() and charat/charcodeat default args by @cs01 in #280
- unskip try-catch-throw and nested ternary tests by @cs01 in #281
- refactor: decompose generateGlobalVariableDeclarations (794 → 423 lines) by @cs01 in #282
- fix: add missing setUsesRegex flag + test fixtures by @cs01 in #283
- fix: add missing setUsesJson flags in json access paths by @cs01 in #284
- fix: use zext instead of sext for map/splice size calculations by @cs01 in #285
- fix: runtime error for invalid regex patterns instead of segfault by @cs01 in #286
- fix: add null check to untyped JSON.parse for malformed input by @cs01 in #287
- fix: untrack node_modules symlink causing circular reference by @cs01 in #288
- fix: emit runtime error for array.reduce on empty array with no initial value by @cs01 in #289
- fix: prevent infinite loop in replaceall with empty search string by @cs01 in #290
- add test fixtures for array.concat by @cs01 in #291
- fix: hoist alloca out of loop in custom sort comparator by @cs01 in #292
- add --diagnostics json flag for structured error output by @cs01 in #293
- fix: set core.hookspath in prepare script to override global config by @cs01 in #294
- fix: runtime error for json.parse invalid input (#295) by @cs01 in #295
- test: edge case fixtures for array, string, splice, sort, math methods (#296) by @cs01 in #296
- fix: clamp splice start index to array length (#297) by @cs01 in #297
- fix: hoist alloca out of conditional branch in generateReplaceAll by @cs01 in #298
- fix: hoist allocas out of conditional branches in split and lastIndexOf by @cs01 in #299
- fix: hoist allocas out of conditional branches in console print functions by @cs01 in #300
- feat: implement array.fill(value, start?, end?) by @cs01 in #301
- implement array.reduceRight() for numeric and string arrays by @cs01 in #302
- implement string.search() for regex pattern matching by @cs01 in #303
- implement array.copyWithin() for numeric and string arrays by @cs01 in #304
- add choices validation to argparse with string[] type by @cs01 in #305
- add binary type checker semantic pass by @cs01 in #306
- unskip try-catch-throw test — now passes on both compilers by @cs01 in #308
- remove blockquote formatting from readme header by @cs01 in #310
- fix: binary type checker works in native compiler, unskip 3 semantic tests by @cs01 in #311
- fix: nested inline object literals use correct struct type (#36) by @cs01 in #312
- fix: switch default case only executes when no case matches by @cs01 in #313
- fix: prefer actual interface defs over hardcoded ast type builtins by @cs01 in #314
- fix: use emitCallVoid for describe/test callbacks by @cs01 in #315
- fix: string array sort with custom comparator by @cs01 in #316
- fix: string ordering operators use strcmp instead of broken single-char optimization by @cs01 in #317
- fix: heap-allocate map/set structs to prevent class field segfaults by @cs01 in #318
- fix: array filter/map/forEach support index as second callback param by @cs01 in #319
- fix: global scope map variables from function returns get correct type by @cs01 in #321
- unskip describe test — nested callbacks work in native compiler by @cs01 in #322
- fix: split().join() chaining produces correct string output by @cs01 in #323
- fix: .length on chained method call results returns correct value by @cs01 in #324
- fix: global scope interface field assignment from function returns by @cs01 in #325
- fix: detect captured variable mutation inside closures by @cs01 in #326
- bump version to 0.2.0-beta by @cs01 in #327
Full Changelog: v0.1.0-alpha...v0.2.0-beta