Releases: LIPS-scheme/lips
Releases · LIPS-scheme/lips
1.0.0-beta.11
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
Breaking
- change behavior of
and
andor
to work likeif
(#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
andwindow
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
andSet
- 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?
andchar-alphabetic?
to handle all unicode - fix characters with more then one code point
- fix
repr
of functions that are created byself.eval
- fix formatting strings in REPL
- fix
set!
nil
to object field - fix
lambda
indefine-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
andunless
- 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
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
anddefine-values
syntax macros - add
exact-integer?
andvector-append
functions - add
stderr
port andcurrent-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
Breaking
- internal properties like
name
are now__name__
Features
- add
raise
(alias forthrow
) andwith-exception-handler
(that wrapsthrow..catch
)
Bugfix
- fix truncate core function
- fix splice nil in quasiquote inside list #68
- fix do macro inside syntax-rules #81
- fix
string-copy
andstring-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
Breaking
- remove second argument from
filter
callback - change mapping
&
frommake-object
toobject
- 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
Breaking
real?
now return true on integers (bigInts)set!
throw error when variable not defined
Features
- new
string->vector
,vector->string
,vector-map
andstring-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?
andplain-object?
- throw exception when invoking syntax that shadow literal identifier
- fix parsing cons dot in
(() . foo)
1.0.0-beta.5
Features
- new function
make-list
(/ 0.0 0.0)
return NaN- bookmarklet always fetch latest version
case-lambda
,unless
andwhen
hygienic macros (code from R7RS)- new
boolean=?
,port?
andsquare
functions (R7RS) - new
inexact
andexact
aliases (R7RS) - rational
numerator
anddenominator
function (R5RS) - complex
imag-part
,real-part
,make-polar
,angle
andmagnitude
functions (R5RS) - new function:
radians->degree
anddegree->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
Breaking
- add/remove-specials and add/remove-repr are now set/unset
- rename wrong
gdc
to correctgcd
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?
andprototype?
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
Breaking
- rename
ceil
toceiling
(like in R5RS spec) - break
let*
to work the same as in scheme (it was working likeletrec
) if
no longer require boolean as cond- change how arrays are presented, they are look like scheme vector
#(...)
- rename
string
torepr
- 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 assome
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
andlcm
functions - new
string->number
andnumber->string
functions - new
list?
function - new
vector-ref
(same as(. v n)
but with typecheck) - new
+inf.0
and-inf.0
- new
max
,min
andtruncate
- 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
andrationalize
(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 fromrepr
andtype
#51add-repr!
function to add string representations to objects- new
string=?
,sort
,in
,list-tail
andbound?
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