./lang/duktape, Embeddable Javascript engine

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 2.5.0, Package name: duktape-2.5.0, Maintainer: pkgsrc-users

Duktape is an embeddable ECMAScript E5/E5.1 engine with a focus on
portability and compact footprint. By integrating Duktape into your
C/C++ program you can easily extend its functionality through
scripting. You can also build the main control flow of your program
in ECMAScript and use fast C code functions to do heavy lifting.

The terms ECMAScript and JavaScript are often considered more or less
equivalent, although JavaScript and its variants are technically just
one environment where the ECMAScript language is used. The line
between the two is not very clear in practice: even non-browser
ECMAScript environments often provide some browser-specific built-ins.
Duktape is no exception, and provides the commonly used print() and
alert() built-ins. Even so, we use the term ECMAScript throughout to
refer to the language implemented by Duktape.


Required to run:
[lang/libduktape]

Required to build:
[pkgtools/cwrappers]

Master sites:

SHA1: d91e1982f707cb0b7be42f1f11cf00e972465319
RMD160: 723132dc4c51cae75b48314463d9aa6d019485bd
Filesize: 1007.02 KB

Version history: (Expand)


CVS history: (Expand)


   2020-04-04 09:46:24 by Ryo ONODERA | Files touched by this commit (1)
Log message:
duktape: Capitalize ECMAScript and JavaScript
   2020-03-24 14:49:11 by Nia Alarie | Files touched by this commit (4) | Package updated
Log message:
[lib]duktape: Update to 2.5.0

2.5.0 (2019-11-24)
------------------

* Rename the 'global' binding to 'globalThis' to match updated
  proposal-global; enable the binding by default; update
  polyfills/global.js (GH-2160)

* Add duk_pull() API call (GH-2184)

* Add experimental duk_cbor_encode() and duk_cbor_decode() API calls (GH-2163)

* Move CBOR extra into an actual Duktape built-in, enabled by default (GH-2163)

* Include "end of input" in error message if SyntaxError occurs at end of
  file (GH-2152, GH-2165)

* Add missing DUK_DEFPROP_xxx convenience constants for the 'EC' combination
  (like DUK_DEFPROP_EC, DUK_DEFPROP_HAVE_EC, etc) which were accidentally
  missing from the API header (GH-2187)

* Fix behavior of proxied Array objects for: Array.isArray(), duk_is_array(),
  Object.prototype.toString(), JSON.stringify(), Array.prototype.concat()
  (GH-2041, GH-2175, GH-2176)

* Fix a harmless assert in Math.atan2() when compiling with gcc -m32 (GH-2164)

* Fix (suppress) -Wfloat-equal warnings for GCC and Clang (GH-234, GH-2164)

* Fix compile warning when base64 support disabled (GH-2159)

* Fix some compile warnings (GH-2161, GH-2172)

* Add RISC-V architecture detection in duk_config.h; previous versions
  also compiled on RISC-V but identified as "generic" (GH-2174)

* Avoid ast/endian.h header on Solaris (GH-2180)

* Minor performance and footprint improvements (GH-2167, GH-2177)

2.4.0 (2019-07-28)
------------------

* Add duk_to_stacktrace() and duk_safe_to_stacktrace() to make it easier to
  get stacktraces in C code (GH-2059, GH-2086)

* Add duk_push_bare_array() to push an Array instance which doesn't
  inherit from anything (GH-2064)

* Add duk_require_constructable() and duk_require_constructor_call() to
  the public API (previously they were internal helpers) (GH-2102)

* Enable Symbol built-in by default (DUK_USE_SYMBOL_BUILTIN) (GH-1969)

* Remove arguments.caller for strict argument objects to match revised
  ES2017 behavior (GH-2009)

* Add DUK_USE_NATIVE_STACK_CHECK() macro config option (disabled by default)
  for a platform specific stack space check in recursive and stack heavy
  code paths; this is more accurate than the default fixed recursion limit
  (GH-1995)

