package reason
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha256=47b0e43a7d348e2a850658ab4bec5a4fbbb9fd4ff3ec8a1c1816511558c5364e
    
    
  sha512=0d8dbe33ac17b765ea018522910a333831fec278ae4da25ba039ce4d2d8152f9b2fbba5b40c453241bf4323e55e0dc070170b04caa35742c6e33a7f726feafb3
    
    
  doc/CHANGES.html
3.16.0
- require OCaml >= 4.08 (@anmonteiro, #2840)
- support ppxlib with OCaml 5.2 AST (and require ppxlib >= 0.36) (@anmonteiro, #2835)
3.15.0
- rtop: read - ~/.config/rtop/init.reconfiguration file (@anmonteiro, #2813)- the -init FILEflag works as before
 
- the 
- rtop: ignore ~/.ocamlinit.mlor~/.config/utop/init.mlconfig files (@anmonteiro, #2813)
- Add support for raw identifier syntax (@anmonteiro, #2796)
- Fix: display attributes in record field and JSX props under punning (@pedrobslisboa, #2824)
- Support modest Unicode letters in identifiers (@anmonteiro, #2828)
- refmt: fix file descriptor leak (@anmonteiro, #2830)
3.14.0
- Support OCaml 5.3 (@anmonteiro, #2800)
- Fix: don't print all extension strings as quoted extensions (@anmonteiro, #2809)
- Fix: unify printing of extensions across structure items / expressions (@anmonteiro, #2814)
3.13.0
- Support module%ppxsyntax (@anmonteiro, #2771)
- Extend open to arbitrary module expression (@anmonteiro, #2773)
- Wrap let lazy patterns = ..in parentheses (let lazy(patterns) = ..) (@anmonteiro, #2774)
- Print poly variants as normal variants (@Sander Spies, #2708)
- Improve printing of anonymous function return type (@Sander Spies, #2686)
- Improve printing of destructuring with local open (@Sander Spies, #2684).
- Parse and print attributes in binding letops (@anmonteiro, #2777).
- Parse polymorphic variants starting with [|(@anmonteiro, #2781)
- Always add a line break in records with 2 or more fields (@anmonteiro, #2779)
- Always break nonempty doc comments after */(@anmonteiro, #2780)
- Improve printing of arrows with labelled arguments (@anmonteiro, #2778)
- Parse and print extensions in open%fooexpressions and structure items (@anmonteiro, #2784)
- Add support for module type substitutions (@anmonteiro, #2785)
- Support type%fooextension sugar syntax (@anmonteiro, #2790)
- Support quoted extensions (@anmonteiro, #2794)
- Parse universal type variables in signature items (@anmonteiro, #2797)
- Fix formatting of callbacks with sequence expressions (@anmonteiro, #2799)
- Fix printing of attributes on module expressions (@anmonteiro, #2803)
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 refmtmanpage (@anmonteiro, #2760)
- add support for parsing / printing of refutation clause in switch(@anmonteiro, #2765)
- support let%ppxin 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 resultpackage, which isn't needed for OCaml 4.03 and above (@anmonteiro) #2703
- Fix 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)#2464- external myFn: (string) => unit;is now equivalent to- external myFn: (string) => unit = "";
 
Bug Fixes:
- Fixes issues where methodand 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 on- refmtversions for native projects. Specify a version >=- 3.4.0if you use- //comments in your Reason code. Specifiy ranges like- 3.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:
- Pipe first braces (2133, 2148).
- Better rtop usedirectives (2146, 2147).
- foo(~Foo.a)becoming- foo(~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 = blablawork (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
- More fixes for pipe first (2120, 2119, 2111).
- 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 funin 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^##bazand 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).
- Better comment printing (1940, 1934).
- 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 comments interleaving (1769, 1770, 1817)
- 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 funfor functions (1588).
- Better record & object printing (1593, 1596).
- 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 was- notpreviously.
- 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 ::fooback 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 refmtnative 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-stdinand--is-interface-ppoption from refmt; they've been deprecated for a long time now
- Remove unused binaries: reup, etc.
- Remove the old reactjs_jsx_ppx.ml. You've all been onreactjs_jsx_ppx_2.mlfor a long time now.
- Reserved keywords can no longer be used as an externaldeclaration's labels.
Deprecated:
- Deprecate --add-printersoption 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