Ormolu 0.7.3.0
* Switched to ghc-lib-parser-9.8, with the following new syntactic features:
- ExtendedLiterals: 123#Int8 is a literal of type Int8#. (disabled by
default)
- TypeAbstractions: @k-binders in data type declarations (enabled by
default)
- GHC proposal #134: deprecating/warning about exports
- GHC proposal #541: warning categories
Ormolu 0.7.2.0
* Preserve necessary braces for final function arguments. Issue 1044.
* Put "this" PackageImports at the end. Issue 1048.
* Format parenthesized operators starting with a # correctly in the
presence of UnboxedSums. Issue 1062.
* Fix false positives in AST diffing related to empty Haddock comments in
data declarations. Issue 1065.
Ormolu 0.7.1.0
* Include base fixity information when formatting a Haskell file that's not
mentioned in an existing cabal file. Issue 1032
* Update displayException for OrmoluException to pretty print the
exception. PR 1031.
* Ormolu is now aware of more common module re-exports by default.
* Support explicit mention of target package name in module
re-exports. Even if the exported package is not specified as a direct
dependency of the component being formatted it will still be taken into
account correctly. Issue 1037.
* Ormolu no longer fails when CPP directly follows the import section (a
regression introduced in 0.7.0.0). Issue 1040.
Ormolu 0.7.0.0
* Inference of operator fixity information is now more precise and takes
into account the import section of the module being formatted. Issue 892
and issue 929.
* Ormolu can now be made aware of module re-exports through either special
declarations in .ormolu files (see the readme for a description of the
syntax), or on the command line with the --reexport/-r option. Issue
1017.
* Ormolu now looks for .ormolu files independently of .cabal files. This
means that it is now possible to have one .ormolu file for multiple Cabal
packages. Issue 1019.
* Consistently format do blocks/cases/MultiWayIfs with 4 spaces if and only
if they occur as the applicand. Issue 1002 and issue 730.
* Support the (deprecated) DatatypeContexts extension to avoid
surprises. Issue 1012.
* Don't let comments escape from empty export lists. Issue 906.
* Format \cases with multiple patterns across multiple lines
correctly. Issue 1025.
Ormolu 0.6.0.1
* Fix false positives in AST diffing related to UnicodeSyntax. PR 1009.
Ormolu 0.6.0.0
* Haddocks attached to arguments of a data constructor are now formatted in
the pipe style (rather than the caret style), consistent with everything
else. As a consequence, now Ormolu's output will be deemed invalid by the
Haddock shipped with GHC <9.0. Issue 844 and issue 828.
* Insert space before char literals in ticked promoted constructs when
necessary. Issue 1000.
* Switched to ghc-lib-parser-9.6:
- Extended OverloadedLabels: #Foo, #3, #"Hello there".
- Also, it is now disabled by default, as it causes e.g. a#b to be parsed
differently.
- New extension: TypeData, enabled by default.
- Parse errors now include error codes, cf. https://errors.haskell.org.
* Updated to Cabal-syntax-3.10.
* Now whenever Ormolu fails to parse a .cabal file it also explains why. PR
999.
Ormolu 0.5.3.0
* Stop making empty lets move comments. Issue 917.
* Now .ormolu fixity override files can use both LF and CRLF line
endings. PR 969.
* Normalize parentheses around constraints. Issue 264.
* The ormolu function now consumes Text instead of String due to an
internal refactoring.
* Exposed a more complete public API in the Ormolu module. The API is
supposed to be stable and change according to PVP.
* Now warnings regarding Ormolu not being able to find .cabal files or
finding such files but them not mentioning the source file in question
are only displayed when --debug is used. Printing the warnings by default
seems to have been confusing, see e.g. Issue 971 and issue 924.
Version 1.5 - 2023-09-10
* Progress reporting is no longer ignored. PrintTest constructor of
TestOutput now has an extra field used to report progress. Supply const
(pure ()) as this extra field value if you want to skip progress
reporting (#311).
* foldGroup now takes [b] instead of b as its last argument to allow for
custom fold strategies. This is a backwards incompatible change, but you
can get the old behavior by applying mconcat (#364).
* Dependency loop error now lists all test cases that formed a cycle
(#340).
* Dependencies can now be defined pattern-free with sequentialTestGroup
(#343).
* Added --min-duration-to-report flag that specifies the time a test must
take before tasty outputs timing information (#341).
* When a test failed with an exception, print it using displayException
instead of show (#330).
* The -p / --pattern option can be specified multiple times; only tests
that match all patterns are run (#380).
* Fix color scheme to make info messages visible in terminals with white
background (#369).
* When parsing of a command-line option failed, report received option
(#368).
* Support WASM (#365).
* Tested with GHC 8.0 - 9.8.
6.0.3 (2023-10-23)
Added
* Data instances for the various data types.
* Simple conversion types between the main version types.
* Compile-time constructors via Template Haskell, like versioningQ.
6.0.2 (2023-10-12)
Added
* Lift instances for the various types, which allows parsing version
numbers at compile time within Template Haskell quotes. Currently there
is no exported function that supports this directly, but you could write
one like:
-- | Parse a `Versioning` at compile time.
thVer :: Text -> Q Exp
thVer nm =
case versioning nm of
Left err -> fail (errorBundlePretty err)
Right v -> lift v
Changed
* Due to the new dependency on template-haskell, GHC 8.8 is now the lowest
supported compiler version.
6.0.1 (2023-05-08)
Fixed
* Restored the ability to compile with GHC versions earlier than 9.
6.0.0 (2023-04-29)
A number of type changes have been made to improve parsing and comparison
logic. Doing so fixed several bugs and made the code cleaner overall.
If you're just doing basic parsing and comparisons and not actually
inspecting the types themselves, you shouldn't notice a difference.
Added
* New types Release, Chunks, and Chunk.
Changed
* Both SemVer and Version now contain a better-behaving Release type for
their prerelease info.
* Similarly, Version now also has a better-behaving Chunks type for its
main version number sections.
* The release traversal now yields a Maybe Release.
* Versions with ~ in their metadata will now parse as a Mess. Example:
12.0.0-3ubuntu1~20.04.5
Removed
* The various Semigroup instances. Adding version numbers together is a
nonsensical operation and should never have been added in the first
place.
* The VChunk and VUnit types and their associated functions.
Fixed
* Leading zeroes are handled a little better in SemVer pre-release data.
5.0.5 (2023-03-23)
Changed
* Bumped base bound to support GHC 9.6.
hslua-objectorientation-2.3.0 - Released 2023-03-13.
* Export all constructors and functions of type Property.
* Renamed peekUD to peekUDGeneric and pushUD to pushUDGeneric. Functions
with the old names are now now defined hslua-packaging.
* Hook for udtype metatable initializer. The function pushUDGeneric takes
an additional hook parameter. The hook operation can be used to perform
additional setup operations, e.g., for documentation.
The old pushUD function can be recovered with
pushUD = pushUDGeneric (\_ -> pure ())
The hslua-packaging now exports a pushUD functions that is specialized to documented types.
* Export new function initTypeGeneric: The function ensures that a type's
metatable is initialized and available from the registry. Just like with
pushUDGeneric, a hook can be used to augment the initialization.
* Type info for properties: Properties are amended with information on the
property's type. The functions property, possibleProperty, and readonly
each now come with typed version property', possibleProperty', and
readonly'. This allows to specify the type of a property value.
* Functions for object typing info: The functions udDocs and udTypeSpec are
added, enabling the generation of typing information for UDType objects.
Ruff is an extremely fast Python linter, written in Rust.
Ruff aims to be orders of magnitude faster than alternative tools
while integrating more functionality behind a single, common
interface.
Ruff can be used to replace Flake8 (plus dozens of plugins), isort,
pydocstyle, yesqa, eradicate, pyupgrade, and autoflake, all while
executing tens or hundreds of times faster than any individual
tool.