You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

354 lines
11 KiB

================
Duktape releases
================
11 years ago
Released
11 years ago
========
0.1.0 (2013-02-14)
------------------
* Initial alpha release
* Core features work: compiler, executor, regexps, garbage collection
* Most built-ins incomplete or missing
0.2.0 (2013-02-27)
------------------
* Built-ins implemented: Boolean, Date, JSON
* Date built-in has initial, minimal local time / locale support
* Initial internal documentation: regexp, datetime, json
0.3.0 (2013-03-16)
------------------
* Built-ins implemented: global object, Object, String
0.4.0 (2013-03-31)
------------------
* Built-ins: Array, Number, completing built-ins
0.5.0 (2013-05-17)
------------------
* Built-in number conversion primitives
* Cleanup built-ins, improve test cases for built-ins
0.6.0 (2013-09-21)
------------------
* First round of public API cleanup, and add basic API documentation
* First version of duktape.org website
0.7.0 (2013-10-30)
------------------
* Traceback support improved
* Clean up and document error object properties
* Add prototype objects for buffer and pointer values, and make them object
coercible
* Proper support for big, little, and "middle endian" environments
* Single file combined source distributable
* Portability and bug fixes
11 years ago
11 years ago
0.8.0 (2013-12-18)
11 years ago
------------------
* Remove DUK_PROFILE model, explicit DUK_OPT_xxx feature options added for
tuning the build (see web docs)
11 years ago
* Register shuffling added to compiler which mostly eliminates constant and
temporary register limits
* Reduce code footprint, make built-in data 'const' so that it compiles
into the 'text' section
* Augment errors created when a built-in error constructor is called as
a normal function (e.g. "var e = Error('test')")
* Enforce string/buffer length limits to avoid corner cases with strings
and buffers close to size_t limit
11 years ago
* Ecmascript E5.1 test cases and fixes
* Mark-and-sweep stringtable leak fixed, affected mostly builds without
reference counting
* Run a few mark-and-sweep passes in duk_destroy_heap() to give finalizers
a chance to run in most (but not all) cases
* Coroutine yield fixes
* Portability and bug fixes
11 years ago
0.9.0 (2014-02-02)
------------------
11 years ago
* Added duk_gc() API call to force GC, implemented duk_map_string() and
duk_decode_string()
* Added extended JSON format variants JSONX and JSONC; NULL pointer
values string now coerce to "null" instead of e.g. "(nil)" to match
JSONX format
11 years ago
* Added input line number to compiler error messages (e.g. SyntaxErrors)
* Added support for function declarations outside function or program top
level (also known as "function statements"), with V8-like semantics
* Renamed __duk__ to Duktape for more consistency with Ecmascript conventions,
and made the following cleanups:
- removed somewhat useless 'build'
- added 'env'
- replaced 'addr' and 'refc' with 'info' which gives more internal info
- merged 'setFinalizer' and 'getFinalizer' into a single 'fin' call
- compatibility properties available for now (e.g. __duk__), but will
be removed after this release
* Removed array size limit for very large array joins
* Improve Unicode handling of Greek final sigma
* Make mark-and-sweep interval relative to current heap size (measured as
combined object and string count)
* Add DUK_OPT_NO_VOLUNTARY_GC to disable voluntary mark-and-sweep entirely;
this is useful in timing sensitive applications like games
* Preliminary internal support for periodic bytecode executor interrupts
which can be used to implement executor step limits, profiling, and
debugging
* More feature options for build tuning
* More self tests to detect obscure compiler bugs, two's complement
arithmetic, etc (enable with DUK_OPT_SELF_TESTS)
11 years ago
* Fixed several compile warnings, fixed warnings generated by GCC -Wextra
* Fixed some incorrect assertions (with no underlying bug)
* Fixed a coroutine termination bug which caused assertion errors and
occasional segfaults when an uncaught error terminated a thread with
a catch point active
11 years ago
* Fixed a tailcall bug: the current activation was not closed which
caused variable lookups to fail if an inner function accessed
variables in the surrounding activation
* Fixed a few bound constructor bugs
* Fixed handling of "get" and "set": they were handled as reserved words
which prevented valid statements like "var set = 1;"
* Fixed a switch-case bug where code was accepted before the first
case/default clause
* Fixed a switch-case bug where successive case clauses with no code
in-between was not handled correctly
* Fixed a for statement control flow bug when the third clause of the for
statement was empty and a continue was used
* Fixed error lineNumber bug triggered when there was more than 127
source lines between successive compiled statements
* Fixed some line terminator handling issues
* Fixed relational operator ToPrimitive() coercion order, for some
operators coercion order was reversed
* Fixed 'with' statement in strict mode (did not throw SyntaxError)
* Fixed strictness handling of an indirect eval call from a strict
function (eval incorrectly inherited strict mode)
* Several test262 and underscore.js test case fixes (other than above)
* Windows compatibility for both WIN32 and WIN64, tested with MinGW (x86),
MINGW-w64 (x64), VS2010 Express (x32), VS2013 Express (x32 and x64)
11 years ago
* Portability fixes for non-C99 platforms (like MSVC in VS2010)
* Drop 'full distributable' build, which is replaced by the public GitHub
repo; simplify Makefiles etc accordingly (this change is not visible in
the source distributable)
0.10.0 (2014-04-13)
11 years ago
-------------------
* Avoid "out of regs" for large expressions by adding more comprehensive
register shuffling and indirect variants of several bytecode opcodes
* Change error handler model: error handlers are now set explicitly to
Duktape.errcreate and Duktape.errthrow, and can interact with both error
creation and error throwing
* Incompatible API change: errhandler_index argument has been removed
from all protected API calls as unnecessary
* Add duk_push_heap_stash(), duk_push_global_stash(), and
duk_push_thread_stash() to provide C code with stashes for storing
values invisible to Ecmascript code
* Add duk_safe_to_string() and duk_safe_to_lstring() to make it easier
to write result printing in C
* Add protected variants of eval/compile: duk_peval(), duk_peval_string(),
duk_peval_file(), duk_pcompile(), duk_pcompile_string(), duk_pcompile_file()
* duk_pcall_prop() now catches invalid stack index errors and property
lookup errors which happen before the actual call
* Add duk_put_function_list() and duk_put_number_list() to make it easier
to define modules from C code
* Add Duktape.compact(), Duktape.line(), and Duktape.act()
* Add a barebones built-in logging framework with both Ecmascript and C
APIs and easy customization
* Add a message argument to fatal handler function callback, simplify
internal fatal error and panic handling
* Compact function templates and instances to reduce memory footprint
* Execute finalizers for all objects, even reachable ones, when a heap
is freed to allow native resources to be freed reliably
* "new Object()" now promotes plain buffer and pointer values to Buffer
and Pointer objects
11 years ago
* Buffer values now have virtual numeric index properties and a virtual
'length' property, so that you can do x = buf[123], buf[123] = x and
buf.length
* Buffer data areas no longer have an automatic NUL terminator to avoid
rounding user-requested allocation sizes upwards unnecessarily
* Buffer constructor behavior changes: number argument creates a buffer
of a certain size; optional second argument indicates whether a buffer
should be dynamic or fixed
* Change Array.prototype.splice() behavior so that if 2nd argument
(deleteCount) is not given, splice to end of array instead of treating
like deleteCount was zero: the new behavior is non-standard but is the
real world behavior used by V8, Rhino, Spidermonkey, etc
* Add an automatic 'length' property to Duktape/C functions
11 years ago
* Add a feature option to provide a 'caller' property for non-strict
functions, with behavior similar to the (non-standard) behavior in
e.g. V8 and Rhino
11 years ago
* Add a feature option to disable automatic zeroing of data areas of
buffer values
* Improve self tests to include byte order validation
* Allow the global eval() function to be called from C code (causes an
indirect eval); this was at least an issue with a bound eval() call
* Fix O(depth^2) inner function parsing issue, inner functions are now
only parsed once and deeply nested inner functions are no longer a
performance issue
* On platforms requiring a specific alignment, use an alternate object
property table memory layout to reduce memory footprint
* Wrap remaining platform calls through macro wrappers to allow easier
targeted fixes if necessary
* Fix a regexp bug: non-capturing groups inside quantifier expressions
were matched incorrectly
* Fix a regexp bug: capture groups were not reset to 'undefined' when
a quantified with capture groups was re-matched by a quantifier
* Fix a tailcall bug which caused assertion failures when a tailcall was
made from inside a switch-case
* Fix a with statement bug which caused assertion failures when a break or
continue jumped out of the with statement
* Fix a try-catch-finally broken assertion when finally block had finished
(ENDFIN opcode)
* Portability fixes for Crossbridge (Flash), NetBSD (endianness detection
and a few Math.pow() fixes), OpenBSD (endianness detection),
QNX (endianness and other fixes)
* Warning fixes for non-default feature options and a few exotic compilers
* Duktape can now be compiled with Emscripten and executed with e.g. V8,
"Dukweb" provides an example where Duktape runs on a web page, with
Duktape and the browser Javascript environment interacting
Planned
=======
0.11.0 (2014-05-XX)
-------------------
* Add Object.setPrototypeOf() and Object.prototype.__proto__, both borrowed
from ES6 draft, to improve internal prototype handling
* Add proxy objects borrowed from ES6 draft to allow property virtualization
(subset implementation limited to 'get', 'set', and 'deleteProperty'
handler methods)
* Serialize negative zero as '-0' in JSONX and JSONC
* Rename some feature options (DUK_OPT_xxx) for consistency, please check
any options you use against the up-to-date options list
* Rename Duktape.errcreate and Duktape.errthrow to Duktape.errCreate and
Duktape.errThrow for naming consistency
* Improve non-C99 build: type detection should now work on (some) 64-bit
platforms too, and non-debug build should now generate much fewer (or no)
warnings
* Add support for X32 ABI (gcc -mx32 option)
* C typing wrapped throughout to allow porting to more exotic platforms,
e.g. platforms where "int" is a 16-bit type
* Fix a 'delete' bug: if delete target was a string and key was 'length' or
a valid character index, value stack was left in an inconsistent state in
non-strict mode (caused an assertion failure)
* Fix a rare math optimization issue in the Date built-in, which caused a
corner case test (test-bi-date-canceling.js) to fail on e.g. 64-bit Ubuntu,
gcc 4.8.1, -m32, and no -std=c99
1.0.0 (2014-06-XX)
11 years ago
-------------------
* Feature complete baseline release
11 years ago
1.1.0 (2014-XX-XX)
------------------
* Debugger
2.0.0 (XXXX-XX-XX)
------------------
* Ecmascript 6 features will be implemented in v2.x.x at the earliest
(some individual features may be cherry picked into v1.x.x)