* When using Proxy wrapping in console extra, don't return a fake NOP
  function for console.toJSON to avoid confusing JX serialization of the
  console object (GH-2052, GH-2054, GH-2055)

* Disable Proxy wrapper for 'duk' console binding because it is no longer
  the preferred console implementation method (GH-2055)

* Update UnicodeData.txt and SpecialCasing.txt used for building internal
  Unicode control data to Unicode version 12.1.0 (GH-2085)

* Use bare objects/arrays in more places internally: variable map and
  formals array of functions loaded from bytecode (to match behavior of
  compiled functions), context dump array for duk_push_context_dump(),
  and error tracedata (GH-2089)

* Expose DUK_INTERNAL_SYMBOL() macro; while an application shouldn't
  normally need to use this macro at all, it may be useful in some cases
  to peek into Duktape internals (with no versioning guarantees) (GH-2118)

* Accept non-plain buffer types in some examples/extras (cmdline, eventloop,
  logging, print-alert) (GH-2107)

* Fix eventloop example .write() method buffer handling which relied on
  Duktape.Buffer, also fix a related TCP client example bug (GH-2107)

* Minor changes to CBOR extra type handling: encode non-UTF-8 strings
  as CBOR byte strings (instead of text strings), encode Symbols as empty
  objects, refuse to decode Symbols, encode pointers as "(%p)" instead of
  "%p" to match JX, decode integers in most cases to fastints when possible
  (GH-2121, GH-2154)

* Minor performance improvements to CBOR extra (GH-2121, GH-2154)

* Add (untested) support for mixed endian targets to CBOR extra (GH-2121)

* Remove support for unnecessary DUK_USE_USER_DECLARE config option, use
  configure.py fixup line/file instead (GH-2123)

* Remove ncurses dependency from the eventloop example, add a new example
  for running a lot of timers, improve init error reporting (GH-2126,
  GH-2128)

* Add --no-auto-complete option to 'duk' to disable linenoise auto
  completion (GH-2131)

* Add support for keeping an array's internal array part in
  Object.defineProperty(), previously the array part was always
  abandoned if an array index was defined using Object.defineProperty()
  (even if property attributes were correct) (GH-2146)

* Rework some internal property handling call sites and helpers to e.g.
  avoid inheriting internal properties when not intended (GH-2149)

* Improve assertion coverage for internal structures during mark-and-sweep
  (GH-2092)

* Fix incorrect parsing of post-increment/post-decrement followed by
  division (e.g. "z++ / 20"), the slash was interpreted as beginning
  a regexp (GH-2140)

* Fix incorrect handling of zero-length dynamic buffer in base-64 fast path
  decoder (GH-2027, GH-2088)

* Fix Object.getOwnPropertySymbols() behavior for the virtual properties
  of arrays, Strings, and buffer objects: string keys were incorrectly
  included in the result (GH-1978, GH-1979)

* Fix Date .setTime(), setYear(), etc behavior for a frozen Date instance;
  they should be allowed, but were rejected with a TypeError (GH-2149)

* Fix compile error (missing DUK_DCERROR_UNSUPPORTED macro) when compiling
  with RegExp support disabled (GH-1990, GH-1991)

* Fix configure.py -D option to accept parenthesized macros, e.g.
  '-DFOO(bar)=quux', which were used in some examples but were not
  actually functional (GH-2013, GH-2014)

* Fix error handling corner case when a property-based call (foo.bar())
  caused an error and Duktape.errCreate returned a callable value (such
  as Float64Array); this caused an assertion failure (GH-2061, GH-2087)

* Fix coercion of +'+' and +'-' to NaN instead of 0 (GH-2019, GH-2134)

* Fix possible out-of-memory in call stack unwind by preallocating the
  environment property table on creation (GH-476, GH-2021, GH-2106)

* Fix possibility for unbounded native recursion without call stack limit
  backstop when call handling triggers a Proxy trap (GH-2032, GH-2108)

