Skip to content

v0.2.0-beta

Choose a tag to compare

@github-actions github-actions released this 13 Mar 07:01
· 339 commits to main since this release
1ab6678

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