0.5.2 (2022-06-29)
- compiler: Allow compilation of empty programs (#1336) (32df14b)
- compiler: Allow newline in or-patterns (#1323) (8fe8247)
- compiler: Support record field updating assignment (#1320) (cc5519c)
- stdlib: Add number constants to number libraries (#1331) (f640ec2)
- stdlib: Implement Number.sin and Number.cos (#1343) (9357126)
- compiler: Correct error message for unbound type variables (#1327) (762362a)
- compiler: Fix compilation of closure scope mutable destructuring (#1346) (bdcdb3c)
- compiler: Properly handle types not imported (#1329) (75bbb93)
- compiler: Support printing tuple types in oprint (#1324) (c1d8907)
- grainfmt: Support PPatOr and PPatAlias (#1322) (20050d2)
- lsp: Always respond to hover request (#1328) (fb947b5)
- stdlib: Make toNumber functions respect Number invariants (#1347) (78db882)
0.5.1 (2022-06-08)
0.5.0 (2022-06-05)
- stdlib: Use explicit exports for Pervasives (#1301)
- stdlib: Remove
sum
function from the List module (#1300) - stdlib: Ensure Void return for forEach functions in List module (#1307)
- stdlib: Provide correct types for BigInt operations (#1297)
- compiler: Remove
--lsp
flag from grainc executable - lsp: Replaced one-off LSP command with persistent LSP server (#1131)
- cli: Simplify version output (#1291)
- cli: Show all global options within help for every command (#1285)
- cli: Remove graceful flag & behavior (#1275)
- compiler: Refactor HeapAllocated/StackAllocated into Managed/Unmanaged (#1268)
- compiler: Replace optimization levels with compilation profiles (#1270)
- grainfmt: Replace
--in-place
flag with-o
flag - grainfmt: Remove stdin formatting support
- compiler: Arbitrary-Precision Integer Arithmetic (#1167)
- Switch from yarn to npm (#1226)
- Drop node 14 support (#1092)
- stdlib: Add explicit void return type on Set.forEach (#1225)
- stdlib: Add explicit void return type on Map.forEach (#1220)
- compiler: Selectively include functions in the global function table (#1183)
- compiler: Add interface for compile module to hide resume
- compiler: Disallow end-of-line before
=>
(#1178) - stdlib: Add type aliases to regex lib (#1036)
- compiler: Stack-allocated Chars (#1103)
- stdlib: Align Buffer's
addStringSlice
API with String'sslice
(#1136) - graindoc: Add
--current-version
flag, required for since/history attributes (#1116) - compiler: Remove decRefIgnoreZeros (#1068)
- compiler: Add
--memory-base
flag (#1115) - compiler: Re-implement Grain parser (#1033)
- ci: Link all versions during release (#1290) (ceb8dac)
- compiler: Add
--memory-base
flag (#1115) (0680826) - compiler: Add
[@unsafe](https://github.com/unsafe)
attribute for low-level code (#1074) (212faca) - compiler: Add warning for calls to IntXX.fromNumber and FloatXX.fromNumber with literal integers/floats (#1218) (2fb86e5)
- compiler: Allow function re-exports to use regular call instruction (#1176) (afce3aa)
- compiler: Arbitrary-Precision Integer Arithmetic (#1167) (6f34de2)
- compiler: Call known functions across module boundaries (#1175) (b2d7440)
- compiler: Cleaner wasm output for low-level wasm types (#1158) (88060dd)
- compiler: Consolidate exe & js modes (fc61950)
- compiler: Convert
runtime/dataStructures.gr
to primitives (#1145) (2d43b28) - compiler: Convert Sys libraries to @unsafe (#1272) (fcdfc2a)
- compiler: Don't close over global values (#1134) (e8caec6)
- compiler: Name globals in wasm output (#1184) (51170e7)
- compiler: Re-implement Grain parser (#1033) (9dc3c96)
- compiler: Reduce closure sizes by utilizing
$self
argument when possible (#1152) (ba6a84c) - compiler: Refactor exports (#1244) (4637667)
- compiler: Replace optimization levels with compilation profiles (#1270) (1a27c12)
- compiler: Selectively include functions in the global function table (#1183) (67575f7)
- compiler: Stack-allocated Chars (#1103) (095385e)
- compiler: Support pattern aliases (#1174) (9ed093b)
- compiler: Support pattern matching "or" patterns (#1173) (0fb29c4)
- compiler: Upgrade binaryen to 0.15.0 to support Mac M1 arch (#1151) (fc61950)
- compiler: Use symbol for equals sign (#1128) (3d7fc57)
- graindoc: Add
--current-version
flag, required for since/history attributes (#1116) (0f681ea) - graindoc: Allow directory input & output (#1263) (d4cb8ab)
- grainfmt: Allow directory input & output (#1274) (d3e7a33)
- grainfmt: Replace
--in-place
flag with-o
flag (d3e7a33) - lsp: Replaced one-off LSP command with persistent LSP server (#1131) (df91849)
- stdlib: Add module for pseudo-random number generation (#921) (db1fa4e)
- stdlib: Add unsigned versions of Int32/Int64 comparison operations (#831) (5f20868)
- stdlib: Added Bytes.clear function. Avoid allocation in Buffer.clear (#1124) (4afd17a)
- stdlib: Convert runtime printing utils to @unsafe (#1135) (403e1d2)
- ci: Add a last-release-sha to release-please (#1296) (abf9749)
- cli: Ensure parent flags are inherited by the format command (d3e7a33)
- cli: Show all global options within help for every command (#1285) (1357e16)
- compiler: Apply correct allocation type to numbers (#1140) (b9e9d59)
- compiler: Avoid module aliases of themselves (df91849)
- compiler: Fix compilation of functions annotated with alias (#1293) (b3e1882)
- compiler: fix formatter multiple data bug (#1282) (f6fd962)
- compiler: Iterate over guard clauses in typedTreeIter/typedTreeMap (#1283) (96e8ecb)
- compiler: Move Filename usage to Filepath.String & normalize separators (584bcad)
- compiler: Preserve all configs when compiling (#1207) (d8ff903)
- compiler: Read custom sections in full (#1243) (f8a0891)
- compiler: Refactor WASI polyfill resolution (#1261) (a39b48f)
- compiler: Report binop locations properly (#1271) (4b9dd9c)
- compiler: Report Win32 instead of Cygwin in JS compiler (#1251) (584bcad)
- compiler: Respect stack type when dropping statements (#1138) (5a44e93)
- compiler: Supply correct error for unbound record labels (#1200) (86e1bc0)
- graindoc: Add parens around infix operators in titles (#1303) (acba9c1)
- graindoc: Avoid singletons when building ordered comments (#1208) (3f28e6e)
- graindoc: Fix type printing for types and abstract types (#1238) (aea3ea9)
- graindoc: Improve location lookup so re-exports do not crash it (#1280) (6e782ee)
- graindoc: Preserve indentation in Doc comments during trim (#1119) (b8a6d57)
- graindoc: Remove spaces between parens and infix idents (#1302) (95e596f)
- graindoc: Use value_descriptions and type_declarations defined by the module signature (#1241) (5896242)
- grainfmt: Preserve the EOL characters of file (#1216) (ef2835a)
- grainfmt: Properly handle if/then/else line breaks (#1217) (93fd3b5)
- grainfmt: Remove parens around annotated types (#1109) (0ca66bd)
- stdlib: Add explicit void return type on Map.forEach (#1220) (ab2066a)
- stdlib: Add explicit void return type on Set.forEach (#1225) (694e6cf)
- stdlib: Align Buffer's
addStringSlice
API with String'sslice
(#1136) (0c7cb82) - stdlib: Buffer.toBytes should not expose the raw instance of Bytes used by the buffer (#1130) (d2bb585)
- stdlib: Ensure Void return for forEach functions in List module (#1307) (31f480c)
- stdlib: Fix float printing in dtoa (#1165) (2987210)
- stdlib: Fixed a memory leak in Buffer.addStringSlice. (#1122) (c4e1911)
- stdlib: Fixed length and byteLength for strings over 2GiB. (#1126) (08a9487)
- stdlib: Make Bytes.length handle sizes over 2GiB (#1123) (d7386eb)
- stdlib: Provide correct types for BigInt operations (#1297) (fdd2f1c)
- stdlib: Remove intermediate resizes in Buffer.autogrow (#1125) (c1695d0)
- stdlib: Use explicit exports for Pervasives (#1301) (bad5897)
- cli: Remove graceful flag & behavior (#1275) (df55898)
- cli: Simplify version output (#1291) (97f99f4)
- compiler: Add interface for compile module to hide resume (d8ff903)
- compiler: Disallow end-of-line before
=>
(#1178) (8261e73) - compiler: Refactor HeapAllocated/StackAllocated into Managed/Unmanaged (#1268) (1590a37)
- compiler: Remove
--lsp
flag from grainc executable (df91849) - compiler: Remove decRefIgnoreZeros (#1068) (3ae8eaa)
- Drop node 14 support (#1092) (ef4358f)
- grainfmt: Remove stdin formatting support (d3e7a33)
- stdlib: Add type aliases to regex lib (#1036) (a926ea5)
- stdlib: Remove
sum
function from the List module (#1300) (9101615) - Switch from yarn to npm (#1226) (5ea9274)
0.4.7 (2022-01-17)
- compiler: Account for config that is not digestable (#1098) (b58323f)
- compiler: Apply optimization flag at link stage (#1099) (49dac79)
- compiler: Inform the compiler that lsp mode is running on a root file (b58323f)
- compiler: Move lsp flag into grainc to remove it as a recompilation flag (b58323f)
- graindoc: Remove special idents from receiving parens (#1104) (5cb0fda)
- grainfmt: Indent function application args when adding parens (#1095) (64af7d3)
- grainfmt: Inform the formatter that it is running against root files (b58323f)
- grainfmt: Scope the comments in callback lambda closure (#1090) (0975580)
0.4.6 (2021-12-31)
- compiler: Inline all primitives (#1076) (c227130)
- grainfmt: Drastically improve performance (#1042) (9bc7a55)
- stdlib: Add sign function to Number module (#1079) (b6483d5)
- compiler: Correctly supply locations for types & variants (9bc7a55)
- grainfmt: Improve correctness of formatting (9bc7a55)
0.4.5 (2021-12-11)
- compiler: Allow @externalName attribute for foreign names (#1060) (f4c1311)
- compiler: Allow a newline character before a match guard (#1063) (bf41a9c)
- stdlib: Add reverse function to String module (#1027) (df761db)
- stdlib: Add rotate function in Array module (#838) (98fc577)
- stdlib: Add sort function to Array module (#1012) (9091930)
- stdlib: Implement List.sort via mergesort (#1014) (a076e20)
- stdlib: Number.parseInt (#1051) (abafb58)
- compiler: Allow modules to re-export imported types containing generics (#1019) (003cb1e)
- compiler: Consider invalid CMIs as out of date and recompile (#1061) (80da3a9)
- compiler: Fix binop operator reported location (#1018) (422dbcb)
- compiler: Fix counting of stack size (#1066) (f1b3e51)
- compiler: Fix error message when trying to export a constructor (#1055) (54ddb67)
- compiler: Fix memory leaks when loading from heap values (#1038) (7d3402d)
- compiler: Properly apply bindings when executing match guard (#1039) (121644b)
- compiler: Remove from default ident printer (#1056) (49cd5a0)
- graindoc: Ensure value_description is resolved to outcome before printing (#1070) (5eb05cc)
- grainfmt: Handle recursive enums (7dc77cd)
- grainfmt: Resugar match lists properly (7dc77cd)
- stdlib: Add bounds checking to Buffer addStringSlice & addBytesSlice (#1065) (06fe512)
- stdlib: Fix String.encode GC (#1067) (0ab38c9)
- stdlib: Removed memory leak in Hash module (#1045) (01a81c6)
- stdlib: Removed memory leaks in Buffer module (#1047) (d33017b)
- stdlib: Support arrays of any type in Array rotate (#1048) (3ceb1cf)
- stdlib: Support empty arrays in Array rotate (3ceb1cf)
0.4.4 (2021-10-27)
- compiler: Ensure main module is included in linker dependency graph (#996) (d5c6c04)
- compiler: Ensure TExpApp is always expansive in Grain (ef0a69f)
- compiler: Handle let-mut value restriction, such that mutable lets are always expansive (ef0a69f)
- compiler: Properly handle value restriction on function application & mutable vars (#988) (ef0a69f)
- compiler: Properly unmark type manifest bodies (bc648ce)
- grainfmt: Break long parameterized types (bc648ce)
- grainfmt: Wrap type annotation for a long line let assignment (#1005) (963b505)
- linking: Close file after reading (c404fcf)
- Properly open & close files (#985) (c404fcf)
- runtime: Add types to boxed GC functions to avoid weak type errors (ef0a69f)
- stdlib: Fixed memory leak in String.explode (#1001) (c479a05)
0.4.3 (2021-10-11)
- Add npm releases to workflow (#948) (d55bbc0)
- cli: Refactor forwardable options (#908) (9ecb49b)
- compiler: Inline not
(!)
operator (#937) (3f5e9a9) - grainfmt: Add format in place or output to a new file (#904) (0d18935)
- stdlib: Add Conv.wasmI32ToNumber function (#978) (c93ade8)
- stdlib: Add string trim functions to String module (#951) (e55de8f)
- stdlib: Regular Expressions (#680) (9601e16)
- cli: Forward stdlib option to lsp and graindoc (#916) (07c5237)
- cli: Only add --experimental-wasm-bigint flag on node 14 or 15 (#899) (1cc0c5c)
- compiler: Allow trailing commas in imports and destructuring (#890) (f5c24c9)
- compiler: Do not inline aliased mutables (#909) (a50430a)
- compiler: Don't over-optimize mutable imports (#967) (c3066f6)
- compiler: Don't warn on exhaustive boolean matches (#913) (4189745)
- compiler: Ensure cwd directory is normalized on Windows (#952) (a3ab9c3)
- compiler: Export functions with aliased names as wasm functions (#920) (afba142)
- compiler: Fix parsing of block with lone 0-arg enum (#885) (edfc21e)
- compiler: Fix stack/heap number allocation boundary (#974) (47b0f56)
- compiler: Follow proper calling convention when callling stdlib equals in match (#895) (73fe7d4)
- compiler: Parse array set with newline correctly (#926) (14e1822)
- compiler: Remove existing exports when writing universal exports (#919) (e80de43)
- compiler: Resolve all modules fully during linking (#950) (33b33a3)
- Correctly preserve start position for character literals (#931) (8fcc575)
- graindoc: Only extract attributes from Doc comments (#970) (7b6ee5f)
- grainfmt: fix some spacing issues with the formatter (#955) (9c4be85)
- grainfmt: Format CRLF files without error (#941) (ece7536)
- grainfmt: Group infix functions when passed as params (bb9666d)
- grainfmt: handle empty type for foreign exports (#907) (d3b60a4)
- grainfmt: Improve formatter performance (#959) (4e739f1)
- grainfmt: Print attributes for non-toplevel expressions (#887) (72292fe)
- grainfmt: remove extra spaces around for/while loop conditions (#897) (2054a83)
- grainfmt: Remove extraneous parens around infix function application (#902) (5c1906a)
- grainfmt: Removed a trailing comma after a spread in a list, and fixed escaped single quote (#923) (3a138d6)
- grainfmt: Resolve issues with comments within braces (#888) (9c88b89)
- stdlib: Fix Char.code memory issue (#928) (dfa31d8)
- stdlib: Fix issue with list printing (#894) (e2a33a9)
- stdlib: Fix memory issue in list printing (#912) (3e0a805)
- stdlib: Fix memory leaks in Char stdlib (#929) (99cc94b)
0.4.2 (2021-09-07)
- grainfmt: Remove extra spacing from type signatures (#877) (c8cf421)
- stdlib: Annotate generic types in Buffer (#876) (ad46b9e)
- stdlib: Correct fdPwrite return value (#875) (ceaf6af)
- stdlib: Correct type signatures on some Array functions (#880) (04bf4d3)
0.4.1 (2021-09-06)
0.4.0 (2021-09-06)
- compiler: Add typed well-formedness pass which forbids usage of WasmXX values outside of
@disableGC
context (#772) - stdlib: Use random seed for hash module (#854)
- stdlib: Remove deprecated functions (#812)
- stdlib: Convert sys functions to return Results instead of throwing errors (#792)
- compiler: Callee-owned values (#803)
- compiler: Remove user manual memory management calls when --no-gc supplied (#817)
- compiler: Refactor module resolution in order to properly resolve relative paths (#797)
- Rename JS "runtime" to "js-runner"/"runner" throughout project
- compiler: Rename
grainRuntime
to_grainEnv
- Refactor out references to "runtime" that aren't related to
stdlib/runtime
(#755) - compiler: Improve assert messages to contain location information (#737)
- runtime: Fix bug in equalHelp preventing simpleNum/boxedNum equality checks from happening correctly
- Adjust Number equality, thus that 5 == 5.0 (#726)
- compiler: Avoid building JS bundles by default (#739)
- stdlib: Export coerceNumberToWasmI32/I64/F32/F64 from Number runtime (#713)
- compiler: Universal WebAssembly initial and maximum pages flags (#668)
- cli: Split -g into --debug and --wat (#620)
- Add format command to the Grain CLI (#829) (9334b71)
- Add GrainDoc for markdown generation using doc comments (#574) (558d5e2)
- cli: Add
grain doc
command (558d5e2) - cli: Split -g into --debug and --wat (#620) (79809bb)
- compiler: Add --no-bulk-memory flag to polyfill bulk memory ops (#819) (7db4ea6)
- compiler: Add --wasi-polyfill flag for custom implementations (#800) (6879286)
- compiler: Add Comments module to Grain_diagnostics (558d5e2)
- compiler: Add Markdown module to Grain_utils (558d5e2)
- compiler: Add Range module to Grain_utils (558d5e2)
- compiler: Add typed well-formedness pass which forbids usage of WasmXX values outside of
[@disable](https://www.github.com/disable)GC
context (#772) (42fbad6) - compiler: Allow disabling Binaryen optimizations (#780) (a6c929c)
- compiler: Call known functions directly (#777) (ad282be)
- compiler: Callee-owned values (#803) (c242e89)
- compiler: Emit a warning when using Pervasives.(!=) with unsafe Wasm types (#758) (1041e38)
- compiler: Emit a warning when using Pervasives.(==) with unsafe Wasm types (#742) (8b00055)
- compiler: Improve assert messages to contain location information (#737) (26f645b)
- compiler: List exports in wasm_utils (#845) (4fea67b)
- compiler: Remove user manual memory management calls when --no-gc supplied (#817) (92efd40)
- compiler: Universal WebAssembly initial and maximum pages flags (#668) (ec9c0e2)
- graindoc: Add support for deprecated attribute (#751) (8540c73)
- graindoc: Add support for extra information in module docblock (#809) (f28d234)
- graindoc: Support
[@since](https://www.github.com/since)
and[@history](https://www.github.com/history)
attributes (#785) (9386f46) - linker: Add --use-start-section flag to use start section in output (#844) (c221834)
- linker: Add better error for failed wasi polyfill import (3d8f70c)
- stdlib: Add Array.reverse() function (#698) (538e987)
- stdlib: Add Array.slice function (#727) (66319ca)
- stdlib: Add Array.unzip function (#699) (cb9b49e)
- stdlib: Add Array.zip function (#719) (1dc7f56)
- stdlib: Add buffer module (627f181)
- stdlib: Add Float32/Float64 constants for infinity/nan (#720) (4ff3b9f)
- stdlib: Add GrainDoc to Array module (#763) (155c3e8)
- stdlib: Add List.join and Array.join functions (#722) (01a64b6)
- stdlib: Add Result.expect & Result.unwrap functions (#808) (c390e61)
- stdlib: Add String.chatAt function (#721) (94ffbbe)
- stdlib: Add String.encode and String.decode functions to standard library (#683) (5635a36)
- stdlib: Convert sys functions to return Results instead of throwing errors (#792) (35cd957)
- stdlib: Export coerceNumberToWasmI32/I64/F32/F64 from Number runtime (#713) (9353f0b)
- stdlib: forEachCodePoint and forEachCodePointi (#766) (b95cfb7)
- stdlib: Implement initial Number library (#687) (4a71209)
- stdlib: Int32/64 clz, ctz, popcnt, rotl, rotr, eq, ne, eqz (#807) (ffddc51)
- stdlib: Number utilities isNaN, isFinite, and isInfinite (#729) (b907da7)
- stdlib: Optimized coerceNumberToWasmI32. (#782) (98e86ae)
- stdlib: Provide Bytes hash implementation (#853) (ec7d902)
- stdlib: String.encodeAtHelp bounds checks and optimization (#764) (27fccae)
- Support mutually recursive data definitions (#725) (4474f88)
- Add @disableGC annotation to WasmXX-using getSize function in Bytes (#771) (bc4146b)
- Adjust Number equality, thus that 5 == 5.0 (#726) (04aef16)
- compiler: Correct pretty-printing of record types (#750) (3c0f942)
- compiler: Do not add transitive dependencies as imports during CRC consistency check (#830) (a1caacc)
- compiler: Don't report comment locations when disabled (#861) (c6821dd)
- compiler: Fix incorrect char well-formedness error (#837) (4a201cf)
- compiler: Fix location information for parsed toplevel statements (#801) (36c85f7)
- compiler: Fix location of toplevel import statement (#794) (3f94057)
- compiler: Fix typechecking of single-argument tuple annotation (#827) (7b1bb58)
- compiler: Print parens for unit functions (#749) (fd88d2e)
- compiler: Provide named function export for recursive functions (#843) (e7d2ff4)
- compiler: Recompile cached modules when compiler flags change (#820) (50497dd)
- compiler: Refactor function return value incRef logic (#765) (97fbe3d)
- compiler: Refactor module resolution in order to properly resolve relative paths (#797) (97cd97d)
- compiler: Return full string locations from parsing (#798) (392eabf)
- compiler: Strip leading line asterisks in block and doc comments (#740) (45d8564)
- else clause on new line (#678) (13b01c9)
- graindoc: Added linker fixes for Windows (#824) (41dc6c8)
- graindoc: Correctly order sections from source code (#748) (61da929)
- graindoc: Correctly parse attributes, no matter the order (#784) (4a1b280)
- graindoc: Ensure argument-less variants print with trailing comma (#810) (d0cc615)
- grainfmt: Correctly add space between arguments in enum pattern (#865) (8c647fa)
- grainfmt: Handle trailing block comments better (#860) (f15f37b)
- grainfmt: Use Doc.space and surround trailing type annotations with parens (#866) (7bad8e2)
- js-runner: Add default object for destructuring (#833) (ab96fd6)
- js-runner: Monkeypatch fs_write in browser environment (#832) (330b56f)
- lsp: Pattern-match the phase to match the stop hook (#760) (c4da4d9)
- Properly initialize malloc free list (#700) (0576fd9)
- Record function-call associativity (#701) (a6ca63f)
- Reduce reduntant memory loads in Malloc.free (#747) (a5817b1)
- runtime: Fix bug in equalHelp preventing simpleNum/boxedNum equality checks from happening correctly (04aef16)
- stdlib: Avoid
Pervasives.(!=)
references on WasmI32 values (#759) (0f42544) - stdlib: Correctly indent nested record braces when printing (#724) (05f795d)
- stdlib: decodeRangeHelp equality check in String module (#735) (42a03ca)
- stdlib: Fixed memory leak in the print function. (#770) (df094f1)
- stdlib: Fixed String.writeUtf8CodePoint for two byte sequences. (#786) (20b1a77)
- stdlib: Premature free in toString (#863) (eec0f09)
- stdlib: Remove fd_sync calls that are not used (#846) (3d8f70c)
- stdlib: Respect callee-owned convention in sys/xx modules (35cd957)
- stdlib: Return proper values from getClockTime for Sys/Time (#705) (cab0ce7)
- stdlib: String.writeUtf8CodePoint should write 3 bytes for code point 0xFFFF. (#781) (e8f399c)
- stdlib: Use random seed for hash module (#854) (a1a42d8)
- tests: Fix mistaken
==
in WasmI32 tests (0f42544)
- compiler: Avoid building JS bundles by default (#739) (2925fb8)
- compiler: Rename
grainRuntime
to_grainEnv
(2d99c5a) - Refactor out references to "runtime" that aren't related to
stdlib/runtime
(#755) (2d99c5a) - Rename JS "runtime" to "js-runner"/"runner" throughout project (2d99c5a)
- stdlib: Remove deprecated functions (#812) (7b74208)
0.3.2 (2021-05-29)
- compiler: add better hover to LSP (#667) (7c7e9d7)
- compiler: Upgrade to binaryen.ml v0.10.0 (#623) (940f0f1)
- Export number runtime functions as operators & deprecate old identifiers (#629) (b99441a)
- Implement Bytes type and Bytes stdlib (#633) (4b81898)
- Implement Grain array methods in Grain instead of the compiler (#660) (b1397fa)
- Keep track of warnings and report them in LSP mode (#659) (5144e1b)
- Rename Queue/Stack functions & deprecate old identifiers (#635) (3a8da65)
- stdlib: add
Queue.size
andStack.size
(#647) (82ed533) - stdlib: add Range.map (#674) (5c33861), closes #616
- Support \b, \f, \t, and \v escapes (c5d3e44)
- Always use correct wasm type for throw (#652) (dcec4e0)
- compiler: Correct reporting of locations for CRLF files (#658) (457a011)
- compiler: properly handle special float equality (#664) (b63597a)
- Fix parsing of ''' char literal (c5d3e44)
- grainc: Apply separator normalization before cmdliner util (#654) (992dfbd)
- Properly escape quoted strings in toString/print (#670) (c5d3e44)
- stdlib: fdWrite range error (#677) (73e0a7a)
0.3.1 (2021-04-29)
- rename Queue/Stack lib methods (#625)
- cli: Correct typo in lsp catch block (#618) (b903ced)
- Workaround for Windows drive letters with jsoo & pkg (#636) (d205cde)
0.3.0 (2021-04-21)
- cli: Remove
-f
CLI option - compiler: Remove --principal-types and --recursive-types compiler flags
- compiler: Rename --cdebug to --verbose
- cli: Pass compiler flags from the CLI to grainc directly (#613)
- Correct type signature for
_start
- Introduce
_gmain
for old behavior of_start
- Tail calls must be enabled explicitly via
--experimental-wasm-tail-call
- Static linking of Grain modules (#584)
- stdlib: Replace JS entrypoint with locator file (#586)
- Streamline runtime dependencies & entrypoints (#585)
- Rename
registerBasePrinter
todangerouslyRegisterBasePrinter
in runtime/exception - Use Grain exceptions instead of JS exceptions (#565)
- Update assignment semantics (#560)
- Grain implementation of memory allocator (#530)
- Refactor value tags (#526)
- stdlib: Ensure string methods are data-last (#494)
- runtime: Print strings without quotes (#495)
- Char literals (#477)
- Char (#474)
- Rework memory management (#461)
- convert fallible List methods to return Option (#460)
- change return type of Array.find/findIndex to Option (#459)
- upgrade binaryen to 0.4.0 & update test invocation to work with it (#435)
- Add support for bitwise operators (#425)
- remove
^
as unbox operator (fixes #183) (#426)
for
loops (#525) (1032a3d)- Add ability to
throw
exceptions (1f1cd4a) - Add ability to register custom exception printers (1f1cd4a)
- add command line option to disable garbage collector (#239) (7f27a0a)
- Add Exception stdlib with Exception.registerPrinter (1f1cd4a)
- add initial Range stdlib module (#456) (508f23c)
- add List.init to stdlib (#465) (6b833d8)
- add reduce/flatMap/every/some to Array stdlib (#455) (51a7a80)
- add reducei/counti/filter/filteri/unique to Array stdlib (#473) (3e70cd5)
- add Set stdlib module (#466) (2eb2604)
- Add support for bitwise operators (#425) (5c2b8bf)
- Add support for loading Grain modules directly from an ArrayBuffer and running them (f07f305)
- add support for LSP lenses (#416) (753a0dc)
- add update method to map stdlib (#421) (292b5f9)
- Allow newline when creating array (#447) (114cb1a)
- Allow pattern matching on unsafe wasm i32s (#532) (8839c55)
- allow setting the initial memory via CLI option (#448) (213ee5a)
- Allow unsafe wasm values in globals (#519) (111b549)
- Better lenses and hover for LSP (#501) (1223e9a)
- change return type of Array.find/findIndex to Option (#459) (aa3767d)
- Char (#474) (c9422f8)
- Char literals (#477) (cf7eaa5)
- cli: Pass compiler flags from the CLI to grainc directly (#613) (8f40383)
- Compile grainc to JS & create binaries with pkg (#570) (f4919bd)
- convert fallible List methods to return Option (#460) (a08768e)
- Enable Binaryen optimizations (#556) (50ebf74)
- Export compiled functions from modules (#529) (e302049)
- Grain implementation of Char and String libraries (#559) (7424cc5)
- Grain implementation of equals (#538) (09617bc)
- Grain implementation of hashing (#557) (40723fc)
- Grain implementation of memory allocator (#530) (fd8faaa)
- Grain implementation of memory manager (#534) (cea6dcc)
- Grain implementation of number libraries (#542) (d90d38b)
- Grain implementation of number runtime (#537) (94460c0)
- Grain implementation of toString/print (#540) (8c77905)
- Grain wasi bindings (#562) (323006b)
- Implement low-level wasm i32/i64/f32/f64 libraries (#517) (721d011)
- Implement String.indexOf, String.explode, and String.split (#450) (6dc5466)
- Implement support for printing in Grain (#561) (bfe471c)
- Normalized wasm exports for linked modules (3d4ac6e)
- Optimize local mutations (#527) (65a1947)
- Optimize number to string conversions by writing UTF8 directly (#539) (f18d26e)
- Pattern matching on arrays (#478) (681dddf)
- Static linking of Grain modules (#584) (3d4ac6e)
- statically link MinGW libraries on Windows (#438) (a154ac3)
- stdlib: add Stack module (#491) (8310d33)
- stdlib: Implement Char toString (#481) (37ba683)
- stdlib: String.implode (#489) (045077b)
- Support for more WebAssembly runtimes, including Wasmtime and Wasmer (3d4ac6e)
- Update assignment semantics (#560) (03a3217)
- upgrade binaryen to 0.4.0 & update test invocation to work with it (#435) (fbf52a8)
- Upgrade to Binaryen 100 (#541) (6d1fc53)
- Use Grain exceptions instead of JS exceptions (#565) (1f1cd4a)
- Use real wasm tail call instruction (#510) (9c9ffe4)
export *
with exceptions (1f1cd4a)- Allow bodiless blocks (#444) (ecfc70f)
- and/or short circuiting (#536) (38ad495)
- Can't use memory.data (#480) (1a4c3b9)
- cli: Rework JSOO hacks to ensure stdin always gets data (#614) (b064119)
- compiler: Always get little endian i64 from bytes (#587) (1b9853a)
- compiler: Implement proper dependency resolver (#590) (d9ce392)
- compiler: Resolve names when doing CRC checks (#615) (15ea9a1)
- compiler: Update binaryen.ml bindings to include JS fixes (#600) (7bd9ac6)
- Correct type signature for
_start
(3d4ac6e) - docker: Build our own image of ubuntu+node14 (#617) (3053d64)
- Don't optimize away expressions which could possibly contain side effects (#523) (acc7d65)
- ensure Dockerfile works with
yarn prepare
command (#418) (af40e03) - grainc: Only print compiler backtraces in debug mode (#588) (f5145ff)
- loop body typechecking (#533) (18e68ea)
- Multiline char locs (#484) (1e4a691)
- Multiline string locs (#482) (d3eccee)
- normalize filesystem paths to always use / separator (#433) (084a485)
- One-sided if results in any type (#531) (d85659b)
- Only backpatch closures for let-bindings (#428) (98a0b0b)
- Parsing of conditional assignment with binary operators (#572) (17fd4fa)
- Properly incRef exception printers (#581) (61c2a94)
- remove
^
as unbox operator (fixes #183) (#426) (08b6b05) - Remove ppx_expect entirely to build on Windows (#609) (a234dd8)
- replace shebang trick with flagged-respawn to support Windows (#430) (4ea2602)
- Reset type vars when printing types (#420) (bb17787)
- Rework memory management (#461) (84318b0)
- runtime: Properly decRef record and array values (#500) (88adb94)
- runtime: Return correct pointer to morecore (#602) (af39cc4)
- set test sharding to 1 in attempt to avoid test race condition (#440) (3783ec6)
- temporarily disable inline tests (#434) (0bc446a)
- Throwing an exception now traps immediately in all cases (61c2a94)
- Tidy up type printing (#417) (14c7bd6)
- use direct node call instead of executable file (#431) (747ee8d)
- Use Is instead of Eq for match variant comparison (1f1cd4a)
- Use proper return type for calls to external functions (3d4ac6e)
- utilize path.join to create filesystem paths in default locator (#432) (8aa4fa0)
- word-size independent LEB input byte checking (#567) (4079824)
- cli: Remove
-f
CLI option (8f40383) - compiler: Remove --principal-types and --recursive-types compiler flags (8f40383)
- compiler: Rename --cdebug to --verbose (8f40383)
- Introduce
_gmain
for old behavior of_start
(3d4ac6e) - Refactor value tags (#526) (9b21d22)
- Rename
registerBasePrinter
todangerouslyRegisterBasePrinter
in runtime/exception (61c2a94) - runtime: Print strings without quotes (#495) (16671c2)
- stdlib: Ensure string methods are data-last (#494) (f871efc)
- stdlib: Replace JS entrypoint with locator file (#586) (a9ec7e2)
- Streamline runtime dependencies & entrypoints (#585) (bbdd38d)
- Tail calls must be enabled explicitly via
--experimental-wasm-tail-call
(3d4ac6e)