* Fix several assertion failures with possible memory unsafe behavior
  (GH-2022, GH-2023, GH-2024, GH-2025, GH-2026, GH-2031, GH-2033, GH-2035,
  GH-2036, GH-2065, GH-2115, GH-2138, GH-2146)

* Fix incorrect assertion with no underlying bug for resolving bound
  function chains with a Proxy object (rather than a plain function)
  as the final non-bound function (GH-2049, GH-2103)

* Fix incorrect assertion with no underlying bug for "thr == heap_thread"
  during heap destruction finalizer runs; the assert is untrue when a
  finalizer (executed during heap destruction) resumes a coroutine (GH-2030,
  GH-2132, GH-2133)

* Fix compile error for extras/eventloop due to missing a header file
  (c_eventloop.h) in the dist package (GH-2090)

* Fix CBOR decoding of text strings and byte strings with a lot of
  concatenated pieces in the CBOR extra (GH-2093)

* Fix CBOR decoding of (ignored) 64-bit tags in the CBOR extra (GH-2095)

* Fix a CBOR encoding wrap check in the CBOR extra (GH-2121)

* Trivial fixes and cleanups: Windows Date provider return code check
  consistency (GH-1956)

* Fix MSVC ARM64 detection (GH-2078)

* Use GCC (>= 5.0) and Clang builtin bswap macros, add internal DUK_BSWAP64()
  macro (GH-2122)

* Short term workaround for a noreturn-related issue with GCC 5+ (GH-2155)
  where some internal duk_require_constructor_call() calls are entirely
  missing in compiler output in certain circumstances (GCC 5+, noreturn
  attributes enabled, debugger support enabled); the workaround is to
  disable noreturn macros for GCC 5+ for now (GH-2156)

* Various portability fixes (GH-1931, GH-1976)
   2019-06-24 12:59:43 by Nia Alarie | Files touched by this commit (20)
Log message:
More http -> https.

Reviewed by hand.
   2019-03-20 19:29:20 by Alistair G. Crooks | Files touched by this commit (5) | Package updated
Log message:
Update duktape and libduktape to 2.3.0

Changes since previous version (2.2.0):

pkgsrc: use the included Makefile.cmdline to build duktape, rather
than custom command in pkgsrc Makefile. Don't assume ${CC} is gcc
while doing so

XXX - it looks like the ABI has changed (silently) from 2.2.0 without
a corresponding libtool version bump from upstream. caveat buildor

