Repository navigation
Releases
Releases · shayanhabibi/fickl
Fickl 0.10.1
What's Changed
- chore: land #457, #458 by @shayanhabibi in #459
- fix(js/ts): support BitConverter's unsigned and single bit casts by @shayanhabibi in #458
- fix(js/ts): wrap uint32 addition, subtraction and multiplication by @shayanhabibi in #457
- chore(all): prepare Fickl 0.10.1 release by @shayanhabibi in #460
Full Changelog: v0.10.0...v0.10.1
Fickl 0.10.0
What's Changed
- fix(docs): lay out cards in a grid and stop clipping the hero glow by @shayanhabibi in #436
- chore: land #445, #437, #438, #439, #440, #443 by @shayanhabibi in #447
- fix(js/ts): index an IReadOnlyList without its .NET member name by @shayanhabibi in #437
- fix(core): make Fickl.Core's JS error types non-nullable by @shayanhabibi in #438
- docs: explain string + with a null operand, with and without nullness by @shayanhabibi in #439
- ci: remove the PR title linter by @shayanhabibi in #440
- feat: add the Fickl.Sdk package to compile as part of dotnet build by @shayanhabibi in #443
- feat(js/ts): compile repeated copies of a wide record through a generated copier by @shayanhabibi in #445
- chore: land #448 by @shayanhabibi in #449
- feat(cli): turn the package cache off by default in CI by @shayanhabibi in #448
- chore: land #451 by @shayanhabibi in #452
- feat(js): reflect StringEnum unions with their runtime values as case names by @shayanhabibi in #451
- chore: land #453 by @shayanhabibi in #454
- fix(ts): type a StringEnum case as its enum inside tuples by @shayanhabibi in #453
- chore: land #455 by @shayanhabibi in #456
- chore(all): prepare Fickl 0.10.0 release by @shayanhabibi in #455
Full Changelog: v0.9.0...v0.10.0
Fickl 0.9.0
Changes that can affect existing code
decimalis a native BigInt instead of big.js (#320). JavaScript that calls big.js methods on an F# decimal, such asd.toFixed(2), or reads itsc/e/sfields, no longer works. Decimal arithmetic now matches .NET where it did not, and is faster.- A single-parameter
[<JSX.Component>]passed as a render prop is passed as itself, not wrapped in a lambda (#310). - Option-typed interface properties are optional in TypeScript output (#105).
- The project's
LangVersionis enforced, including for package sources compiled with it (#255). - Same-file extensions of an
[<AttachMembers>]class are attached to it, not exported as module functions (#285).
Documentation is now at https://shayanhabibi.github.io/fickl/ (#430).
What's Changed
- chore: land #258, #256, #257 by @shayanhabibi in #325
- fix(js/ts): report Emit $N! with an argument that is not a string literal by @shayanhabibi in #256
- chore: merge upstream Fable main (17 commits) by @shayanhabibi in #258
- feat(js/ts): support and! in jsAsync and add a promise alias by @shayanhabibi in #257
- chore: land #330, #331, #332, #333 by @shayanhabibi in #335
- chore: merge upstream Fable main (f51333f) by @shayanhabibi in #330
- fix(js/ts): compute float range items from the start by @shayanhabibi in #331
- fix(js/ts): keep the offset when DateTimeOffset.Parse reads an ISO string by @shayanhabibi in #332
- fix(js/ts): do not skip a run that follows a failed compilation by @shayanhabibi in #333
- chore: land #338 by @shayanhabibi in #339
- feat(js/ts): add --checkedDivision to raise DivideByZeroException by @shayanhabibi in #338
- chore: land #340, #341, #342 by @shayanhabibi in #344
- fix(js/ts): reject out-of-range day, month and time in DateTime parsing by @shayanhabibi in #340
- fix(js/ts): make the members of a failed Regex match null-safe by @shayanhabibi in #341
- fix(js/ts): support NumberStyles in BigInteger.Parse and TryParse by @shayanhabibi in #342
- chore: land #345 by @shayanhabibi in #346
- fix(js/ts): treat a null
string | nulloperand as empty in concatenation by @shayanhabibi in #345 - chore: land #347, #348, #349, #350, #351, #352 by @shayanhabibi in #353
- fix(js/ts): report unsupported DateTime members at compile time by @shayanhabibi in #347
- fix(ts): annotate IDictionary<'K,'V> as IMap<K, V> instead of any by @shayanhabibi in #348
- fix(js/ts): implement Match.NextMatch() by @shayanhabibi in #349
- fix(js/ts): emit root-absolute import paths as written by @shayanhabibi in #350
- fix(cli): regenerate an output file that was deleted by @shayanhabibi in #351
- fix(js/ts): support tupled and curried functions in importValueDynamic by @shayanhabibi in #352
- chore: land #354, #355, #356, #357, #358 by @shayanhabibi in #359
- fix(js/ts): honour [] when printing by @shayanhabibi in #355
- fix(cli): explain an undefined name caused by an assembly-level AutoOpen by @shayanhabibi in #356
- fix(js/ts): use a custom operator of an erased union on constructed operands by @shayanhabibi in #357
- fix(js/ts): give function and delegate overloads different names by @shayanhabibi in #358
- fix(ts): type the static singletons of fieldless union cases by @shayanhabibi in #354
- chore: land #360, #361, #362, #363, #364, #365 by @shayanhabibi in #366
- fix(js/ts): keep union and record equality across hot reloads by @shayanhabibi in #360
- fix(cli): keep watching when a source file is briefly locked by @shayanhabibi in #361
- fix(js/ts): allow referencing a project that has an [] by @shayanhabibi in #362
- fix(js/ts): support functions with more than 20 curried arguments by @shayanhabibi in #363
- fix(js/ts): reject signs and prefixes .NET rejects when parsing integers by @shayanhabibi in #364
- fix(js/ts): uncurry a function that reaches
==>or?<-through a parameter by @shayanhabibi in #365 - chore: land #367, #368, #369, #370, #371, #372 by @shayanhabibi in #373
- fix(js/ts): report a constructor call on an [] class at compile time by @shayanhabibi in #367
- fix(ts): emit a cast for dynamic access, unbox and !! by @shayanhabibi in #368
- fix(js/ts): pass the member's own name to a ReflectedDecorator by @shayanhabibi in #369
- fix(js/ts): give anonymous record types a Name and FullName by @shayanhabibi in #370
- fix(js/ts): sort strings like String.CompareTo in the .NET comparer paths by @shayanhabibi in #371
- fix(js/ts): compile
for i in a .. step .. bwith a constant step to a loop by @shayanhabibi in #372 - chore: land #374, #375, #376, #377, #378 by @shayanhabibi in #379
- fix(js/ts): compile explicit constructors with a BCL base or [] correctly by @shayanhabibi in #375
- fix(js/ts): read fields of a mutable struct through its address correctly by @shayanhabibi in #377
- fix(cli): honour the project's LangVersion by @shayanhabibi in #378
- fix(ts): emit valid type arguments for an SRTP call to a generic static member by @shayanhabibi in #374
- fix(js/ts): keep sub-millisecond ticks and the Int64 limits in TimeSpan by @shayanhabibi in #376
- chore: land #380, #381, #382, #383, #384, #385 by @shayanhabibi in #386
- feat(js/ts): attach same-file extension members of [] classes by @shayanhabibi in #385
- fix(js/ts): resolve a recursive trait call that ends in an overload taking obj by @shayanhabibi in #380
- feat(js/ts): accept conditional props in JSX.create by @shayanhabibi in #381
- feat(js/ts): map InnerException to Error.cause and AggregateException to AggregateError by @shayanhabibi in #382
- feat(js/ts): support two-dimensional arrays by @shayanhabibi in #383
- feat(ts): declare option-typed interface properties as optional by @shayanhabibi in #384
- chore: land #387, #388, #389, #390 by @shayanhabibi in #391
- fix(js/ts): reject date and time members the runtime does not implement by @shayanhabibi in #387
- feat(js/ts): flatten
yield!of static lists in createObj into one object literal by @shayanhabibi in #388 - feat(ts): add erased intersection types I2, I3 and I4 to Fickl.Core by @shayanhabibi in #389
- feat(ts): add a typed constructor type, JsConstructor<'T>, to Fickl.Core by @shayanhabibi in #390
- chore: land #392, #393, #394, #395, #396 by @shayanhabibi in #397
- feat(js/ts): add jsSpread and jsMerge for structural copies of JS objects by @shayanhabibi in #392
- feat(js/ts): support System.Text.Rune by @shayanhabibi in #394
- docs(js/ts): explain the JSX props list rules and link the page from its errors by @shayanhabibi in #395
- feat(js): re-export an imported member directly by @shayanhabibi in #393
- feat(js/ts): support the System.Array.Sort overloads and System.Numerics.Complex by @shayanhabibi in #396
- chore: land #399, #400, #401, #402, #403, #404, #405 by @shayanhabibi in #406
- feat(js/ts): support UnionCaseInfo.GetCustomAttributes by @shayanhabibi in #399
- test(js): run the date and time tests under fixed non-UTC time zones by @shayanhabibi in #400
- feat(js/ts...
Fickl 0.8.0
What's Changed
- fix(ts): emit override on members that hide a base class member by @shayanhabibi in #217
- feat(js/ts): opt-in for F# exceptions to be real JS Errors by @shayanhabibi in #211
- feat(js/ts): catch JS-thrown values idiomatically by @shayanhabibi in #213
- feat(ts): EmitType attribute writes a TypeScript type verbatim by @shayanhabibi in #212
- feat(ts): Partial/Required/Readonly, partial, and satisfies for jsOptions by @shayanhabibi in #214
- feat(ts): readonly collections in annotations and a ReadonlyArray binding by @shayanhabibi in #216
- feat(ts): Fickl.Core.unknown is annotated unknown in TypeScript signatures by @shayanhabibi in #219
- feat(ts): type predicate and assertion signatures by @shayanhabibi in #215
- feat(ts): emit F# enums as TypeScript enums and bind imported string enums by @shayanhabibi in #218
- ci: run the full suite only on ready PRs, and other targets only for releases by @shayanhabibi in #220
- fix(all): honor fable-disable edits made while watching by @shayanhabibi in #221
- chore(all): land batch 2026-10-31 by @shayanhabibi in #231
- test(ts): cover option fields of anonymous records under exactOptionalPropertyTypes by @shayanhabibi in #224
- fix(ts): keep
| nullon F# nullable reference types by @shayanhabibi in #226 - feat(js/ts): WeakReference compiles to WeakRef, and a FinalizationRegistry binding by @shayanhabibi in #227
- fix(ts): fable-library type-checks under noUncheckedIndexedAccess by @shayanhabibi in #222
- feat(js/ts): bridge CancellationToken and AbortSignal by @shayanhabibi in #223
- feat(js/ts): property-key types keyof<'T> and keyof<'T, 'R> in Fickl.Core by @shayanhabibi in #225
- feat(js/ts): ArraySegment as a typed-array view, and BigUint64Array by @shayanhabibi in #228
- feat(js/ts): Record<'K, 'V>, ReadonlyRecord and PropertyRecord in Fickl.Core by @shayanhabibi in #229
- feat(ts): valueof<'T> for T[keyof T] with an indexed-access TypeScript type by @shayanhabibi in #230
- chore(all): land batch 2026-10-31 (2) by @shayanhabibi in #242
- feat(js/ts): tagged template literals from F# interpolated strings by @shayanhabibi in #232
- feat(js/ts): branded primitives string<'m>, bool<'m> and char<'m> in Fickl.Core by @shayanhabibi in #233
- feat(js/ts): attach members of classes that inherit a JS class by @shayanhabibi in #234
- feat(js/ts): Proxy and Reflect bindings with a typed handler by @shayanhabibi in #235
- feat(js/ts): EventTarget and Node.js emitter events as F# IEvent by @shayanhabibi in #236
- feat(js/ts): callable objects with properties and methods by @shayanhabibi in #237
- feat(js/ts): import attributes on static and dynamic imports by @shayanhabibi in #238
- feat(js/ts): top-level await for module values with JS.awaitTopLevel by @shayanhabibi in #239
- feat(js/ts): round-trip F# values through structuredClone and postMessage by @shayanhabibi in #240
- feat(js/ts): compile let fields of JS subclasses to #private fields by @shayanhabibi in #241
- chore(all): land batch 2026-10-31-3 by @shayanhabibi in #252
- fix(ts): keep a single-use ResizeArray bound outside the loop that uses it by @shayanhabibi in #243
- fix(ts): declare the static fields of a union class by @shayanhabibi in #244
- fix(ts): type a getter returning an imported value with its property type by @shayanhabibi in #245
- fix(ts): invoke a generic delegate without its type arguments by @shayanhabibi in #246
- fix(ts): make F# arrays of non-numbers assignable to TypeScript T[] by @shayanhabibi in #248
- feat(ts): labelled and optional tuple elements from erased single-case unions by @shayanhabibi in #249
- feat(js/ts): new.target in constructors with JS.newTarget and JS.isNewTarget by @shayanhabibi in #250
- feat(ts): emit global and module augmentations by @shayanhabibi in #251
- feat(ts): polymorphic this return types for fluent interfaces by @shayanhabibi in #247
- chore(all): prepare Fickl 0.8.0 release by @shayanhabibi in #253
Full Changelog: v0.7.4...v0.8.0
Fickl 0.7.4
What's Changed
- fix(js/ts): implement JS.AsyncIterable under Symbol.asyncIterator by @shayanhabibi in #180
- chore: Bump the all-nuget group with 7 updates by @dependabot[bot] in #136
- fix(js/ts): report nested paths passed to nameofLambda by @shayanhabibi in #181
- fix(ts): type StringEnum cases by their CompiledValue by @shayanhabibi in #182
- fix(ts): support CompiledValue tags in TypeScriptTaggedUnion by @shayanhabibi in #185
- fix(js/ts): only treat Fable.Core's own Fable.Core.JS types as globals by @shayanhabibi in #183
- fix(ts): declare Emit*-bound interface members by their JS shape by @shayanhabibi in #184
- fix(ts): print annotation-only imports as type-only imports by @shayanhabibi in #186
- style(all): format Main.fs for Fantomas 8.1.0 by @shayanhabibi in #188
- test(ts): expect a type-only import in the emitMemberSignatures snapshot by @shayanhabibi in #191
- test(js): stop SRTP edge case racing the tracked-calls counter by @shayanhabibi in #189
- fix(ts): type getEnumUnderlyingType as TypeInfo by @shayanhabibi in #206
- fix(ts): read EntryPoint arguments through globalThis by @shayanhabibi in #207
- fix(ts): emit the override modifier by @shayanhabibi in #208
- chore: merge upstream fable-compiler/fable main by @shayanhabibi in #205
- test(ts): type-check TS output under stricter compiler options by @shayanhabibi in #190
- chore: prepare Fickl 0.7.4 release by @shayanhabibi in #209
- docs: list the functionality Fickl adds to Fable in the README by @shayanhabibi in #210
New Contributors
- @dependabot[bot] made their first contribution in #136
Full Changelog: v0.7.3...v0.7.4
Fickl 0.7.3
What's Changed
- fix(js/ts): hold tagged inline interface payloads directly; add copy representations by @shayanhabibi in #138
- fix(ts): keep the declared union type on TypeScriptTaggedUnion constructions by @shayanhabibi in #139
- fix(all): keep local project references out of package detection by @shayanhabibi in #140
Full Changelog: v0.7.2...v0.7.3
Fickl 0.7.2
What's Changed
- perf(js/ts): read list fields directly in List.append by @shayanhabibi in #134
- chore: merge upstream fable-compiler/fable main by @shayanhabibi in #135
Full Changelog: v0.7.1...v0.7.2
Fickl 0.7.1
What's Changed
- fix(js/ts): preserve generic native async body types by @shayanhabibi in #129
- fix(js/ts): read disposal getters once with their receiver by @shayanhabibi in #130
- fix: validate generic and opaque native async payloads by @shayanhabibi in #132
- fix: preserve native member declaration dispatch by @shayanhabibi in #133
Full Changelog: v0.7.0...v0.7.1
Fickl 0.7.0
What's Changed
- fix(js/ts/python): map option counts to sequence length by @shayanhabibi in #111
- fix(js/ts): preserve None in optional integer getters by @shayanhabibi in #112
- fix(js/ts): preserve Some null in strict optional parameters by @shayanhabibi in #113
- fix(js/ts): retain undefined properties in declared object shapes by @shayanhabibi in #115
- fix(js/ts): preserve inline interface payload identity and state by @shayanhabibi in #116
- fix(all): normalize Pyright report paths relative to the workspace by @shayanhabibi in #117
- feat(js/ts): support ordinary callbacks with typed receivers by @shayanhabibi in #118
- feat(js/ts): bridge native synchronous and asynchronous disposal by @shayanhabibi in #119
- feat(js/ts): emit native async computations and exports by @shayanhabibi in #120
- feat(js/ts): emit typed native generator functions by @shayanhabibi in #121
- feat(js/ts): emit native async generators and iteration by @shayanhabibi in #122
- feat(js/ts): support explicit symbol keys across object shapes by @shayanhabibi in #123
- feat(js/ts): emit native class and member decorators by @shayanhabibi in #124
Full Changelog: v0.6.10...v0.7.0
Fickl 0.6.10
What's Changed
- fix(js): explicit classes over primary-constructor classes keep the base by @shayanhabibi in #97
Full Changelog: v0.6.9...v0.6.10