8000 Releases · amol-/dukpy · GitHub
[go: up one dir, main page]

Skip to content

Releases

0.6.0

Choose a tag to compare

@github-actions github-actions released this 23 Jul 12:39

New features and capabilities

  • JavaScript engine migrated from Duktape to QuickJS-NG v0.11.0, with modern
    JavaScript syntax and native Promise/job-queue support.
  • Added dukpy.run(path, **kwargs) and JSInterpreter.run(path, **kwargs);
    the dukpy CLI uses this file runner. run() supports native ESM static
    import/export, import.meta.url, import.meta.main, and top-level
    await.
  • File entrypoints use Node-like classification: .mjs is ESM, .cjs is
    CommonJS, and .js follows the nearest package.json "type" of module
    or commonjs. Package-less ambiguous .js files are probed by compiling the
    CommonJS wrapper first, then native ESM; source text is not scanned.
  • The QuickJS CommonJS runtime supports require, module, exports,
    __filename, and __dirname. Its cache is shared with ESM/CommonJS interop,
    and failed modules are removed so they can be retried.
  • ESM can import CommonJS: the default export is module.exports; the only
    named exports are module, exports, and require. Named exports are not
    inferred from CommonJS source.
  • Node-like fs, path, url, querystring, and punycode shims remain
    available.
  • Promise microtasks drain before result serialization; Promise failures during
    evaluation or serialization raise JSRuntimeError.
  • Python callbacks preserve argument order and JSON types, support Unicode names
    and Unicode/emoji values, map None returns to JavaScript undefined, and
    turn missing callbacks and Python exceptions into catchable ReferenceError
    and InternalError, respectively.
  • Result conversion more closely follows JSON.stringify: null, undefined,
    NaN, Infinity, and -Infinity map to Python None; circular references
    and BigInt conversion failures raise runtime errors.
  • Stack exhaustion and oversized allocations raise runtime errors, Python signal
    exceptions propagate, and blocking Atomics.wait is disabled.
  • The npm installer uses HTTPS for registry and tarball URLs; rejects unsafe tar
    paths, path traversal, multiple roots, unsupported entries, and symlink
    destination escapes; and reports missing metadata, versions, and tarball URLs
    more clearly.
  • Bundled TypeScript was upgraded to 5.7.3.

No longer available and behavior changes

  • Generic Babel support was removed: dukpy.babel_compile, dukpy.webassets.BabelJS, and the babeljs WebAssets filter are unavailable; bundled Babel remains only for JSX transpilation.
  • CoffeeScript support, including dukpy.coffee_compile, was removed.
  • Duktape and its Duktape global, Duktape.modSearch, module system, error
    wording, and stack formatting are gone; code relying on them must use DukPy's
    QuickJS/CommonJS behavior and update exact-message expectations.
  • Python versions below 3.9 are unsupported; 0.6.0 requires Python >=3.9,
    and old Python 2 compatibility 8000 code is gone.
  • The old dukpy/run.py module is removed. Use dukpy.run(...); code importing
    main from dukpy.run breaks. The dukpy console command remains and now
    targets dukpy.cli:main.
  • evaljs() remains script-only and does not auto-detect ESM syntax; run static
    import/export through dukpy.run() file entrypoints.
  • CommonJS module IDs now use canonical file-like IDs with extensions and
    forward slashes, so exact old module.id or require.id strings may differ.
  • require('x.mjs') and require() of .js files classified as ESM fail; use
    ESM import/dukpy.run(). CommonJS named imports are unsupported unless they
    are module, exports, or require; use the default import for its API.
  • Top-level functions and Symbols now raise Invalid Result Value; undefined,
    NaN, and infinities map to None, and Duktape-specific or formerly {}
    results may differ.
  • The installer rejects HTTP registry or tarball URLs, tarballs with symlinks,
    path traversal, multiple roots, or unsupported entries, and symlinked
    destinations.

Version 0.5.1

Choose a tag to compare

@amol- amol- released this 06 Feb 23:54
e5b5c96

What's Changed

  • Support Python 3.13
  • Support Python 3.14

Full Changelog: 0.5.0...0.5.1

Version 0.5.0

Choose a tag to compare

@github-actions github-actions released this 07 Nov 19:10
8de6f50

What's Changed

Full Changelog: 0.4.0...0.5.0

Version 0.4.0

Choose a tag to compare

@amol- amol- released this 06 Jun 20:56

What's Changed

New Contributors

Full Changelog: 0.3.1...0.4.0

Version 0.3.1

Choose a tag to compare

@github-actions github-actions released this 15 Feb 19:54
c711f74

What's Changed

New Contributors

Full Changelog: 0.3.0...0.3.1

Version 0.3.0

Choose a tag to compare

@amol- amol- released this 05 Dec 22:46
  • Upgrade to duktape engine 2.7.0
  • Support for installing nodejs modules where the root distribution directory is not named package.
  • Better error message when a Python function is not found
  • GitHub Actions based release workflow, wheels are now automatically generated for more versions.
    Wheels for Apple Silicon (M1) are now provided.
  • Support for Python 2.7, 3.5 and 3.6 is deprecated. DukPy might still work, but it's untested.

wheels-test

wheels-test Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Jun 16:13

Test release to verify wheels building and uploading

Version 0.2.3

Choose a tag to compare

@amol- amol- released this 09 Jun 22:13
  • Support for Python 3.8
  • Testuite now based on pytest instead of nose
  • Deprecated support for Python 2.6 and 3.4
  • Updated included babel version to 6.26.0

Version 0.2.2

Choose a tag to compare

@amol- amol- released this 07 Sep 16:09
  • Fix a memory leak in dukpy.evaljs

Version 0.2.1

Choose a tag to compare

4E91
@amol- amol- released this 30 Aug 09:15
  • State compatibility with Python 3.7
  • Provide wheels for Python 3.7
  • Fix building wheel from source distribution
0