| Overview | |
|---|---|
|
most recent version: |
2.7.2 (download) |
|
release date: |
2019-06-03 |
|
dependent on: |
Java JRE 7 (1.7) or higher |
|
license: |
BSD |
|
development state: |
active |
* notice
+ feature added, replaced or improved
- feature removed
# bugfix
---v2.7.2--- 2019-06-03
# Raising 0 to the power of some negative number will result in some more useful exception
---v2.7.1--- 2018-10-15
# Fix issue with parameter of setPenColor()
# Unix launch script: prevent usage of rlwrap inside emacs
---v2.7.0--- 2017-10-03
+ add statistics library by Leon Mutschke and Jonas Siefker
---v2.6.1--- 2017-04-08
+ add la_hadamard(matrixA, matrixB) procedure
# fix sorting with different number types: sort([1, 3, 2.0, 4.0])
---v2.6.0--- 2017-01-08
+ multiplication of matrix and vector will result in a vector instead of a matrix
+ the <==> operator is now a viral operation when terms are involved
---v2.5.3--- 2016-11-26
# fix modulo and integer division when negative numbers are involved
---v2.5.2--- 2016-11-01
# fix bug that terms are not viral in Boolean operations
+ added varName to termUtilities library
---v2.5.1--- 2016-10-15
# fix bug that doubles and rationals are regarded equal in too many cases
* Note: now set of equal doubles and rationals will contain both values,
instead of just one ({1.0, 1, 1} -> {1.0, 1} instead of just {1} or {1.0})
+ added procedure writeLibrary() that will (re)write the default library
matching the running setlX version into the library path
+ added procedure writeExamples(directoryPath) that will (re)write the
examples of the running setlX version into the supplied path
---v2.5.0--- 2016-10-01
* Note: the setlX start scripts changed - please update yours!
* Note: setlX now requires Java7 or higher to run
+ Changed confusing matching of variables and functions
* removed quote expression ('@')
+ terms must start with an at symbol ('@') instead of an upper case letter
+ variables can start with upper case letters
+ added isVariable(term) function, that tests if given term represents a variable
* 'internal' terms start with three at symbols ('@@@') instead of one
* please (re)read related sections in tutorial for more details and clarifications
+ forall and exists will set their iteration variables to om, when forall == true and exists == false
+ added standard library files that are distributed with the interpreter
+ accessing the members of a matrix will return a vector instead of a list
# fixed minor bug in plotting functions
---v2.4.3--- 2016-08-01
# fix version number
# fix building 1.6 compatible version when tests are enabled
---v2.4.2--- 2016-07-21
# prevent concurrent modification during iterations
---v2.4.1--- 2016-07-03
# Fix error handling when trying to modify collection during iteration
---v2.4.0--- 2015-07-05
+ added plotting functionality
---v2.3.4--- 2015-02-11
# fixed matrix ** 0 computation
# return more intuitive result for la_eigenVectors
# removed error on empty closures
---v2.3.3--- 2014-12-14
# fixed operator associativity
# hopefully final rework of stack handling
---v2.3.2--- 2014-10-26
+ implemented lambda closures (e.g. x |=> y )
# reworked stack handling
---v2.3.1--- 2014-10-13
# minor performance fixes
+ updated tutorial
---v2.3.0--- 2014-10-09
+ implemented matrix functionality
+ separated closures and procedures; normal procedures do not have closure functionality
+ allow to access relations with multiple parameters without explicitly wrapping those
parameters into a list, e.g.
r[[a,b]] := 1; print(r[[a,b]]);
may now be written as
r[a,b] := 1; print(r[a,b]);
+ added specification of optional and unlimited parameters for procedures, closures and classes
+ added ability to expand lists as arguments for function calls
---v2.2.4--- 2014-06-09
+ added "getClass()" method to objects, that refers to the class used to create
that object
+ improve print() of predefined functions when they have optional parameters
# fix some error messages when trying to perform operation on om
# fixed some internal issues with comparing objects and classes
---v2.2.3--- 2014-04-07
+ updated tutorial
+ add --harshWelcome option, that reduces the welcome message
+ allow combination of short command line options
+ improve call and member access error messages
# fix empty regular expression capture groups being returned as string "null",
now they are returned as om
---v2.2.2--- 2014-02-19
+ implemented >< operator on lists, which combines two lists of equal size into
a list of pairs, one from each list
+ implemented closures as special kind of procedure for future use; currently
closures work exactly like normal procedures
+ improve ask() on PCs when there is just one answer
+ updated to antlr 4.2
# fixed closure behavior with cachedProcedures calling themselves recursively
* as 'closure' is now a keyword, code using it as an identifier will break
---v2.2.1--- 2014-02-03
+ added getOsID() function that returns an identifier for the operating system
that setlX runs on
+ added ask(question, answers) function that prompts the user with `question',
then forces him to select one from answers, which is returned
+ allow negative indexes to strings and lists, which count from the end
---v2.2.0--- 2013-08-14
+ added a do-while statement
+ added 64 bit floating point values that behave according to IEEE
754
+ added the function double() that converts a string or number into a
floating point number
+ added the function isDouble() that checks whether the value is a
floating point number
- removed the function real and isReal
# min and max can now only be applied to lists or sets of numbers.
* build for Java 1.6 by default
---v2.1.1--- 2013-07-27
+ the single straight quote is now used as escape character in literals and the
only valid escape sequence is two quotes ('') as sequence for a single one (')
- the quote operator (@) looses its special meaning for double-quoted strings;
it will now only force a term creation; to get the old behavior on strings,
replace the quotes with single straight ones: @"tax: 3$" -> 'tax: 3$'
# fix string escape level and error handling in split() function
* term representation of strings changed
* build for Java 1.6 by default
---v2.1.0--- 2013-07-01
+ added short versions for some command line options
+ provide better fallback when comparing objects without 'equals' member to other
types
- remove "short-iterate" syntax to resolve some issues in the grammar
(i.e {x in set | x%2 == 0} needs to be replaced with {x : x in set | x%2 == 0})
* lots of internal changes to the build system and error handling
---v2.0.2--- 2013-05-18
- removed partly defunct debug functions (but not trace)
+ add ability to trace object and class members
+ add very simple debugging function stop(id)
---v2.0.1--- 2013-04-28
# removed redundant quotes in objects
# refactor and improve trace functionality
---v2.0.0--- 2013-04-11
+ updated the tutorial to reflect the major new features
(basic object orientation and graphics support)
+ all Boolean operators are overloadable
---v1.6.1--- 2013-04-07 (unreleased)
+ added resetRandom() function, which reseeds the random number generator
+ improve automated tests to include term conversion
---v1.6.0--- 2013-03-24 (unreleased)
+ integrated graphics library by Markus Jagiella
* Note: setlX launcher scripts need to be updated
+ some performance improvements
* refactored Boolean expressions and some other bits and pieces
---v1.5.1--- 2013-03-10 (unreleased)
+ add syntax highlighting definition for gedit
+ moved SETLX_LIBRARY_PATH definition into launcher script
+ updated antlr to v4.0, which should improve parser error messages
+ simplified PreDefinedFunction API a little bit
# fixed some PDF layout issues
---v1.5.0--- 2013-02-23 (unreleased)
+ added hypot(numberValue, numberValue) and atan2(numberValue, numberValue) functions
+ make predefined math-functions (e.g. exp(x), sin(x)) overloadable in objects
+ eliminated explicit "this" parameter for object-methods
+ add engineering and plain mode for printing reals
# fix some bugs when accessing methods of objects
# fix crash of optimizer when code contains syntax errors
---v1.4.99999--- 2013-02-12 (unreleased)
+ removed global definitions ('var')
+ changed class definition syntax
---v1.4.9999--- 2013-02-10 (unreleased)
+ added nCPUs() functions, returning the number of CPUs (/cores) in the system
+ allow overloading of more functions for objects
---v1.4.999--- 2013-02-05 (unreleased)
+ implementation of object orientation extension almost feature complete
(missing a number of overloadable operators)
---v1.4.99--- 2013-02-03 (unreleased)
+ first iteration of object orientation extension
+ use multithreaded test script
+ add latex source for tutorial
+ print results of --ev and --ex options without sugar coating
# fix infinity when used as parameter for predefined math functions
# fix some issues in the grammar
---v1.4.5--- 2013-01-13
+ more robust internal handling of reals
+ improved stack management
# fix conversion from infinity to double
# fix range selection of lists, when range is out of bounds
# fix and update various scripts
---v1.4.4--- 2012-12-25
+ switched to BSD license
# fixed associativity of => operator during term-conversion/print
# fix some error messages
---v1.4.3--- 2012-12-13
+ updated the development documentation
+ allow powerSet computation by using the set as exponent, e.g. 2 ** {1,2,3}
+ added mathConst("Infinity")
+ m ** 2 computes the cartesianProduct of m, if m is a set
# fixed multiple "internal errors"
# fix error message for calls
---v1.4.2--- 2012-11-13
+ updated the tutorial
# fixed --help option
---v1.4.1--- 2012-11-10
+ allow assignment of indexable collection values (e.g. lists, strings, terms) to
lists of IDs (e.g. [a,b,c] := Term("foobar",99,sin); )
+ improved closure detection
+ added --ev and --ex options to directly execute an expression or statement
# fix char position variable in default branch of scan statement
---v1.4.0--- 2012-10-06
+ added closures
---v1.3.3--- 2012-09-30
+ added matches(string, pattern [, captureGroups]), replace(string, pattern, replacement),
replaceFirst(string, pattern, replacement) functions
# better explanation of errors in comparisons
---v1.3.2--- 2012-09-05
# fixed escaped single straight quote in literal strings (only handled escape sequence)
+ allow pattern in regex-branch to be an expression
+ added variable to scan statement, which stores a map of positions
where first matched character is located inside the input-string
* replaced '->' with 'as' in regex branches
---v1.3.1--- 2012-09-01
# fixed error handling in nested parsing runs (e.g. $-expressions in strings, parse())
+ added regex-branch to match
+ added scan statement
+ added literal strings enclosed in single straight quotes, which are transferred
from source into memory without parsing escape sequences or interpreting the content
in any way. While "\n" describes a string of one linebreak character, '\n' describes
a string of the two separate characters: backslash and n.
+ allow explicit lists/sets with rest as normal expression, not only in match
+ more powerful matching using explicit lists/sets with rest
+ added >< operator to compute the Cartesian-Product of two sets
---v1.3.0--- 2012-08-22
# fixed product of a number and a list
+ added tutorial.pdf
+ updated documentation
---v1.2.9--- unreleased
+ get() and read() will not add anything extra when supplying a user defined prompt
# fixed errors during certain operations on reals
---v1.2.8--- unreleased
# fixed from(string)
# fix isMap()
---v1.2.7--- unreleased
+ added clearCache(cachedProcedure) function
+ added check and backtrack statements
# fixed ceil and floor for integer reals (e.g. 2.0, -2.0)
+ iterations like:
for ([x,y] in s, [y,z] in t) {}
now work like
for ([x,y1] in s, [y2,z] in t | y1 == y2) {}
i.e. same variables must contain same values to execute the iteration block
---v1.2.6--- unreleased
+ added cached procedures (Keyword: cachedProcedure instead of just procedure)
+ added cacheStats(cachedProcedure) function
+ fixed issues with matching negative numbers
+ allow conditions in for-loops
---v1.2.5--- unreleased
+ added isNumber() function, which is equal to (isRational() || isReal())
+ brackets are transparent in terms
---v1.2.4--- unreleased
+ added optional Boolean conditions to match branches
# match correctly when using the same variable multiple times in a single match branch
+ lots of refactoring
---v1.2.3--- unreleased
# fixed matching strings using lists of variables
+ improved performance of collect
---v1.2.2--- 2012-08-01
+ changed rnd() to require second `numberOfChoices' parameter when used with rationals
+ added optional parameter to random()
+ added collect() function
---v1.2.1--- 2012-07-23
+ improved performance of forall/exist when used in loops
+ somewhat improved performance of variable look-ups
+ added run(command) function
+ added isPrime(integer) function
+ rnd() now also takes number as argument, returning a random number between
0 and the argument (inclusive) -- works for negative numbers as well
---v1.2.0--- 2012-07-17
# fixed minor bugs in string-representation of some statements
# forall and exist can be used in combinations with other Boolean expressions
# renamed --args option to --params, to avoid conflicts with args() function
* params variable will now be present, but empty if --params option is not used
+ added nPrint() and nPrintErr() functions, which do not add a new line
+ support % operator for sets, computing the symmetric difference, e.g. {1,2} % {1,3} = {2,3}
+ support * for lists, multiplying their contents
+ added toUpperCase(string), toLowerCase(string), startsWith(string, prefix),
endsWith(string, suffix), trim(string) and join(collection, separator) functions
* renamed strSplit() to split()
+ split() now also works for lists
+ added isProbablePrime(int) and nextProbablePrime(int) functions
+ added nextPermutation(list), sort(listOrString), shuffle(listOrString) functions
# fixed handling of Boolean expressions by the parser
+ match conditions respect preset variables
+ added perfomance test
+ added UNSUPPORTED profiling script to development distribution
---v1.1.1--- 2012-07-10
# fixed bug with indirect assignments not working in all cases
---v1.1.0--- 2012-07-09
+ fixed performance issue with break and continue statements
+ fixed performance issue with indirect assignment types (`+=', `-=', `*=')
+ added integer division assignment ( '\=' )
- removed assignment chaining for everything but the direct assignment (i.e. `a := b := "foo"')
+ strings are collections now ( try `for(c in "foo") {..}' or `first("foo")')
+ "prolog-style" list match works with strings
# faster 2nd+ time look-up of undefined variables
# fixed precedence of power operator ( ** )
+ add --args option, which passes all following options to the SetlX program (using variable `args')
---v1.0.2--- 2012-07-03
+ fixed performance issue with return statements
---v1.0.1--- 2012-07-01
* adding om to a string (e.g. "" + om) will now result in an error
* +/[] and */[] return om, not 0 or 1 respectively
+ added binary forms of +/ and */ operators to specify neutral element
# fixed parsing rules for reals and ranges
+ added compare(valueA, valueB) function
+ added strSplit(string, pattern) function
+ added reverse(collectionValue) function
+ improved performance of lists (in most cases)
* input in interactive mode is now accepted WITHOUT entering an empty line
+ newline can be escaped by adding a backslash before pressing [Enter]
+ added --multiLineMode option and multiLineMode() function to restore previous behavior
+ added loadLibrary() function, loading files from SETLX_LIBRARY_PATH environment variable
+ added --libraryPath option to override SETLX_LIBRARY_PATH
---v1.0.0--- 2012-06-10
* updated documentation
---v0.7.8--- 2012-06-06
* output of results in interactive mode will only be displayed for last statement
* output added by the interpreter is enclosed in ~< >~
+ added trace() function to print assignments
---v0.7.7--- 2012-06-01
+ added optional parameter `msg' to read(msg) and get(msg)
`msg' will be displayed in front of the prompt
+ added fileAPI (i.e. readFile(), writeFile(), appendFile(), deleteFile())
+ added function mathConst(name) to retrieve "e" and "pi"
- e and pi are not defined as global variables anymore
---v0.7.6--- 2012-05-26
# suppressed duplicate parser error messages
+ new random() function returning a random real: 0.0 <= random() <= 1.0
+ updated aStar examples
+ introduced some more platform independence (in preparation for Android version)
+ code cleanup
---v0.7.5--- 2012-05-16
+ added \ operator for integer division, e.g. a \ b == floor(a/b)
+ round() works for unlimited precision values
---v0.7.4--- 2012-05-12
+ implemented matching for sets
+ implemented splitting lists and sets in match
+ added permutations() function
+ added sleep() function
+ updated development manual
# fixed bug when reading from stdin
* renamed examples folder
---v0.7.3--- 2012-04-26
+ added assert function and option to disable assertions
+ updated aStar hanoi examples
---v0.7.2--- 2012-04-22
* initial change log entry