Skip to content

Releases: LIPS-scheme/lips

1.0.0-beta.11

31 Jan 11:49
Compare
Choose a tag to compare
1.0.0-beta.11 Pre-release
Pre-release

Breaking

  • remove repr of HTMLElement (it's now default instance of a class)
  • regular expressions are now prefixed with hash like in Gauche e.g. #/foo/

Features

  • add support for quasiquote on objects and vectors
  • interning symbols mechanism #106
  • new macro quoted-promise, syntax '> #54
  • new function await that return original promise from QuotedPromise
  • bytevector functions (R7RS)
  • improve detecting and repr of iterators
  • add eof variable to global env
  • add apropos function
  • new incremental Lexer that allow to modify parser while it's running
  • add SRFI-10 sharp-comma
  • new syntax try..catch..finally
  • new parallel list* macro
  • new scheme-report-environment function (R5RS)
  • update ** to work on negative numbers

Bugfix

  • fix resolving promises on vectors and objects
  • fix context in methods of plain objects #103
  • fix equal? on typed arrays
  • fix detecting user repr (when object is subclass)
  • fix calling port methods (e.g. calling get-output-string function)
  • fix prism highlighting of multiple regular expression
  • fix parsing chars for Unicode outside of BMP
  • fix when try..catch is promise that rejects and catch throws
  • fix resolving promises when apply function they are not executed in sequentially
  • fix eval builtin function to evaluate everything

1.0.0-beta.10

13 Dec 10:36
Compare
Choose a tag to compare
1.0.0-beta.10 Pre-release
Pre-release

Breaking

  • change behavior of and and or to work like if (#f only falsy value)
  • vectors and object literals are immutable (to prevent weird sharing data bugs)

Features

  • add promise? function
  • improve append/append! to work according to spec and accept multiple arguments
  • set global and window to undefined when not in Node or Window respectively
  • add self as global context for Node, browser and worker
  • add repr of global object
  • add repr of classes
  • add support for creating anonymous classes
  • add do-iterator macro
  • add repr of Map and Set
  • add digit-value function
  • add #d prefix for decimal numbers
  • add include macro
  • add --debug option to executable (that load src file instead of dist)
  • add cond-expand syntax macro
  • add new native-symbol? function
  • add warning about using quote, with code example to execute to enable it
  • add __dirname and __filename variables to Node
  • add support for variables in method properties of classes (like in JS)

Bugfix

  • fix load file that have shebang
  • fix repr of eof object
  • fix read from input-string-port #85
  • fix running web worker from file generated by babel (dist)
  • fix repr of lambda function (no :lambda as name)
  • fix parse complex big num (e.g.: 100e+100i)
  • fix repr of scheme functions if Function.prototype.toString was modified
  • fix repr of iterators
  • fix access symbol properties of binded functions (LIPS internals)
  • fix duplicated line in executable #89
  • fix char-numeric? and char-alphabetic? to handle all unicode
  • fix characters with more then one code point
  • fix repr of functions that are created by self.eval
  • fix formatting strings in REPL
  • fix set! nil to object field
  • fix lambda in define-class that have improper list as arguments
  • throw exception when applying function to improper list
  • fix join with nil
  • fix accessing JavaScript objects in syntax-rules macros
  • fix write of strings with newline
  • fix indent of when and unless
  • fix usage of Drag&Drop with bookmarklet on pdf files
  • fix accessing methods on pattern variables in syntax macros #83
  • fix quasiquote to work like quote if not unquotes (R7RS spec)

1.0.0-beta.9

15 Nov 14:21
Compare
Choose a tag to compare
1.0.0-beta.9 Pre-release
Pre-release

Breaking

  • throw exception when calling (-)
  • if it now see #f as the only falsy value, to match Scheme spec

Features

  • add let-values, let*-values and define-values syntax macros
  • add exact-integer? and vector-append functions
  • add stderr port and current-error-port function
  • add environment as second argument to load (according to R7RS spec)

Bugfix

  • fix empty vector literal
  • fix edge case in nested syntax-rules when variable in parent got expanded into identifier
  • fix nesting unquote in quasiquote #53
  • fix order of evaluation in ,,@x
  • fix name collision while catching DOM exceptions #84
  • fix integer? and other number type checks
  • fix warnings about require while loading from Webpack
  • fix unquote-splice multiple lists
  • fix syntax highlighting (prism scheme syntax patching)
  • fix load inside let that have global variable defined that was not undefined
  • fix creating LIPS classes from SXML

1.0.0-beta.8

07 Nov 16:59
Compare
Choose a tag to compare
1.0.0-beta.8 Pre-release
Pre-release

Breaking

  • internal properties like name are now __name__

Features

  • add raise (alias for throw) and with-exception-handler (that wraps throw..catch)

Bugfix

  • fix truncate core function
  • fix splice nil in quasiquote inside list #68
  • fix do macro inside syntax-rules #81
  • fix string-copy and string-set!
  • fix error function to work like R7RS spec
  • fix edge case in syntax-rules found when executing SRFI-26 cut macro
  • fix unboxing of LIPS values when calling native JavaScript functions
  • fix unboxing of callback functions #76

1.0.0-beta.7

01 Nov 13:09
Compare
Choose a tag to compare
1.0.0-beta.7 Pre-release
Pre-release

Breaking

  • remove second argument from filter callback
  • change mapping & from make-object to object
  • parser is now async

Features

  • new random procedure
  • string repr of all procedures and macros in REPL now have name

Bugfix

  • fix write vs display of character atoms
  • fix mixed case of named characters (e.g.: #\Space)
  • fix do macro scope according to R7RS
  • fix vector literals inside quoted list #79

1.0.0-beta.6

30 Oct 13:19
Compare
Choose a tag to compare
1.0.0-beta.6 Pre-release
Pre-release

Breaking

  • real? now return true on integers (bigInts)
  • set! throw error when variable not defined

Features

  • new string->vector, vector->string, vector-map and string-map (R7RS)
  • new dynamic-wind function (R7RS)
  • make equal? compare plain objects

Bugfix

  • fix repr of HTMLElement
  • fix creating LCharacter from scheme string
  • fix do macro with let like scope for next values
  • fix line breaking in formatter
  • fix parsing options in executable (fix for alias lips="lips -q")
  • throw exception when evaluating (if)
  • fix object? and plain-object?
  • throw exception when invoking syntax that shadow literal identifier
  • fix parsing cons dot in (() . foo)

1.0.0-beta.5

30 Oct 13:18
Compare
Choose a tag to compare
1.0.0-beta.5 Pre-release
Pre-release

Features

  • new function make-list
  • (/ 0.0 0.0) return NaN
  • bookmarklet always fetch latest version
  • case-lambda, unless and when hygienic macros (code from R7RS)
  • new boolean=?, port? and square functions (R7RS)
  • new inexact and exact aliases (R7RS)
  • rational numerator and denominator function (R5RS)
  • complex imag-part, real-part, make-polar, angle and magnitude functions (R5RS)
  • new function: radians->degree and degree->radians

Bugfix

  • allow to use undefined in let
  • fix function call that return NaN
  • fix pretty print of syntax-rules

1.0.0-beta.4

23 Aug 07:20
Compare
Choose a tag to compare
1.0.0-beta.4 Pre-release
Pre-release

Breaking

  • add/remove-specials and add/remove-repr are now set/unset
  • rename wrong gdc to correct gcd

Features

  • doc strings on variables
  • persistent history in executable REPL
  • repr of promises (from delay function)
  • allow set! with doted JS notation
  • new functions gensym? and prototype?

Bugfix

  • fix Environment::has (ref) on variable that are undefined
  • fix macroexpand with pprint on syntax macros
  • fix formatter breaking rules definition in LIPS + (+ fix cond)
  • fix rational? on integers (bigint)
  • fix parsing quoted atoms (e.g. '#f, '#\x or '#xA)
  • fix parsing escape slash inside strings
  • don't throw exception on parse error in string->number (return false)
  • fix silent accepting two big code point #\xFFFFFF
  • fix custom repr of instances created by define-class
  • fix parsing R7RS hex literals in strings
  • fix syntax-rules with (a b ...) that match single item
  • fix swallowed undefined from (cons 1 undefined)
  • fix identifiers in syntax-rules
  • fix byte vectors
  • make print and pprint always call newline
  • fix escape ellipsis from R7RS
  • fix unboxing values (seen with stack overflow on dir date object)

1.0.0-beta.1

14 Aug 08:41
Compare
Choose a tag to compare
1.0.0-beta.1 Pre-release
Pre-release

Breaking

  • rename ceil to ceiling (like in R5RS spec)
  • break let* to work the same as in scheme (it was working like letrec)
  • if no longer require boolean as cond
  • change how arrays are presented, they are look like scheme vector #(...)
  • rename string to repr
  • new API lips.Intepreter - for using interpreter that have different stdout/stdin
  • balanced_parenthesis now throw exception on broken code
  • remove global env from public API (you can still access it using env.parent)
  • remove -> function (it will collide with SRFI 197 that may be implemented in the future)
  • every have now same signature as some which is (fn list)

Features

  • start implementing R5RS spec
  • streams example
  • <, >, ==, <= and >= now have variable number of arguments
  • new throw function that throw JS exception
  • expose typecheck function that test type of the arguments and throw exception if don't match
  • new gdc and lcm functions
  • new string->number and number->string functions
  • new list? function
  • new vector-ref (same as (. v n) but with typecheck)
  • new +inf.0 and -inf.0
  • new max, min and truncate
  • restore print it's now alias for display
  • you can now access nested objects as symbols (e.g (lips.LNumber 10))
  • new Number types (complex and rational)
  • input/output ports + string ports
  • add letrec macro
  • inexact->exact and rationalize (thanks to Kawa/C-Gambit projects)
  • parsing hex, octal, binary, complex, rational numbers
  • characters literals #\A and character and string functions
  • display #t and #f for boolean values in terminal
  • new interaction-environment function + load use that env by default
  • improve executable
  • user can define string representation (with object that have toString lambda)
  • Hygienic macros: syntax-rules transformer macros
  • improve balancing parenthesis
  • expose balanced method in public API (preferred name)
  • optional brackets
  • interator? function and detection if iterators from repr and type #51
  • add-repr! function to add string representations to objects
  • new string=?, sort, in, list-tail and bound? functions
  • add new exit function into executable interpreter
  • -e/eval option (help and docs will show new options, instead of -c/code but old still works)
  • case macro
  • relative load inside load + auto .scm suffix
  • new zip, n-ary, binary, unary, take functions
  • new get-script function

Bug fixes

  • fix list function #27
  • fix (begin (gensym)) macro that evaluate to symbol
  • update defstruct to export only needed functions (local functions are namespaced)
  • prevent of evaluation of (define (x . a) a)) (x 1 2 3) (list in scheme)
  • fix LNumber::String with radix
  • fix formatting of float numbers
  • fix try..catch
  • fix display of function/macro docs (remove white space in parser)
  • fix loading modules with require
  • fix macro expand when expansion return list with macro that is data
  • fix lips executable in GNU Emacs run-scheme (comint mode)
  • unbox values in new
  • fix named let with nil #46
  • use parser code in string->number
  • fix repr of native object instances (e.g.: Uint8Array)
  • fix display/write without newline in both REPLs
  • fix evaluating single false value
  • fix dir to not include values of Object.prototype

0.20.1

01 Jul 11:59
Compare
Choose a tag to compare

Bug fixes

  • fix formatter indent