diff --git a/Changelog b/Changelog index 73b1250..637dce1 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,15 @@ +2020-01-19: + +- keep CONFIG_BIGNUM in the makefile +- added os.chdir() +- qjs: added -I option +- more memory checks in the bignum operations +- modified operator overloading semantics to be closer to the TC39 + proposal +- suppressed "use bigint" mode. Simplified "use math" mode +- BigDecimal: changed suffix from 'd' to 'm' +- misc bug fixes + 2020-01-05: - always compile the bignum code. Added '--bignum' option to qjs. diff --git a/Makefile b/Makefile index e402d6b..88e605b 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ # # QuickJS Javascript Engine # -# Copyright (c) 2017-2019 Fabrice Bellard -# Copyright (c) 2017-2019 Charlie Gordon +# Copyright (c) 2017-2020 Fabrice Bellard +# Copyright (c) 2017-2020 Charlie Gordon # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -47,6 +47,8 @@ prefix=/usr/local #CONFIG_PROFILE=y # use address sanitizer #CONFIG_ASAN=y +# include the code for BigInt/BigFloat/BigDecimal and math mode +CONFIG_BIGNUM=y OBJDIR=.obj @@ -94,6 +96,9 @@ ifdef CONFIG_WERROR CFLAGS+=-Werror endif DEFINES:=-D_GNU_SOURCE -DCONFIG_VERSION=\"$(shell cat VERSION)\" +ifdef CONFIG_BIGNUM +DEFINES+=-DCONFIG_BIGNUM +endif CFLAGS+=$(DEFINES) CFLAGS_DEBUG=$(CFLAGS) -O0 CFLAGS_SMALL=$(CFLAGS) -Os @@ -153,9 +158,13 @@ endif all: $(OBJDIR) $(OBJDIR)/quickjs.check.o $(OBJDIR)/qjs.check.o $(PROGS) -QJS_LIB_OBJS=$(OBJDIR)/quickjs.o $(OBJDIR)/libregexp.o $(OBJDIR)/libunicode.o $(OBJDIR)/libbf.o $(OBJDIR)/cutils.o $(OBJDIR)/quickjs-libc.o +QJS_LIB_OBJS=$(OBJDIR)/quickjs.o $(OBJDIR)/libregexp.o $(OBJDIR)/libunicode.o $(OBJDIR)/cutils.o $(OBJDIR)/quickjs-libc.o -QJS_OBJS=$(OBJDIR)/qjs.o $(OBJDIR)/repl.o $(OBJDIR)/qjscalc.o $(QJS_LIB_OBJS) +QJS_OBJS=$(OBJDIR)/qjs.o $(OBJDIR)/repl.o $(QJS_LIB_OBJS) +ifdef CONFIG_BIGNUM +QJS_LIB_OBJS+=$(OBJDIR)/libbf.o +QJS_OBJS+=$(OBJDIR)/qjscalc.o +endif LIBS=-lm ifndef CONFIG_WIN32 @@ -215,7 +224,7 @@ libquickjs.a: $(patsubst %.o, %.nolto.o, $(QJS_LIB_OBJS)) $(AR) rcs $@ $^ endif # CONFIG_LTO -repl.c: $(QJSC) repl.js +repl.c: $(QJSC) repl.js $(QJSC) -c -o $@ -m repl.js qjscalc.c: $(QJSC) qjscalc.js @@ -301,7 +310,10 @@ endif HELLO_SRCS=examples/hello.js HELLO_OPTS=-fno-string-normalize -fno-map -fno-promise -fno-typedarray \ -fno-typedarray -fno-regexp -fno-json -fno-eval -fno-proxy \ - -fno-date -fno-module-loader -fno-bigint + -fno-date -fno-module-loader +ifdef CONFIG_BIGNUM +HELLO_OPTS+=-fno-bigint +endif hello.c: $(QJSC) $(HELLO_SRCS) $(QJSC) -e $(HELLO_OPTS) -o $@ $(HELLO_SRCS) @@ -372,20 +384,30 @@ test: qjs ./qjs tests/test_loop.js ./qjs tests/test_std.js ifndef CONFIG_DARWIN +ifdef CONFIG_BIGNUM ./qjs --bignum tests/test_bjson.js +else + ./qjs tests/test_bjson.js +endif ./qjs examples/test_point.js endif +ifdef CONFIG_BIGNUM + ./qjs --bignum tests/test_op_overloading.js ./qjs --bignum tests/test_bignum.js ./qjs --qjscalc tests/test_qjscalc.js +endif ifdef CONFIG_M32 ./qjs32 tests/test_closure.js ./qjs32 tests/test_op.js ./qjs32 tests/test_builtin.js ./qjs32 tests/test_loop.js ./qjs32 tests/test_std.js +ifdef CONFIG_BIGNUM + ./qjs32 --bignum tests/test_op_overloading.js ./qjs32 --bignum tests/test_bignum.js ./qjs32 --qjscalc tests/test_qjscalc.js endif +endif stats: qjs qjs32 ./qjs -qd diff --git a/TODO b/TODO index dbb4612..33a9b9d 100644 --- a/TODO +++ b/TODO @@ -73,6 +73,5 @@ REPL: Test262o: 0/11262 errors, 463 excluded Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch) -Test262: 4/67619 errors, 913 excluded, 1660 skipped -Test262bn: 4/69722 errors, 846 excluded, 672 skipped -test262 commit: 19fd4bea797646ae9bbfc9d325f14052ca370b54 +Test262: 17/69942 errors, 855 excluded, 581 skipped +test262 commit: 28b4fcca4b1b1d278dfe0cc0e69c7d9d59b31aab diff --git a/VERSION b/VERSION index 242aa92..ceac556 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2020-01-05 +2020-01-19 diff --git a/doc/jsbignum.html b/doc/jsbignum.html index c60dc45..096dc04 100644 --- a/doc/jsbignum.html +++ b/doc/jsbignum.html @@ -1,7 +1,8 @@ - + + Javascript Bignum Extensions @@ -9,7 +10,6 @@ -