Releases: mint-lang/mint
0.17.0
🚧 !!! This is a big release containing many breaking changes !!! 🚧
This release got pretty big and it would take a long time to gather all the changes, apologies for that.
Breaking Language Changes (check PRs for detailed changes)
- #503
- Allow multiple statements per block and added standalone block notation.
- Promises changed to take a single parameter instead of two
Promise(value)
. - Removed
try
,parallel
,sequence
,with
,where
,catch
,finally
andthen
language features. - Removed partial application language feature (conflicting with default arguments) until we can figure out a solution for the ambiguity.
- Removed safe operators
&.
and&(
. - Added block expressions.
- Added optional
await
keyword to statements. - Added optional
await
keyword to the condition ofcase
expressions. - Added the ability to define default values for function arguments.
- Added the ability to create decoder functions using the
decode
feature by omitting the decodable object:decode as Array(String)
. - Records are now using
:
instead of=
. - Added here document support:
<<#MARKDOWN Renders markdown content to Html MARKDOWN <<-TEXT Text content which leaves leading indentation intact. TEXT <<~TEXT Text content which leaves trims leading indentation to the first line. TEXT
- The pipe operator
|>
now puts the left hand side value as the first argument instead of the last. #571
Standard Library
There are too many changes to list here because of the standard library cleanup and pipe operator changes so consult the PRs #532 #503 and the API documentation if something doesn't work.
Language Server
Housekeeping
0.16.1
Make sure the build
command succeeds if the public/assets
folder is present.
0.16.0
Parser
The parser has been speeded up thanks to @asterite (#537) - it should parse twice as fast and consume half the memory in the general case.
Type Checker
- Fixed a bug in scoping #529
Bundler
- The service worker now only falls back to paths that matches any routes defined for the application @Eternahl #370 #539
Language Server
- Added
FoldingRange
provider. - Added
CodeAction
provider. - Added a code action to sort the module entities in order.
Standard Library
- Added
Math.trunc
- Added
String.padLeft
- Added
String.takeRight
Time module rewrite
The time module has been completely reworked, check the PR: #526 and the docs for more information.
Housekeeping (@Sija @gdotdesign)
- Bumped Crystal version requirement to 1.3.2
Makefile
: Build the binary only if there are changed files- Updated dependencies
0.15.3
Fixed runtime error in Clipboard.set
0.15.2
0.15.1
Fixed a regression in inline styles handling, where using an non-string attribute could lead to runtime errors (mint-lang/mint-runtime#24)
0.15.0
Language
Time
is now automatically serialized intoString
#357- Tuples now can be automatically serialized #519
- Fixed selector reference
&
in styles #479 or
operator can be used withResult(error, value)
as well
LSP
- Added basic completions for HTML tags and CSS properties #511
- Added completions for enum options #518
- Fixed cursor position lookup #481
- Fixed some compatibility issues with specific clients #493
- Honor
snippetSupport
client setting #520
CLI
- A custom runtime can be used with the
--runtime
flag for thebuild
andcompile
commands #476
Service Worker
- Fix service-worker generation issue #506
Standard Library
Clipboard.set
now returns a string and restores focus and text selection #524- Added
Time.fromUnixTimestampInMs
andTime.toUnixTimestampInMs
#522
Web Components
-
Components can now be exported as web components #501
A new field was added to the
mint.json
for this purpose:{ "name": "my-library", "web-components": { "Button": "my-button" }, "source-directories": [ "source" ] }
In the object, the key of the field refers to the component and the value refers to the tag name of the web component, in this case, the
Button
component will be exported as<my-button>
.
Housekeeping
- More cleanups and refactors by @Sija
0.14.0
Documentation Generator
- Fix documentation generation for modules.
Installer
- Eliminate versions of packages with missing or invalid
mint.json
when installing dependencies.
Compiler
-
#467 #115 Don't minimize the CSS classes in development.
Don't use these CSS classes for targeting - either with DOM or as sub styles - because they are minimized in production!
-
Update the list of valid CSS property names - @Sija
-
Fixes in the generated service worker.
Standard Library
- BREAKING CHANGE Renamed
treshold
field tothreshold
in the subscription forProvider.Intersection
. - Fixes documentation comments for some functions.
Housekeeping
- More cleanups and refactors - @Sija
- Update documentation viewer app.
0.13.1
Fixes a regression with service workers which results in the website not loading.
0.13.0
Breaking Changes
-
Enum destructuring within
case
statements now uses parentheses and commas instead of whitespaces.Given this enum:
enum Status { LoggedIn(Time, User) LoggedOut }
Destructuing before:
case (maybe) { Status::LoggedIn time user => true Status::LoggedOut => flase }
After:
case (maybe) { Status::LoggedIn(time, user) => true Status::LoggedOut => flase }
This was a necessary step to make nested destructuring work.
Language
-
#81 #451 Added line comments: 🎉
// Line comment fun render : Html { ... }
-
Added
@inline
directive which inlines a text file into Mint code asString
:@inline(path/to/file.html) /* String */
-
#418 #419 Added
index
variable to thefor
loops:/* Iterating over Array(item) or Set(item). */ for (item, index of array) { ... } /* Iterating over Map(key, value). */ for (key, value, index of map) { ... }
-
#437 Tuples can be destructured recursively (@matthewmcgarvey):
case ({"A", {"B", "C"}}) { {a, {b, c}} => c => "" }
Official Docker Image
Mint now has alpine-based Docker images hosted on DockerHub (https://hub.docker.com/r/mintlang/mint) for tags and from master (latest
).
Housekeeping
- #429 Run core tests both on Chrome and Firefox in CI.
- Run a format test on the standard library in CI.
- Added
Dockerfile
for official docker images. - Cleanup Markdown files in the repository.
- #421 #423 #424 #425 No longer depending on
string_inflection
,time_format
,time_format
shards - @matthewmcgarvey - Move inlined HTML templates to their own files.
- Lot of assorted refactors 🙏 - @Sija
Standard Library
- Fixed some typos in the documentation comments.
- #427 Fixed
Window.scrollHeight
,Window.scrollWidth
,Window.scrollLeft
,Window.scrollTop
functions in non quirks mode. - Added
File.download
function. - Added
Http.Header
record. - Added
Http.hasHeader
function. - #454 Added
Maybe.withLazyDefault
function. - #453 #460
AnimationFrame
and its provider now provides the elapsed timestamp. - #432 #438 #434
Http.jsonBody
now sets theContent-Type
header of the request toapplication/json
.
Parser
- #435 #431 Optimizations to the parser lead to significant speedups in parsing.
- #420
try
expressions now need a space after thetry
keyword. - Don't parse double equals as a statement.
Type Checker
- #403 Fix rendering of types in error messages.
Formatter
- #273 Record constructors now format into multiple lines if it contains a line break.
- Only use a single space for empty records instead of two.
- Don't format Mint code in JavaScript interpolations.
Installer
- #398 The installer now uses the force flag to checkout using Git.
- #198 Added
mint-version
field to themint.json
which specifies which Mint versions the package works on.
Language Server
- The server now exits properly instead of hanging if the client disconnects unexpectedly.
Test Runner
- #433 #436 The suite name is displayed for failing test cases.
- #441 #443 The test location (filename, line, and column) is displayed for each failing test case.
Compiler
- Fixed the compile order of constants depending on other constants.
CLI
- #408 Added
sandbox-server
command which starts a server for compiling and formatting projects using requests. - #405 Added
lint
command to lint the project for syntax and type errors. - #412 Added
--minify
,--no-minify
flags to thebuild
andcompile
commands which control whether or not to minify the output JavaScript. - #450 Show syntax errors for the
format
command. - #413 Don't generate icons if there is no icon specified.
- Added
--check
flag toformat
command, allowing to check for changes without actually modifying the files (returns with exit code 1 if there are changes) - Added
-r
,--live-reload
,--no-live-reload
flags tostart
command which controls the live reload functionality. - Building assets now respect the
--relative
flag. - Fixed
format
command without any arguments. - Fixed
test
command to return with exit code 1 if any tests fail. - Changed
version
command now returns the plain version only.