mirror of
https://github.com/bellard/quickjs.git
synced 2025-05-11 10:54:20 +08:00
new release
This commit is contained in:
parent
1b13fa6450
commit
19abf1888d
@ -1,9 +1,17 @@
|
|||||||
|
2025-04-26:
|
||||||
|
|
||||||
- removed the bignum extensions and qjscalc
|
- removed the bignum extensions and qjscalc
|
||||||
- new BigInt implementation optimized for small numbers
|
- new BigInt implementation optimized for small numbers
|
||||||
- added WeakRef, FinalizationRegistry and symbols as weakrefs
|
- added WeakRef, FinalizationRegistry and symbols as weakrefs
|
||||||
- added builtin float64 printing and parsing functions for more correctness
|
- added builtin float64 printing and parsing functions for more correctness
|
||||||
- faster repeated string concatenation
|
- faster repeated string concatenation
|
||||||
- qjs: promise unhandled rejections are fatal errors by default
|
- qjs: promise unhandled rejections are fatal errors by default
|
||||||
|
- added column number in debug information
|
||||||
|
- removed the "use strip" extension
|
||||||
|
- qjs: added -s and --strip-source options
|
||||||
|
- qjsc: added -s and --keep-source options
|
||||||
|
- added JS_GetAnyOpaque()
|
||||||
|
- added more callbacks for exotic objects in JSClassExoticMethods
|
||||||
- misc bug fixes
|
- misc bug fixes
|
||||||
|
|
||||||
2024-01-13:
|
2024-01-13:
|
||||||
|
7
Makefile
7
Makefile
@ -423,10 +423,13 @@ build_doc: $(DOCS)
|
|||||||
clean_doc:
|
clean_doc:
|
||||||
rm -f $(DOCS)
|
rm -f $(DOCS)
|
||||||
|
|
||||||
doc/%.pdf: doc/%.texi
|
doc/version.texi: VERSION
|
||||||
|
@echo "@set VERSION `cat $<`" > $@
|
||||||
|
|
||||||
|
doc/%.pdf: doc/%.texi doc/version.texi
|
||||||
texi2pdf --clean -o $@ -q $<
|
texi2pdf --clean -o $@ -q $<
|
||||||
|
|
||||||
doc/%.html.pre: doc/%.texi
|
doc/%.html.pre: doc/%.texi doc/version.texi
|
||||||
makeinfo --html --no-headers --no-split --number-sections -o $@ $<
|
makeinfo --html --no-headers --no-split --number-sections -o $@ $<
|
||||||
|
|
||||||
doc/%.html: doc/%.html.pre
|
doc/%.html: doc/%.html.pre
|
||||||
|
8
TODO
8
TODO
@ -37,16 +37,16 @@ REPL:
|
|||||||
- close all predefined methods in repl.js and jscalc.js
|
- close all predefined methods in repl.js and jscalc.js
|
||||||
|
|
||||||
Optimization ideas:
|
Optimization ideas:
|
||||||
- 64-bit atoms in 64-bit mode ?
|
- use 64 bit JSValue in 64 bit mode
|
||||||
|
- use JSValue as atoms and use a specific constant pool in functions to
|
||||||
|
reference atoms from the bytecode
|
||||||
- reuse stack slots for disjoint scopes, if strip
|
- reuse stack slots for disjoint scopes, if strip
|
||||||
- add heuristic to avoid some cycles in closures
|
- add heuristic to avoid some cycles in closures
|
||||||
- small String (0-2 charcodes) with immediate storage
|
- small String (1 codepoint) with immediate storage
|
||||||
- perform static string concatenation at compile time
|
- perform static string concatenation at compile time
|
||||||
- optimize string concatenation with ropes or miniropes?
|
|
||||||
- add implicit numeric strings for Uint32 numbers?
|
- add implicit numeric strings for Uint32 numbers?
|
||||||
- optimize `s += a + b`, `s += a.b` and similar simple expressions
|
- optimize `s += a + b`, `s += a.b` and similar simple expressions
|
||||||
- ensure string canonical representation and optimise comparisons and hashes?
|
- ensure string canonical representation and optimise comparisons and hashes?
|
||||||
- remove JSObject.first_weak_ref, use bit+context based hashed array for weak references
|
|
||||||
- property access optimization on the global object, functions,
|
- property access optimization on the global object, functions,
|
||||||
prototypes and special non extensible objects.
|
prototypes and special non extensible objects.
|
||||||
- create object literals with the correct length by backpatching length argument
|
- create object literals with the correct length by backpatching length argument
|
||||||
|
@ -5,11 +5,14 @@
|
|||||||
@headings double
|
@headings double
|
||||||
@end iftex
|
@end iftex
|
||||||
|
|
||||||
|
@include version.texi
|
||||||
|
|
||||||
@titlepage
|
@titlepage
|
||||||
@afourpaper
|
@afourpaper
|
||||||
@sp 7
|
@sp 7
|
||||||
@center @titlefont{QuickJS Javascript Engine}
|
@center @titlefont{QuickJS Javascript Engine}
|
||||||
@sp 3
|
@sp 3
|
||||||
|
@center Version: @value{VERSION}
|
||||||
@end titlepage
|
@end titlepage
|
||||||
|
|
||||||
@setfilename spec.info
|
@setfilename spec.info
|
||||||
@ -19,10 +22,10 @@
|
|||||||
|
|
||||||
@chapter Introduction
|
@chapter Introduction
|
||||||
|
|
||||||
QuickJS is a small and embeddable Javascript engine. It supports most of the
|
QuickJS (version @value{VERSION}) is a small and embeddable Javascript
|
||||||
ES2023 specification
|
engine. It supports most of the ES2023 specification
|
||||||
@footnote{@url{https://tc39.es/ecma262/2023 }}
|
@footnote{@url{https://tc39.es/ecma262/2023 }} including modules,
|
||||||
including modules, asynchronous generators, proxies and BigInt.
|
asynchronous generators, proxies and BigInt.
|
||||||
|
|
||||||
@section Main Features
|
@section Main Features
|
||||||
|
|
||||||
|
21
readme-cosmo.txt
Normal file
21
readme-cosmo.txt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
The executables included in this archive run on Linux, Mac, Windows,
|
||||||
|
FreeBSD, OpenBSD and NetBSD for both the ARM64 and x86_64
|
||||||
|
architectures.
|
||||||
|
|
||||||
|
Platform Notes:
|
||||||
|
|
||||||
|
- if you get errors on Linux, you should disable the binfmt_misc
|
||||||
|
module which automatically invokes wine with Windows executable:
|
||||||
|
|
||||||
|
sudo sh -c 'echo -1 > /proc/sys/fs/binfmt_misc/cli' # remove Ubuntu's MZ interpreter
|
||||||
|
sudo sh -c 'echo -1 > /proc/sys/fs/binfmt_misc/status' # remove ALL binfmt_misc entries
|
||||||
|
|
||||||
|
- Under Windows, you can rename the executables with a .exe extension.
|
||||||
|
|
||||||
|
- Use the --assimilate option to build a platform specific binary for
|
||||||
|
better startup time:
|
||||||
|
|
||||||
|
./qjs --assimilate
|
||||||
|
|
||||||
|
- See https://github.com/jart/cosmopolitan for more information about
|
||||||
|
platform specific issues.
|
50
release.sh
50
release.sh
@ -8,12 +8,12 @@ version=`cat VERSION`
|
|||||||
if [ "$1" = "-h" ] ; then
|
if [ "$1" = "-h" ] ; then
|
||||||
echo "release.sh [release_list]"
|
echo "release.sh [release_list]"
|
||||||
echo ""
|
echo ""
|
||||||
echo "release_list: extras binary win_binary quickjs"
|
echo "release_list: extras binary win_binary cosmo_binary quickjs"
|
||||||
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
release_list="extras binary win_binary quickjs"
|
release_list="extras binary win_binary cosmo_binary quickjs"
|
||||||
|
|
||||||
if [ "$1" != "" ] ; then
|
if [ "$1" != "" ] ; then
|
||||||
release_list="$1"
|
release_list="$1"
|
||||||
@ -53,7 +53,10 @@ outdir="/tmp/${d}"
|
|||||||
rm -rf $outdir
|
rm -rf $outdir
|
||||||
mkdir -p $outdir
|
mkdir -p $outdir
|
||||||
|
|
||||||
make CONFIG_WIN32=y qjs.exe
|
make clean
|
||||||
|
make CONFIG_WIN32=y clean
|
||||||
|
|
||||||
|
make CONFIG_WIN32=y CONFIG_LTO=y qjs.exe
|
||||||
cp qjs.exe $outdir
|
cp qjs.exe $outdir
|
||||||
${cross_prefix}strip $outdir/qjs.exe
|
${cross_prefix}strip $outdir/qjs.exe
|
||||||
cp $dlldir/libwinpthread-1.dll $outdir
|
cp $dlldir/libwinpthread-1.dll $outdir
|
||||||
@ -75,7 +78,7 @@ mkdir -p $outdir
|
|||||||
make clean
|
make clean
|
||||||
make CONFIG_WIN32=y clean
|
make CONFIG_WIN32=y clean
|
||||||
|
|
||||||
make CONFIG_WIN32=y CONFIG_M32=y qjs.exe
|
make CONFIG_WIN32=y CONFIG_M32=y CONFIG_LTO=y qjs.exe
|
||||||
cp qjs.exe $outdir
|
cp qjs.exe $outdir
|
||||||
${cross_prefix}strip $outdir/qjs.exe
|
${cross_prefix}strip $outdir/qjs.exe
|
||||||
cp $dlldir/libwinpthread-1.dll $outdir
|
cp $dlldir/libwinpthread-1.dll $outdir
|
||||||
@ -91,9 +94,8 @@ if echo $release_list | grep -w -q binary ; then
|
|||||||
|
|
||||||
make clean
|
make clean
|
||||||
make CONFIG_WIN32=y clean
|
make CONFIG_WIN32=y clean
|
||||||
make -j4 qjs run-test262
|
make -j4 CONFIG_LTO=y qjs run-test262
|
||||||
make -j4 CONFIG_M32=y qjs32 run-test262-32
|
strip qjs run-test262
|
||||||
strip qjs run-test262 qjs32 run-test262-32
|
|
||||||
|
|
||||||
d="quickjs-linux-x86_64-${version}"
|
d="quickjs-linux-x86_64-${version}"
|
||||||
outdir="/tmp/${d}"
|
outdir="/tmp/${d}"
|
||||||
@ -105,14 +107,39 @@ cp qjs run-test262 $outdir
|
|||||||
|
|
||||||
( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . )
|
( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . )
|
||||||
|
|
||||||
|
make clean
|
||||||
|
make -j4 CONFIG_LTO=y CONFIG_M32=y qjs run-test262
|
||||||
|
strip qjs run-test262
|
||||||
|
|
||||||
d="quickjs-linux-i686-${version}"
|
d="quickjs-linux-i686-${version}"
|
||||||
outdir="/tmp/${d}"
|
outdir="/tmp/${d}"
|
||||||
|
|
||||||
rm -rf $outdir
|
rm -rf $outdir
|
||||||
mkdir -p $outdir
|
mkdir -p $outdir
|
||||||
|
|
||||||
cp qjs32 $outdir/qjs
|
cp qjs run-test262 $outdir
|
||||||
cp run-test262-32 $outdir/run-test262
|
|
||||||
|
( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . )
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
#################################################"
|
||||||
|
# Cosmopolitan binary release
|
||||||
|
|
||||||
|
if echo $release_list | grep -w -q cosmo_binary ; then
|
||||||
|
|
||||||
|
export PATH=$PATH:$HOME/cosmocc/bin
|
||||||
|
|
||||||
|
d="quickjs-cosmo-${version}"
|
||||||
|
outdir="/tmp/${d}"
|
||||||
|
|
||||||
|
rm -rf $outdir
|
||||||
|
mkdir -p $outdir
|
||||||
|
|
||||||
|
make clean
|
||||||
|
make CONFIG_COSMO=y -j4 qjs run-test262
|
||||||
|
cp qjs run-test262 $outdir
|
||||||
|
cp readme-cosmo.txt $outdir/readme.txt
|
||||||
|
|
||||||
( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . )
|
( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . )
|
||||||
|
|
||||||
@ -133,13 +160,13 @@ mkdir -p $outdir $outdir/doc $outdir/tests $outdir/examples
|
|||||||
|
|
||||||
cp Makefile VERSION TODO Changelog readme.txt LICENSE \
|
cp Makefile VERSION TODO Changelog readme.txt LICENSE \
|
||||||
release.sh unicode_download.sh \
|
release.sh unicode_download.sh \
|
||||||
qjs.c qjsc.c qjscalc.js repl.js \
|
qjs.c qjsc.c repl.js \
|
||||||
quickjs.c quickjs.h quickjs-atom.h \
|
quickjs.c quickjs.h quickjs-atom.h \
|
||||||
quickjs-libc.c quickjs-libc.h quickjs-opcode.h \
|
quickjs-libc.c quickjs-libc.h quickjs-opcode.h \
|
||||||
cutils.c cutils.h list.h \
|
cutils.c cutils.h list.h \
|
||||||
libregexp.c libregexp.h libregexp-opcode.h \
|
libregexp.c libregexp.h libregexp-opcode.h \
|
||||||
libunicode.c libunicode.h libunicode-table.h \
|
libunicode.c libunicode.h libunicode-table.h \
|
||||||
libbf.c libbf.h \
|
dtoa.c dtoa.h \
|
||||||
unicode_gen.c unicode_gen_def.h \
|
unicode_gen.c unicode_gen_def.h \
|
||||||
run-test262.c test262o.conf test262.conf \
|
run-test262.c test262o.conf test262.conf \
|
||||||
test262o_errors.txt test262_errors.txt \
|
test262o_errors.txt test262_errors.txt \
|
||||||
@ -150,7 +177,6 @@ cp tests/*.js tests/*.patch tests/bjson.c $outdir/tests
|
|||||||
cp examples/*.js examples/*.c $outdir/examples
|
cp examples/*.js examples/*.c $outdir/examples
|
||||||
|
|
||||||
cp doc/quickjs.texi doc/quickjs.pdf doc/quickjs.html \
|
cp doc/quickjs.texi doc/quickjs.pdf doc/quickjs.html \
|
||||||
doc/jsbignum.texi doc/jsbignum.html doc/jsbignum.pdf \
|
|
||||||
$outdir/doc
|
$outdir/doc
|
||||||
|
|
||||||
( cd /tmp && tar Jcvf /tmp/${d}.tar.xz ${d} )
|
( cd /tmp && tar Jcvf /tmp/${d}.tar.xz ${d} )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user