package reason
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=63d950affbe203701a3d4c076a2750b56211bae7017cd8f59da508efb09a1afe
sha512=3ed24f4567dcf2ef2c05cec45fae18da2b9a78dab098a8e97e6430aaed4c8e3f659c7a5ccab88bce498c4b3d3cd54b01e72b2be4fefdf9f3bfcc2c8eb7fd86d4
CHANGES.md.html
3.12.0
Add
\u{hex-escape}
syntax (@anmonteiro, #2738)Support local open and let bindings (@SanderSpies) #2716
outcome printer: change the printing of
@bs.*
to@mel.*
(@anmonteiro, #2755)Fix outcome printing of optional arguments on OCaml 5.2 (@anmonteiro, #2753)
support parsing and printing of
external%extension
(@anmonteiro, #2750, #2766, #2767)install
refmt
manpage (@anmonteiro, #2760)add support for parsing / printing of refutation clause in
switch
(@anmonteiro, #2765)support
let%ppx
in signatures (@anmonteiro, #2770)
3.11.0
Print structure items extension nodes correctly inside modules (@anmonteiro, #2723)
Print wrapped type constraint on record patterns (@anmonteiro, #2725)
Support OCaml 5.2 (@anmonteiro, #2734)
3.10.0
Support
@mel.*
attributes in addition to@bs.*
(@anmonteiro, #2721)
3.9.0
Reduce the amount of parentheses around functor usage (@SanderSpies, #2683)
Print module type body on separate line (@SanderSpies, #2709)
Fix missing patterns around contraint pattern (a pattern with a type annotation).
Fix top level extension printing
Remove the dependency on the
result
package, which isn't needed for OCaml 4.03 and above (@anmonteiro) #2703Fix the binary parser by converting to the internal AST version used by Reason (@anmonteiro) #2713
Port Reason to
ppxlib
(@anmonteiro, #2711)Support OCaml 5.1 (@anmonteiro, #2714)
3.8.2
Fix magic numbers for OCaml 5.0 (@anmonteiro) #2671
3.8.1
(Internal) Rename: Reason_migrate_parsetree -> Reason_omp (@ManasJayanth) #2666
Add support for OCaml 5.0 (@EduardoRFS and @anmonteiro) #2667
3.8.0
Add support for OCaml 4.13 (@EduardoRFS and @anmonteiro) #2657
Add support for OCaml 4.14 (@EduardoRFS and @anmonteiro) #2662
3.7.0
Add support for (limited) interop between letop + OCaml upstream (@anmonteiro) #2624
Add support for OCaml 4.12 (@kit-ty-kate) #2635
Remove support for OCaml 4.02.3 (@anmonteiro) #2638
3.6.2
New Feature, Non Breaking:
Reason Syntax v4 [NEW-FEATURE-NON-BREAKING]: Angle Brackets Type Parameters (PARSING) (@jordwalke)[#2604][https://github.com/facebook/reason/pull/2604]
Bug Fixes:
Fix printing of externals that happen to have newlines/quotes in them (@jordwalke)#2593
Fix parsing/printing of attributes on patterns (@jordwalke)#2592
Fix Windows CI (@ManasJayanth) #2611
Fix uncurry attribute on function application(@anmonteiro) #2566
Support OCaml 4.11 (@anmonteiro) #2582
Vendor ocaml-migrate-parsetree for greater compatibility (@jordwalke) #2623
Docs:
README Reason logo (@iamdarshshah)[#2609][https://github.com/facebook/reason/pull/2609]
3.6.0
New Feature, Non Breaking:
External syntax: make the
external ... = ""
part optional (@romanschejbal)#2464external myFn: (string) => unit;
is now equivalent toexternal myFn: (string) => unit = "";
Bug Fixes:
Fixes issues where
method
and similar keywords will be transformed tomethod_
(@cristianoc) #2530
3.5.4
Fixes:
Fix regression where keywords were not renamed correctly (@cristianoc) #2520
Fix regression where quoted object attributes / labeled arguments weren't renamed correctly (@anmonteiro) #2509
Fix issue where JSX braces break into multiple lines (@anmonteiro) #2503
Others:
Improve bspacks process for 4.06 and add esy workflow for building refmt.js
3.5.3
🎉 MUCH better parsing error locations - more reliable autocomplete 🎉 (@let-def)[https://github.com/let-def] (#2439)
Rebased the better error recovery diff onto 4.09 OCaml @anmonteiro (#2480)
Fix printing of fragments inside JSX props @anmonteiro (#2463)
Modernize CI based on latest hello-reason CI @jordwalke (#2479)
Fix bug that caused necessary braces to be removed @anmonteiro (#2481)
Make prepublish script auto-generate opam files @jordwalke (#2468)
Fix brace removal with pipe-first in JSX attributes @bloodyowl (#2474)
CI Improvements @ulrikstrid (#2459)
Make sure you can still include rtop from inside utop @sync (#2466)
3.5.2
Support OCaml 4.09 (2450).
Improve opam packaging config (2431).
Improve repo to support esy resolutions to master branch (31225fc0
3.5.0
Improvements:
Support OCaml 4.08 (2426).
Fixes:
Print attributes in class fields 2414.
Preserve function body braces when Pexp_fun is an argument to a function commit
Prettify try to hug braces 2378
Fix operator swap for type declarations commit
Fix JSX removing semicolons commit
Better formatting of Pexp_lazy commit
3.4.2
Not released to @esy-ocaml/reason - would have required a major version bump. These features will be released in 3.5.0.
Improvements:
Parse and print parentheses around inline record declarations (2363)
Proper outcome printing (for editor and build) of inline records (2336)
Proper outcome printing of types with inline records (parentheses) (2370)
3.4.1
Fixes:
Don't remove semis in blocks inside ternary expressions as jsx children (2352).
Handle single line comments ending with end-of-file (2353).
3.4.0
Fixes:
Don't pun record types if they contain attributes (2316).
Improvements:
// line comments
! (2268). Make sure that your constraints onrefmt
versions for native projects. Specify a version >=3.4.0
if you use//
comments in your Reason code. Specifiy ranges like3.4.0-3.5.0
.Better whitespace interleaving (1990).
Allow Reason to be used with Merlin Natively on Windows (2256).
Improved Ternary Formatting (2294).
3.3.4
Fixes:
foo(~Foo.a)
becomingfoo(~Fooa=Foo.a)
(2136).Parse
<div> ...c</div>
correctly (2137).Invalid formatting of first-class module with type constraint (2151).
Precedence printing of pipe first with underscore sugar as JSX child (2159).
Correct location for JSX name & extension expression (2166, 2162).
Lack of space after
module type of
(2175).Outcome printer (editor & interface generator) function signature (2185).
Precedence issue with unary operators and labeled arguments (2201).
Type printing of polymorphic variants row fields (2191).
Pattern parsing inside ternary expressions (2188).
Improvements:
Preserve empty lines in records and bs objects (2152).
Make
let not = blabla
work (not is a keyword) (2197).Format doc comments on variant leafs with consistency (2194)
Single pipe first printing layout (2193).
Performance. One case where the printer took exponential time (2195).
3.3.3
Fix regressed printing of first-class module (2124).
Fix local open printing for
bs.obj
(2123).fix printing of
foo[(bar + 1)]
tofoo[bar + 1]
(2110).Only wrap
fun
in parentheses when necessary (2033).Change all precedence printing to braces for consistency inside JSX (2106).
Format docblock comments above std attrs on record rows (2105).
3.3.2
Big release! No breaking change. Big shout out to @anmonteiro and @iwanKaramazow!
Major:
Pipe first
|.
now got a Reason sugar,->
, with better precedence support than the former (1999, 2078, 2092, 2082, 2087, 2055).ReasonReact JSX PPX DOM children spread (2095).
ReasonReact JSX PPX fragment (2091).
Other ReasonReact JSX PPX fixes (2088, 2060, 2027, 2024, 2007, 2021, 1963).
Semicolon relaxation & reporting improvements (2040, 2012, 1968).
Module parsing & formatting improvements (2061, 2059, 1984, 1949, 1946, 2062).
Remove extra space in some places after formatting (2047, 2041, 1969, 1966, 2097).
Much better
...
spread errors for everything (1973).Fix
foo##bar[baz]
,foo->bar^##baz
and other precedences (2050, 2055, 2044, 2044).Milder "unknown syntax error" message (1962).
Others:
Parentheses hugging for multi-line
Js.t({foo: bar})
(2074).Correctly parse prefix ops in labeled parameters (2071).
Attach doc attributes before extension sugar (2069).
Support non-parenthesized label colon type equal optional in type declarations (2058).
Printf uncurried application when last argument is a callback (2064).
OCaml rtop syntax printing( 2031).
Fix Bigarray syntax (2045).
Parse
M.[]
(2043).Fix printing of polymorphic variant with annotation (2019).
Format GADT type variants better (2016).
Better autocomplete for Merlin (1998).
Print newline after doc comments before attributes (1869).
Fix inconsistent printing of opening extension expressions (1979).
Fix error when parsing
let x=-.1;
and others (1945).Arguments no longer accidentally punned when they carry attributes (1955).
3.2.0
See the blog post here.
WHITESPACES IMPROVEMENTS ARE HERE: empty lines between most things will now be preserved when you format your code! Multiple lines still collapse to one line in most cases (1921, 1919, 1876).
Semicolon relaxation: see blog post (1887).
Fix parsing & printing of es6 function syntax inside attributes (1943).
List spread now has better error (1925).
Functor in JSX tags (1927).
Various other printer improvements.
3.1.0
New pipe sugar for function call argument in arbitrary position:
foo |> map(_, addOne) |> filter(_, isEven)
(1804).BuckleScript [@bs] uncurry sugar:
[@bs] foo(bar, baz)
is nowfoo(. bar, baz)
. Same for declaration (1803, 1832).Trailing commas for record, list, array, and everything else (1775, 1821)!
Better JSX printing:
<Foo bar=<Baz />>
,<div><span></span></div>
(1745, 1762).switch now mandates parentheses around the value. Non-breaking, as we currently support parentheses-less syntax but print parens (1720, 1733).
Attributes on open expressions (1833).
Better OCaml 4.06 support (1709).
Extension points sugar:
let%foo a = 1
(1703)!Final expression in a function body now also has semicolon. Easier to add new expressions afterward now (1693)!
Better editor printing (outcome printer) of Js.t object types, @bs types, unary variants and infix operators (1688, 1784, 1831).
Parser doesn't throw Location.Error anymore; easier exception handling when refmt is used programmatically (1695).
3.0.4
Default print width is now changed from 100 to 80 (1675).
Much better callback formatting (1664)!
Single argument function doesn't require wrapping the argument with parentheses anymore (1692).
Printer more lenient when user writes
[%bs.obj {"foo": bar}]
. Probably a confusion with just{"foo": bar}
(1659).Better formatting for variants constructors with attributes (1668, 1677).
Fix exponentiation operator printing associativity (1678).
3.0.2
JSX: fix most of the parsing errors (#856 #904 1181 1263 1292)!! Thanks @IwanKaramazow!
In-editor syntax error messages are now fixed! They should be as good as the terminal ones (1654).
Polymorphic variants can now parse and print `foo(()) as `foo() (1560).
Variant values with annotations like
Some((x: string))
can now beSome(x: string)
(1576).Remove few places remaining that accidentally print
fun
for functions (1588).Fewer unnecessary wrappings in type declarations and negative constants (1616, 1634).
Parse and print attributes on object type rows (1637).
Better printing of externals with attributes (1640).
Better printing for multiple type equations in a module type in a function argument (1641).
Better printing for unary -. in labeled argument (1642).
3.0.0
Our biggest release! Please see our blog post on https://reasonml.github.io/blog/2017/10/27/reason3.html.
Summary: this is, practically speaking, a non-breaking change. You can mix and match two projects with different syntax versions in BuckleScript 2 (which just got release too! Go check), and they'll Just Work (tm).
To upgrade your own project, we've released a script, https://github.com/reasonml/upgradeSyntaxFrom2To3
Improvements:
Much better printing for most common idioms.
Even better infix operators formatting for
==
,&&
,>
and the rest (1380, 1386, etc.).More predictable keyword swapping behavior (1539).
BuckleScript's
Js.t {. foo: bar}
now formats to{. "foo": bar}
, just like its value counterpart ([%bs.obj {foo: 1}]
to{"foo": bar}
.[@foo]
,[@@foo]
and[@@@foo]
are now unified into[@foo]
and placed in front instead of at the back.!
is now the logical negation. It wasnot
previously.Dereference was
!
. Now it's a postfix^
.Labeled argument with type now has punning!
String concat is now
++
instead of the old^
.For native, Reason now works on OCaml 4.05 and the latest topkg (1438).
Record field punning for module field prefix now prints well too:
{M.x, y}
is{M.x: x, y: y}
.JSX needs
{}
like in JS.Fix reason-specific keywords printing in interface files (e.g.
==
,match
,method
).Record punning with renaming (1517).
The combination of function label renaming + type annotation + punning is now supported!
Label is now changed from
::foo
back to~foo
, just like for OCaml.Fix LOTS of bugs regarding parsing & formatting (closing around 100 improvement-related issues!).
Official
refmt.js
, with public API. SeeREADME.md
.Official
refmt
native public API too.New JS application/abstraction syntax. Yes yes, we know. Despite the 100+ fixes, this one's all you cared about. Modern software engineering ¯\_(ツ)_/¯. Please do read the blog post though.
Breaking Changes:
Remove
--use-stdin
and--is-interface-pp
option from refmt; they've been deprecated for a long time nowRemove unused binaries:
reup
, etc.Remove the old
reactjs_jsx_ppx.ml
. You've all been onreactjs_jsx_ppx_2.ml
for a long time now.Reserved keywords can no longer be used as an
external
declaration's labels.
Deprecated:
Deprecate
--add-printers
option from refmt; we'll have a better strategy soon.
1.13.7
Much better infix operators (e.g. |>) formatting! (1259)
Official
refmt.js
, with public API. SeeREADME.md
. We've back-ported this into the 1.13.7 release =)
1.13.6
Changelog got sent into a black hole