2.3.0 (2018-08-04)
+ When C++ exception support is enabled use a separate
duk_fatal_exception (inherits from std::runtime_error) to propagate
fatal errors (uncaught errors, assertions) out of Duktape when using
the default fatal error handler (GH-1915)
+ Update UnicodeData.txt and SpecialCasing.txt used for building
internal Unicode control data to Unicode version 10.0.0 (GH-1851)
+ Add support for Symbol.hasInstance (@@hasInstance) check for
'instanceof' operator and duk_instanceof() API call; also add
Symbol.hasInstance and Function.prototype[@@hasInstance] (GH-1821)
+ Add support for Symbol.toStringTag (@@toStringTag) in
Object.prototype.toString() (GH-1822)
+ Add support for Symbol.isConcatSpreadable (@@isConcatSpreadable) in
Array.prototype.concat() (GH-1823)
+ Add support for Symbol.toPrimitive (@@toPrimitive) in ToPrimitive()
internal algorithm and duk_to_primitive() API call (GH-1825)
+ Invoke Proxy 'has' trap in Array.prototype.concat() when inspecting
the elements of the Proxy target (GH-1823)
+ Remove DUK_USE_NONSTD_ARRAY_CONCAT_TRAILER because the underlying
ES5.1 specification "bug" was fixed in ES2015 (GH-1823)
+ Remove DUK_USE_NONSTD_ARRAY_MAP_TRAILER because ES5.0/ES5.1 behavior
actually did match the "non-standard" behavior provided by the option
(GH-1823)
+ Add duk_random() to allow C code access to the same random number
source as ECMAScript code (GH-1815)
+ Add duk_push_new_target() to allow C code to access new.target; at
present this is for completeness because without actual class support
it's only useful to detect constructor calls which can already be done
using duk_is_constructor_call() (GH-1745)
+ Add experimental API call variants for plain C literals, for example
duk_push_literal(ctx, "key") and duk_get_prop_literal(ctx,
"propname"), which allow e.g.  better performance; calls added:
duk_push_literal(), duk_get_prop_literal(), duk_put_prop_literal(),
duk_has_prop_literal(), duk_del_prop_literal(),
duk_get_global_literal(), duk_put_global_literal() (GH-1805)
+ Add duk_get_global_heapptr() and duk_put_global_heapptr() for
completeness (GH-1805)
+ Automatically pin strings accessed using the C literal API call
variants such as duk_get_prop_literal(ctx, "propname") between
mark-and-sweep rounds to facilitate literal caching and to reduce
string table traffic; this behavior can be disabled by disabling
DUK_USE_LITCACHE_SIZE in configure.py (GH-1813)
+ Add a lookup cache for C literals to speed up string table lookups
when using API call variants such as duk_get_prop_literal(ctx,
"propname"); the cache relies on literals being pinned between
mark-and-sweep rounds, and can be disabled by disabling
DUK_USE_LITCACHE_SIZE in configure.py (GH-1813)
+ ES2015 Number constructor properties:  EPSILON, MIN_SAFE_INTEGER,
MAX_SAFE_INTEGER, isFinite(), isInteger(), isNaN(), isSafeInteger(),
parseInt(), parseFloat() (GH-1756, GH-1761)
+ Assume only natural alignment (DUK_USE_ALIGN_BY=8) on all platforms
to minimize compiler assumptions regarding unaligned accesses (which
can be an issue even on x86); applications working with a low memory
target may want to force DUK_USE_ALIGN_BY in configuration (GH-1783,
GH-1784)
+ Base64 decoder is now more lenient for padding:  accepts missing
padding ('Zm'), partial padding ('Zm='), standard padding ('Zm=='),
and extra padding ('Zm===' etc), also for concatenated documents
('Zm===Zm' decodes to 'ff' for example) (GH-1789)
+ Base64 encoder and decoder performance improvements for both fast
path and slow path variants (GH-1789)
+ Make base64 support optional and drop it from lowmem base
configuration; define DUK_USE_BASE64_SUPPORT to enable it (GH-1789)
+ Make hex support optional and drop it from lowmem base
configuration; define DUK_USE_BASE64_SUPPORT to enable it (GH-1789)
+ Add C++ name mangling wrappers (extern "C") for extras (GH-1780,
GH-1782)
+ Add a duk_uint64_t to duk_hbuffer_fixed forced alignment union trick
just in case double and uint64_t alignment requirements differ
(GH-1799)
+ Add a CBOR encoder/decoder as an extra (GH-1781, GH-1800, GH-1801)
+ Add a minimal ES2015 Promise polyfill into the distribution
(GH-1865)
+ Include <exception> only when compiling as C++ with C++ exception
support enabled (GH-1838, GH-1839)
+ Allow undefined timeout in eventloop example setTimeout() and
setInterval() bindings, minor cleanups and improvements (GH-1866,
GH-1879, GH-1884)
+ Revise Number.prototype.toFixed() 'this' binding and fractionDigits
argument validation order to match ES2015 where the 'this' binding is
validated first (GH-1887)
+ Add Makefile.jsoncbor to the distributable (GH-1885)
+ Makefile.sharedlibrary portability improvements (GH-1922, GH-1923)
+ Change spelling from ECMAScript to ECMAScript throughout the
internal source code; as far as external behavior is concerned this
only affects a few debug prints (GH-1894)
+ Fix NULL pointer dereference in error augmentation when
DUK_USE_TRACEBACKS was disabled (GH-1909)
+ Fix potential dangling pointer use in Duktape thread termination
handling; the dangling pointer could cause unsafe memory behavior
(GH-1845, GH-1868)
+ Fix performance.now() property attributes to 'wec' (earlier 'wc')
(GH-1821)
+ Fix debugger StepOver behavior when a tailcall happens in a nested
function (not the function where stepping started from) (GH-1786,
GH-1787)
+ Fix trailing single line comment handling for Function constructor;
new Function('return "foo" //') previously failed with SyntaxError
(GH-1757)
+ Fix some lexer bugs related to parsing in RegExp mode (interpret
leading '/' as part of a RegExp) or not (interpret '/' as division)
(GH-1779)
+ Fix DUK_BOOL_{MIN,MAX} defines for unsigned duk_bool_t (GH-1769)
+ Fix 'defined but not used' warning for Windows (GH-1775)
+ Fix potential uninitialized data use when Windows Date provider
FileTimeToSystemTime() or FileTimeToLocalFileTime() failed (GH-1953)
+ Fix some Clang warnings by avoiding undefined behavior by default,
define DUK_USE_ALLOW_UNDEFINED_BEHAVIOR to reduce the explicit
undefined behavior checks for better footprint/performance (GH-1777,
GH-1795, GH-1796, GH-1797, GH-1798)
+ Fix some compilation warnings triggered when DUK_NORETURN is not
defined; the internal DUK_WO_NORETURN() is used to include unreachable
dummy statements when the noreturn attribute is not available, e.g.
DUK_WO_NORETURN(return 0;); (GH-1790)
+ Fix a few casts in duk_trans_socket_windows.c to avoid errors in a
C++ build (GH-1773)
+ Fix harmless -Wcast-align warnings on armhf (GH-1793)
+ Various compiler warning fixes (GH-1788, GH-1932, GH-1924, GH-1950,
GH-1951, etc)
+ Add automatic workaround for union aliasing issues with FreeBSD +
-m32 + Clang prior to 5.0; the aliasing issues cause packed duk_tval
to work incorrectly (see
https://github.com/svaarala/duktape/blo … aliasing.c),
and the workaround is to use unpacked duk_tval prior to Clang 5.0
(GH-1764)

2.2.1 (2018-04-26)
+ Fix trailing single line comment handling for Function constructor;
new Function('return "foo" //') previously failed with SyntaxError
(GH-1757)
+ Fix DUK_BOOL_{MIN,MAX} defines for unsigned duk_bool_t (GH-1769)
+ Fix debugger StepOver behavior when a tailcall happens in a nested
function (not the function where stepping started from) (GH-1786,
GH-1787)
+ Fix potential dangling pointer use in Duktape thread termination
handling; the dangling pointer could cause unsafe memory behavior
(GH-1845, GH-1868)
   2017-10-29 23:26:56 by Leonardo Taccari | Files touched by this commit (2) | Package updated
Log message:
duktape: Update lang/duktape to 2.2.0

Sync duktape to libduktape-2.2.0 update.

Reviewed and thanks to <agc>!
   2016-05-05 05:59:49 by Alistair G. Crooks | Files touched by this commit (4)
Log message:
Add duktape 1.5.1, an MIT-licensed Javascript engine.

This is the command-line tool, which uses the recently added libduktape package.

	Duktape is an embeddable Ecmascript E5/E5.1 engine with a focus on
	portability and compact footprint.  By integrating Duktape into your
	C/C++ program you can easily extend its functionality through
	scripting.  You can also build the main control flow of your program
	in Ecmascript and use fast C code functions to do heavy lifting.

	The terms Ecmascript and Javascript are often considered more or less
	equivalent, although Javascript and its variants are technically just
	one environment where the Ecmascript language is used.  The line
	between the two is not very clear in practice:  even non-browser
	Ecmascript environments often provide some browser-specific built-ins.
	Duktape is no exception, and provides the commonly used print() and
	alert() built-ins.  Even so, we use the term Ecmascript throughout to
	refer to the language implemented by Duktape.