All Versions
23
Latest Version
Avg Release Cycle
81 days
Latest Release
212 days ago

Changelog History
Page 1

  • v0.13.1.2 Changes

    May 01, 2021
    • #347: Allowed hspec 2.8. Thanks @felixonmars!
  • v0.13.1.1 Changes

    February 01, 2021
    • #333: Allowed random 1.2. Thanks @felixonmars!
    • โšก๏ธ #334: Updated Arch install instructions. Thanks @ahstro!
    • ๐Ÿ–จ #343: Allowed ghc-exactprint 0.6.4. Thanks @maralorn!
  • v0.13.1.0 Changes

    December 11, 2020

    ๐Ÿ“ฆ https://hackage.haskell.org/package/brittany-0.13.1.0

  • v0.13.0.0 Changes

    December 10, 2020

    ๐Ÿ“ฆ https://hackage.haskell.org/package/brittany-0.13.0.0

  • v0.12.2.0 Changes

    November 15, 2020

    ๐Ÿ“ฆ https://hackage.haskell.org/package/brittany-0.12.2.0

    #207: Fix newtype indent in associated type family.
    #231: Improve comments-affecting-layout behaviour for tuples.
    #259: Data declaration for newtype and records. Thanks @eborden!
    #263: Fix non-idempotent newlines with comment + where.
    #273: Error handling.
    #281: Fix moving comment in export list (haddock header).
    #286: Fix comments in instance/type instances.
    ๐Ÿ‘ #287: Add support for pattern synonyms. Thanks @RaoulHC!
    #293: Expose main function as a module. Thanks @soareschen!
    ๐Ÿ‘ #303: Readme: Supports 8.8. Thanks @andys8!
    #311: Allows aeson-1.5.*. Thanks @jkachmar!
    #313: Nondecreasing export list formatting. Thanks @expipiplus1!

  • v0.12.1.1 Changes

    December 01, 2019
    • ๐Ÿ›  Bugfixes:
      • Fix layouting regression of record update for many/large fields
      • Fix whitespace regression on ExplicitForall notation (foo :: forall a . Show a => a -> a, note the double space) introduced in 0.12. (#264)
      • Fix roundtripping of type equality constraint f :: ((~) a b) => a -> b (#267)
    • One experimental feature addition: Turning brace notation semicolons into newlines when formatting (see #270)
  • v0.12.1.0 Changes

    September 01, 2019
    • ๐Ÿ‘Œ Support ghc-8.8
    • ๐Ÿ‘Œ Support for OverloadedLabels extension (thanks to Evan Rutledge Borden @eborden)
    • ๐Ÿ‘Œ Support for Implicit Params extension (thanks to pepe iborra @pepeiborra)
    • โž• Add flag --no-user-config to enable only using manually passed config
    • ๐ŸŽ Disable the performance test suite by default to prevent spurious failures on certain CI setups. The github/travis brittany CI still has all tests enabled. See the brittany-test-perf flag in the cabal file.
    • ๐Ÿ›  Bugfixes:
      • Fix one wandering-comment bug for let-in expressions
      • Fix invalid result for prefix operator pattern matches
      • Fix lambda expression with laziness/strictness annotation
      • Fix parenthesis handling for infix pattern matches with 3+ arguments
    • ๐Ÿ”„ Changes to layouting behaviour:
      • For pattern matching and data/instance definitions, the usage of parenthesis is now "normalized", i.e. superfluous parens are removed by brittany.
  • v0.12.0.0 Changes

    June 01, 2019
    • ๐Ÿ‘Œ Support for ghc-8.6 (basic support, not necessarily all new syntactic extensions)
    • ๐Ÿ‘Œ Support -XExplicitNamespaces and -XPatternSynonyms
    • ๐Ÿ‘ Allow a --dry-run sort of operation via flag "-c/--check-mode" (thanks to Doug Beardsley @mightybyte)
    • ๐Ÿ‘ Include file name in errors about unsupported syntax nodes (thanks to @5outh)
    • Partially implement layouting class instances: Layouts children, but falls back on ghc-exactprint for the instance head (thanks to Rupert Horlick @ruhatch)
    • Implement layouting for type synonyms (thanks to Rupert Horlick @ruhatch)
    • ๐Ÿ‘Œ Support -XMagicHash, -XUnboxedTuples (thanks to Sergey Vinokurov @sergv)
    • ๐Ÿ‘Œ Support -XQuasiQuotes (no formatting applied to the splices; they are simply retained without causing the dreaded "Unknown construct: HsSpliceE{}")
      • lconfig_allowHangingQuasiQuotes controls whether multi-line QuasiQuotes are allowed to start at the end of the current line, or whether they are always placed in new lines.
    • ๐Ÿ›  Bugfixes:
      • Fix rare-case alignment bug with IndentPolicyMultiple (#144)
      • Make inline layout config apply to module header (#151)
      • Fix unaligned import-hiding layout (#150)
      • Fix idempotence violation for comments around if-then-else (#167)
      • Fix comments having an effect on far-away parent node's layout (#159)
      • Fix imports of type operators ("symbolic data types") (thanks to Phil Hazelden @ChickenProp)
      • Work around GHC and cabal-install misfeature ".ghc.environment files" that could break brittany in unexpected and hard-to-understand ways
      • Stop removing empty lines before where keyword in a couple of cases
      • Fix functions with mixing prefix/infix style causing error (#234)
    • ๐Ÿ”„ Changes to layout:
      • Align usage of spaces for record update vs record construction (#126)
      • More indentation to import-hiding-paragraph (follow-up to #150 fix)
      • Record construction and update now are layouted in the same way (thanks to Evan Rutledge Borden @eborden)
      • Stop allowing single-line layout when there are comments between arguments (#214) (thanks to @matt-noonan)
    • ๐Ÿ— Various build-instructions and editor integrations
  • v0.11.0.0 Changes

    May 01, 2018
    • ๐Ÿ‘Œ Support for ghc-8.4
    • Implement inline-config e.g. "-- brittany --indent=4"

      respects the following comment forms as input:

      source comment                       affected target
      ======================================================
      "-- brittany CONFIG"                 whole module
      "-- brittany-next-binding CONFIG"    next binding
      "-- brittany-disable-next-binding"   next binding
      "-- brittany @ myExampleFunc CONFIG" `myExampleFunc`
      

      multiline-comments are supported too, although the specification must still be a single line. E.g.

      "{- brittany --columns 50 -}"

      CONFIG is either:

      1) one or more flags in the form of what brittany accepts on the commandline, e.g. "--columns 50", or 2) one or more specifications in the form of what brittany accepts in its config files for the layouting config (a one-line yaml document), e.g. "{ lconfig_cols: 50 }"

    • Implement IndentPolicyMultiple (thanks to Bryan Richter @chreekat) Restrict indentation amounts to n * indentAmount

    • Implement --obfuscate that replaces non-keyword identifiers with random names

    • โšก๏ธ Do not write files unless there are changes (don't update modtime) (--write-mode=inplace) (#93)

    • ๐Ÿ›  Bugfixes:

      • Fix empty function constraints (() => IO ()) (#133)
      • Fix overflowing columns caused by aligning with surrounding lines for certain complex cases
      • Implement hacky workaround for type instances (-XTypeFamilies) (#89)
    • Layouting changes:

      • On default settings, allow single-line module header module MyModule where when no exports
      • Fix one case of non-optimal layouting for if-then-else
      • Allow same-line let binding inside do-notation with IndentPolicyLeft/Multiple and indentAmount>=4
  • v0.10.0.0 Changes

    March 01, 2018
    • Implement module/exports/imports layouting (thanks to sniperrifle2004)
    • ๐Ÿ”ฆ Expose config paths/parsing functions (thanks to Alexey Raga)
    • ๐Ÿ›  Bugfixes:
      • Fix layouting of NOINLINE pragma
      • Fix ticked type operator (e.g. ':-) losing tick (#125)
      • Fix alignment issue with cases involving operators (#65)
      • Fix comments in tuples being dropped (#37)
      • Fix comment placements with let-in (#110)
    • Layouting changes:
      • Align arguments only if it is the same function being called (#128)
      • Do not use single-line layout when infix operator expression contains comments (#111)
    • ๐Ÿ†• New layouting config items:
      • lconfig_importColumn/--import-col: column for import items
      • lconfig_importAsColumn/--import-as-col: column for the "as" name of a module
      • lconfig_reformatModulePreamble: controls module/export/import layouting (default True)
      • lconfig_allowSingleLineExportList: permit one-line module header, e.g. module Main (main) (default False)