Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

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][#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][#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 method and similar keywords will be transformed to method_ (@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

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 refmt versions for native projects. Specify a version >= 3.4.0 if 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 use directives (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 = 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

  • 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)] to foo[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:

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 now foo(. 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 be Some(x: string) (1576).
  • Remove few places remaining that accidentally print fun for 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 not 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. See README.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 now
  • Remove unused binaries: reup, etc.
  • Remove the old reactjs_jsx_ppx.ml. You've all been on reactjs_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. See README.md. We've back-ported this into the 1.13.7 release =)

1.13.6

  • Changelog got sent into a black hole