diff --git a/docs/RELEASE-NOTES.md b/docs/RELEASE-NOTES.md index 7f679aa3..eded3ff2 100644 --- a/docs/RELEASE-NOTES.md +++ b/docs/RELEASE-NOTES.md @@ -1,18 +1,19 @@ +## Release Notes --- - - version: v0.20.0 - - date: 'not released' - - build: sbt '++ 3.3.1' clean compile test package assembly + - date: not released + - build: $ `sbt '++ 3.3.1' clean compile test package assembly` - release: target/scala-3.3.1/soda-0.20.0.jar - deprecated_features: - - the `theorem` reserved word is no longer used, and its functionality is replaced by - `directive` + - the `theorem` reserved word is no longer used, and its functionality is replaced + by `directive` - - version: v0.19.0 - date: '2023-07-01' - - build: sbt '++ 3.3.0' clean compile test package assembly + - build: $ `sbt '++ 3.3.0' clean compile test package assembly` - release: target/scala-3.3.0/soda-0.19.0.jar - new_features: - - includes creation of instances with individual parameters, e.g. `Pair_ (fst) (snd)` - instead of `Pair_ (fst , snd)` + - includes creation of instances with individual parameters, e.g. `Pair_ (fst) + (snd)` instead of `Pair_ (fst , snd)` - includes an experimental translator to Lean 4, which can translate some snippets - uses `Type` to define type membership of parametric types - accepts that class `end` could have a class name @@ -20,43 +21,45 @@ - includes the reserved word `directive` to include specific pieces of code depending on the translator, especially for the translators to Lean and to Coq - deprecated_features: - - the `proof` reserved word is no longer used, and a `theorem` block should include the - proof after stating the theorem + - the `proof` reserved word is no longer used, and a `theorem` block should include + the proof after stating the theorem - - version: v0.18.0 - date: '2023-06-01' - - build: sbt '++ 3.3.0' clean compile test package assembly + - build: $ `sbt '++ 3.3.0' clean compile test package assembly` - release: target/scala-3.3.0/soda-0.18.0.jar - new_features: - - assumes translation to `Package.scala` files as default configuration for the Scala - translator + - assumes translation to `Package.scala` files as default configuration for the + Scala translator - expects multiple type parameters to be between different square brackets, e.g. `MyPair [A] [B]` instead of `MyPair [A, B]` - accepts intersection types (built with `&`) and union types (built with `|`) - bug_fixes: - fixes translation of reserved words after opening parenthesis - - fixes edge case of directory scanner when translating multiple Soda files to Scala + - fixes edge case of directory scanner when translating multiple Soda files to + Scala - fixes processing of Soda files when Package.soda file is missing - - version: v0.17.0 - date: '2023-03-01' - - build: sbt '++ 3.2.2' clean compile test package assembly + - build: $ `sbt '++ 3.2.2' clean compile test package assembly` - release: target/scala-3.2.2/soda-0.17.0.jar - new_features: - includes an option to translate a whole Soda package into a single Scala file - reads `Package.soda` as prelude for a Soda file in the same directory - - requires `match`-`case` structures to be used at most once in a function definition, and - cannot be nested in another structure + - requires `match`-`case` structures to be used at most once in a function definition, + and cannot be nested in another structure - improves function definition by allowing multiple lines in its signature - accepts reserved word `any` as a synonym for `lambda` - - accepts Unicode characters for reserved words, like the letter lambda for `lambda` and - right arrows for `->`, `-->`, and `==>` - - includes a Bash script (`makeall.sh`) to build the project and create the binary file + - accepts Unicode characters for reserved words, like the letter lambda for `lambda` + and right arrows for `->`, `-->`, and `==>` + - includes a Bash script (`makeall.sh`) to build the project and create the binary + file - deprecated_features: - the `end` reserved word for `match`-`case` is no longer used - - version: v0.16.0 - date: '2022-08-02' - new_features: - includes an extension to generate LaTeX files from source code - - build: sbt '++ 3.1.3' clean compile test package assembly + - build: $ `sbt '++ 3.1.3' clean compile test package assembly` - release: target/scala-3.1.3/soda-0.16.0.jar - - version: v0.15.0 - date: '2022-03-10' @@ -74,26 +77,27 @@ - (vertical bar) `|` (synonym for `case`) - . `is` (synonym for `=`) - . `fun` (synonym for `lambda`) - - build: sbt '++ 3.1.1' clean compile test package assembly + - build: $ `sbt '++ 3.1.1' clean compile test package assembly` - release: target/scala-3.1.1/soda-0.15.0.jar - - version: v0.14.0 - date: '2022-02-11' - new_features: - - uses curried functions instead of the uncurried ones, for example, replacing `f (x, y)` - by `f (x) (y)` - - generates default constructors for all the abstract classes and these constructors are - named like the class with an underscore (`_`) at the end - - renames the main class to be `Main` and `Main_` for the abstract and concrete classes - respectively + - uses curried functions instead of the uncurried ones, for example, replacing + `f (x, y)` by `f (x) (y)` + - generates default constructors for all the abstract classes and these constructors + are named like the class with an underscore (`_`) at the end + - renames the main class to be `Main` and `Main_` for the abstract and concrete + classes respectively - uses `Main` class to detect the entry point - does not support the `with` reserved word - - changes the syntax of class declarations such that each super class needs its own line and - the definition sign (`=`) is not used - - includes reserved word `abstract` to define a block of abstract constants and functions + - changes the syntax of class declarations such that each super class needs its + own line and the definition sign (`=`) is not used + - includes reserved word `abstract` to define a block of abstract constants and + functions - makes reserved word `import` define a block of classes to import - produces a more similar translation to Scala by removing the line joiners - - restricts how a constant or function is defined, such that the definiendum cannot be - written in multiple lines + - restricts how a constant or function is defined, such that the definiendum cannot + be written in multiple lines - does not need opening brace (`{`) to start a class definition - uses word `end` to end a class definition - has `lambda` reserved word as 'recommended' instead of 'optional' @@ -104,125 +108,132 @@ - abbreviation `+` is replaced by its long form `import` - classes are no longer defined with braces (`{` and `}`) - annotation `@main` is no longer user - - build: sbt '++ 3.1.1' clean compile test package assembly + - build: $ `sbt '++ 3.1.1' clean compile test package assembly` - release: target/scala-3.1.1/soda-0.14.0.jar - - version: v0.13.0 - date: '2022-01-14' - - build: sbt '++ 3.1.0' clean compile test package assembly + - build: $ `sbt '++ 3.1.0' clean compile test package assembly` - new_features: - compiles with Scala 3.1.0 - is compatible with Scala 2.13.8 - changes syntax of pattern matching to use `match`, `case`, `=>`, `end` - - includes reserved words `theorem` and `proof` to write properties in Gallina (Coq) + - includes reserved words `theorem` and `proof` to write properties in Gallina + (Coq) - makes annotation `@tailrec` only available to class methods - - adopts special prefixes `_tailrec_` for tail recursive functions and `_rec_` for recursive - functions + - adopts special prefixes `_tailrec_` for tail recursive functions and `_rec_` + for recursive functions - uses a `let`-`in` structure in functions of unit tests - - discourages use of `let`-`in` structures and does not support nested use, to avoid long - functions + - discourages use of `let`-`in` structures and does not support nested use, to + avoid long functions - deprecated_features: - - use of a `let`-`in` structure is only supported as main structure inside a test or - function definition + - use of a `let`-`in` structure is only supported as main structure inside a test + or function definition - release: target/scala-3.1.0/soda-0.13.0.jar - - version: v0.12.0 - date: '2021-10-08' - new_features: - makes a stronger distinction between interfaces and other abstract classes - - requires that the reserved word `match` needs to be at the beginning of the line + - requires that the reserved word `match` needs to be at the beginning of the + line - includes examples written in Coq - - build: sbt '++ 3.0.2' clean compile test package assembly + - build: $ `sbt '++ 3.0.2' clean compile test package assembly` - release: target/scala-3.0.2/soda-0.12.0.jar - - version: v0.11.0 - date: '2021-09-12' - new_features: - compiles with Scala 3.0.2 - has an improved documentation - - includes `match` and `case` for pattern matching, and synonym `|` at the beginning of the - line for `case` - - includes an optional `lambda` reserved word to make lambda expressions more explicit + - includes `match` and `case` for pattern matching, and synonym `|` at the beginning + of the line for `case` + - includes an optional `lambda` reserved word to make lambda expressions more + explicit - includes type aliases for code translated to Scala 3 - - allows defining the body of a class without braces when the code is translated to Scala 3 + - allows defining the body of a class without braces when the code is translated + to Scala 3 - adopts a naming standard for concrete classes to end in underscore - includes new synonyms, `<:` for `subtype` and `>:` for `supertype` - - supports (again) the use of tuples on the left-hand side of a definition sign (`=`) - - renames (again) concrete classes in `OptionSD`, mapping `NoneSD` to `NoneSD_` and `SomeSD` - to `SomeSD_` - - build: sbt '++ 3.0.2' clean compile test package assembly + - supports (again) the use of tuples on the left-hand side of a definition sign + (`=`) + - renames (again) concrete classes in `OptionSD`, mapping `NoneSD` to `NoneSD_` + and `SomeSD` to `SomeSD_` + - build: $ `sbt '++ 3.0.2' clean compile test package assembly` - release: target/scala-3.0.2/soda-0.11.0.jar - - version: v0.10.0 - date: '2021-08-08' - new_features: - - has its functions separated from concrete classes making abstract classes the only classes - containing functions + - has its functions separated from concrete classes making abstract classes the + only classes containing functions - uses a uniform standard for constant names, function names, and class names - - renames `foldLeft` and `foldLeftWhile` to just `fold` in `Recursive` library class - - renames concrete classes in `OptionSD`, mapping `NoneSD` to `NoElem` and `SomeSD` to - `SomeElem` + - renames `foldLeft` and `foldLeftWhile` to just `fold` in `Recursive` library + class + - renames concrete classes in `OptionSD`, mapping `NoneSD` to `NoElem` and `SomeSD` + to `SomeElem` - includes a module for examples - - build: sbt '++ 3.0.0' clean compile test package assembly + - build: $ `sbt '++ 3.0.0' clean compile test package assembly` - release: target/scala-3.0.0/soda-0.10.0.jar - - version: v0.9.0 - date: '2021-07-23' - new_features: - includes `let` and `in` reserved words to define a block of bindings - makes opening brackets (`[`) in the same line as the following - - makes closing parenthesis (`)`) and closing brackets (`]`) be in the same line as the - previous one - - makes reserved words `extends` and `with` be able to join lines, - either written at the beginning to join the previous line, or at the end to join the - following line + - makes closing parenthesis (`)`) and closing brackets (`]`) be in the same line + as the previous one + - makes reserved words `extends` and `with` be able to join lines, either written + at the beginning to join the previous line, or at the end to join the following + line - is compatible with Scala 2.12.14 - deprecated_features: - synonym `suchthat` for `->` is no longer supported - - build: sbt '++ 3.0.0' clean compile test package assembly + - build: $ `sbt '++ 3.0.0' clean compile test package assembly` - release: target/scala-3.0.0/soda-0.9.0.jar - - version: v0.8.0 - date: '2021-05-23' - new_features: - - compiles with Scala 3.0.0 and is compatible with Scala 2.13.6, Scala 2.12.13, and Scala - 2.11.12 + - compiles with Scala 3.0.0 and is compatible with Scala 2.13.6, Scala 2.12.13, + and Scala 2.11.12 - lets Scala 3 reserved words be usable as variable, function, and class names - makes `=` (definition symbol) used to define values, functions, and classes - - replaces `new` command by `@new` annotation, which is only required to translations to - Scala 2 + - replaces `new` command by `@new` annotation, which is only required to translations + to Scala 2 - expands Soda library in multiple files - - accepts `(` (opening parenthesis) at the end of a line to join lines, like `,` (comma) - does + - accepts `(` (opening parenthesis) at the end of a line to join lines, like `,` + (comma) does - replaces `extends` to declare upper bounds of type parameters by `subtype` - includes `supertype` to declare lower bounds of type parameters - - replaces all `package.scala` files by `Package` abstract classes to document the package - - build: sbt '++ 3.0.0' clean compile test package assembly + - replaces all `package.scala` files by `Package` abstract classes to document + the package + - build: $ `sbt '++ 3.0.0' clean compile test package assembly` - release: target/scala-3.0.0/soda-0.8.0.jar - - version: v0.7.0 - date: '2021-04-24' - new_features: - compiles with Scala 3.0.0-RC2 - - makes `:=` (parameter definition symbol) as the symbol to define values for named - parameters + - makes `:=` (parameter definition symbol) as the symbol to define values for + named parameters - includes `extends` to declare upper bounds of type parameters, with the meaning 'subtype of' - includes a file expansion of a basic library when it finds `lib.soda` - produces better looking Scala translated source code - deprecated_features: - - does not support any longer the use of tuples on the left-hand side of a definition sign - (`=`) + - does not support any longer the use of tuples on the left-hand side of a definition + sign (`=`) - bug_fixes: - fixes translation of constants that are lambda functions - - build: sbt '++ 3.0.0-RC2' clean compile test package assembly + - build: $ `sbt '++ 3.0.0-RC2' clean compile test package assembly` - release: target/scala-3.0.0-RC2/soda-0.7.0.jar - - version: v0.6.0 - date: '2021-04-03' - new_features: - is renamed as 'Soda' (Symbolic Objective Descriptive Analysis) - - build: sbt clean compile test package assembly + - build: $ `sbt clean compile test package assembly` - release: target/scala-3.0.0-RC1/soda-0.6.0.jar - - version: v0.5.0 - date: '2021-03-28' - new_features: - translates functions without parameters as `lazy val` - changes its main package to `scopus`, and includes subpackages - - accepts `,` (comma) at the end of a line to join lines and allow multi-line function - signatures + - accepts `,` (comma) at the end of a line to join lines and allow multi-line + function signatures - makes annotation `@tailrec` be automatically imported - allows annotation `@tailrec` only inside functions - compiles with Scala 3.0.0-RC1 and is compatible with Scala 2.11.12, Scala 2.12.13, @@ -233,7 +244,7 @@ - fixes the names of the created library jar files - fixes parsing of strings with escaped characters - fixes translation of `not` - - build: sbt clean compile test package assembly + - build: $ `sbt clean compile test package assembly` - release: target/scala-3.0.0-RC1/scopus-0.5.0.jar - - version: v0.4.0 - date: '2021-02-15' @@ -243,26 +254,25 @@ - translates recursively all files starting in a given directory - deprecated_features: - synonym `-` for `has` is no longer supported - - build: sbt clean compile test package assembly + - build: $ `sbt clean compile test package assembly` - release: target/scala-3.0.0-M3/scopus-0.4.0.jar - - version: v0.3.1 - date: '2021-02-09' - new_features: - is stricter in preventing the use of non-Scopus reserved words - - build: sbt clean compile test package assembly + - build: $ `sbt clean compile test package assembly` - release: target/scala-3.0.0-M3/scopus-0.3.1.jar - - version: v0.3.0 - date: '2021-02-02' - new_features: - has its source code written in Scopus - - build: sbt clean compile test package assembly + - build: $ `sbt clean compile test package assembly` - release: target/scala-3.0.0-M3/scopus-0.3.0.jar - - version: v0.2.1 - date: '2021-02-01' - new_features: - is compiled by default for Scala 3.0.0-M3 - - includes a highlighting configuration file for - [gedit](https://gitlab.gnome.org/GNOME/gedit/) + - includes a highlighting configuration file for [gedit](https://gitlab.gnome.org/GNOME/gedit/) - renames synonym `that` to `suchthat` - includes annotation `@main` to indicate the entry point - has an updated manual @@ -273,7 +283,7 @@ - bug_fixes: - fixes translation of tuple definition - fixes translation of synonyms at the beginning of a line - - build: sbt clean compile test package assembly + - build: $ `sbt clean compile test package assembly` - release: target/scala-3.0.0-M3/scopus-0.2.1.jar - - version: v0.2.0 - date: '2020-11-21' @@ -288,7 +298,7 @@ - . `to` (synonym for `->`) - . `that` (synonym for `->`) - . `equals` (synonym for `==`) - - build: sbt clean compile test package assembly + - build: $ `sbt clean compile test package assembly` - release: target/scala-2.13/scopus-0.2.0.jar - - version: v0.1.1 - date: '2020-11-16' @@ -297,7 +307,7 @@ - assumes the output file when it is omitted - bug_fixes: - fixes translation of definition sign (`=`) - - build: sbt clean compile test package assembly + - build: $ `sbt clean compile test package assembly` - release: target/scala-2.13/scopus-0.1.1.jar - - version: v0.1.0 - date: '2020-11-05' @@ -322,9 +332,9 @@ - . `package` - . `import` - . `new` - - has `@tailrec` annotation to indicate tail recursion, and `@override` annotation to allow - overriding JVM functions - - build: sbt clean compile test package assembly + - has `@tailrec` annotation to indicate tail recursion, and `@override` annotation + to allow overriding JVM functions + - build: $ `sbt clean compile test package assembly` - release: target/scala-2.13/scopus-0.1.0.jar - - schema: RELEASE-NOTES.md.schema.yaml