Skip to the content.
Release Notes
-
- version: v0.21.0
- date: ‘2025-04-01’
- features:
- includes the reserved word
datatype to define algebraic data types
- accepts
inductive and data as synonyms for datatype
- includes an updated mini-manual
- accepts the optional reserved word
def in Lean translator and in Coq translator
- fixes:
- fixes the translation of commented code and generation of documentation
- does not create the file
Package.soda when translating to Scala
- build: $
sbt '++ 3.3.5' clean compile test package assembly
- release: target/scala-3.3.5/soda-0.21.0.jar
-
- version: v0.20.0
- date: ‘2024-02-01’
- build: $
sbt '++ 3.3.1' clean compile test package assembly
- release: target/scala-3.3.1/soda-0.20.0.jar
- features:
- includes translation of private functions to Lean
- includes a default function
mk to construct a type, which is invoked with the type name
in a “static” fashion, e.g. Pair_ (fst) (snd) can be created with
Pair .mk (fst) (snd), and if there are no parameters, the parentheses are not needed
- includes more advanced examples for the integration of theorems proved in Lean
- accepts
fun as a synonym of lambda
- deprecated:
- 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
- release: target/scala-3.3.0/soda-0.19.0.jar
- features:
- 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
- accepts
def as an optional reserved word to define functions
- 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:
- 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
- release: target/scala-3.3.0/soda-0.18.0.jar
- features:
- 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 |)
- fixes:
- fixes translation of reserved words after opening parenthesis
- 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
- release: target/scala-3.2.2/soda-0.17.0.jar
- 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
- 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
- deprecated:
- the
end reserved word for match-case is no longer used
-
- version: v0.16.0
- date: ‘2022-08-02’
- features:
- includes an extension to generate LaTeX files from source code
- 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’
- features:
- accepts a long arrow
--> for lambda expressions
- accepts a long double arrow
==> for pattern matching cases
- can fully translate small snippets to Coq
- translates constants and functions starting with
_ as private in Scala
- deprecated:
- the
let-in structures are no longer supported
- the following synonyms are no longer supported
- (asterisk)
* (synonym for class)
- (minus)
- (synonym for has)
- (plus)
+ (synonym for import)
- (vertical bar)
| (synonym for case)
- .
is (synonym for =)
- .
fun (synonym for lambda)
- 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’
- 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
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
- 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
- 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’
- accepts reserved word
fun as synonym for lambda
- accepts reserved word
def as optional to define constants and functions
- deprecated:
- reserved word
has is replaced by abstract block
- 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
- 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
- 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)
- makes annotation
@tailrec only available to class methods
- 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
- deprecated:
- 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’
- 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
- includes examples written in Coq
- 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’
- 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 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
- 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
- release: target/scala-3.0.2/soda-0.11.0.jar
-
- version: v0.10.0
- date: ‘2021-08-08’
- features:
- 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
- includes a module for examples
- 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’
- 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
- is compatible with Scala 2.12.14
- deprecated:
- synonym
suchthat for -> is no longer supported
- 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’
- features:
- 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
- expands Soda library in multiple files
- 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
- release: target/scala-3.0.0/soda-0.8.0.jar
-
- version: v0.7.0
- date: ‘2021-04-24’
- features:
- compiles with Scala 3.0.0-RC2
- 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:
- does not support any longer the use of tuples on the left-hand side of a definition
sign (
=)
- fixes:
- fixes translation of constants that are lambda functions
- 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’
- features:
- is renamed as ‘Soda’ (Symbolic Objective Descriptive Analysis)
- 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’
- 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
- 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,
Scala 2.13.5
- deprecated:
- synonym
to for -> and synonym in for : are no longer supported
- fixes:
- 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
- release: target/scala-3.0.0-RC1/scopus-0.5.0.jar
-
- version: v0.4.0
- date: ‘2021-02-15’
- features:
- has some of its functions renamed to follow snake case
- is compatible with Scala 2.12.13, Scala 2.13.4, and Scala 3.0.0-M3
- translates recursively all files starting in a given directory
- deprecated:
- synonym
- for has is no longer supported
- 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’
- features:
- is stricter in preventing the use of non-Scopus reserved words
- 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’
- features:
- has its source code written in Scopus
- 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’
- features:
- is compiled by default for Scala 3.0.0-M3
- includes a highlighting configuration file for gedit
- renames synonym
that to suchthat
- includes annotation
@main to indicate the entry point
- has an updated manual
- uses JaCoCo for test code coverage analysis
- deprecated:
- synonym
that is no longer supported
- synonym
equals is no longer supported
- fixes:
- fixes translation of tuple definition
- fixes translation of synonyms at the beginning of a line
- 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’
- features:
- has a more detailed manual
- includes synonyms, which are
- (asterisk)
* (synonym for class)
- (minus)
- (synonym for has)
- (plus)
+ (synonym for import)
- .
is (synonym for =)
- .
in (synonym for :)
- .
to (synonym for ->)
- .
that (synonym for ->)
- .
equals (synonym for ==)
- 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’
- features:
- has the asterisk (
*) as synonym for class
- assumes the output file when it is omitted
- fixes:
- fixes translation of definition sign (
=)
- 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’
- features:
- is an operational version with the basic reserved words, which are
- (definition symbol)
=
- (type symbol)
:
- (lambda symbol)
->
- .
if
- .
then
- .
else
- .
class
- .
has
- .
extends
- .
with
- .
this
- .
false
- .
true
- .
not
- .
and
- .
or
- .
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
- release: target/scala-2.13/scopus-0.1.0.jar
-
- schema: RELEASE-NOTES.md.schema.yaml