Skip to content

Latest commit

 

History

History
1130 lines (736 loc) · 60.1 KB

CHANGELOG.md

File metadata and controls

1130 lines (736 loc) · 60.1 KB

8.7.0 (2024-04-08)

8.7.0-rc.3 (2024-04-08)

Bug Fixes

Features

Reverts

8.6.2 (2023-10-10)

8.6.1 (2023-10-10)

Bug Fixes

8.6.0 (2023-10-06)

Bug Fixes

  • make jar files readonly prior to loading (#1790) (2bcdaf0)
  • only use project jar files if they are linked (d23ca94)
  • revert namespace change as to not break existing projects (8b7b59d)

Features

8.5.4 (2023-09-27)

Bug Fixes

  • make jar files readonly prior to loading (#1790) (14a932a)

8.5.3 (2023-09-22)

Bug Fixes

  • resolve __postFrameCallback crash on re-scheduling (6a533ce)

8.5.2 (2023-08-31)

Bug Fixes

  • __runOnMainThread erase iterator before it can be invalidated (e811484)
  • pull js stack trace from wrapped NativeScriptExceptions (#1774) (52b7fa2)

8.5.1 (2023-07-24)

Bug Fixes

  • Avoid setting the same property on an ObjectTemplate twice (9e610c8)

  • Don't access super property on implementation object (d8b8bc0)

  • Don't iterate properties in GetImplementedInterfaces (9dfae65)

  • intermediary fix for #1771 (32c7abb)

  • Leave context after Runtime::PrepareV8Runtime() (cd1d285)

  • memory leak on accessing static interface methods (88ce2d8)

  • memory leak on saving code cache (6d416a1)

  • Update common-runtime-tests-app (c8db3ca)

  • update legacy android version in package.json (#1744) (b4ad8e5)

  • Use Isolate::TryGetCurrent() (afe026a)

  • Remove weak callback from __postFrameCallback cache (#1755) (ff1b979), closes #1755

Features

Performance Improvements

  • avoid unnecessary string copying when calling static properties of interfaces (8b53d02)

BREAKING CHANGES

  • __startNDKProfiler() and __stopNDKProfiler() global bindings no longer available.

The NDK profiler was not functional, since nothing in the build process defined the NDK_PROFILER_ENABLED preprocessor symbol. The start and stop functions were already no-ops.

  • chore: Remove outdated comment

RunMicrotasks no longer exists, it's already been replaced in the code with PerformMicrotaskCheckpoint.

  • chore: Use unique_ptr for NewBackingStore in byte buffers

V8 doc: https://docs.google.com/document/d/1sTc_jRL87Fu175Holm5SV0kajkseGl2r8ifGY76G35k/edit

The V8 usage examples show unique_ptr here; it probably doesn't matter much, but we don't need the backing store after creating the ArrayBuffer, and I believe shared_ptr is slightly more overhead than unique_ptr.

For convenience, replace the manual empty deleter for direct buffers with v8::BackingStore::EmptyDeleter.

  • chore: Remove weak finalizer callback from __postFrameCallback()

Weak finalizer callbacks are going away in V8 11.x, so we have to remove this one. Luckily, a finalizer callback is not necessary - it's never needed to prevent the frame callback from being collected.

However, a weak callback is not necessary in the first place. We can just clean up the cache entry after the callback is executed, since it is only executed once.

Note that the call to erase() destructs the FrameCallbackCacheEntry instance, making entry a dangling pointer, so don't use it after the erase(). There's probably a safer way to do this, although the way that first occurred to me (pass the key to the callback instead of the entry, and then use std::unordered_map::extract()) is not available on robin_hood::unordered_map.

  • fix: Make sure frame callbacks are not ignored

There was a bug where __postFrameCallback() would not always cause the callback to be called. Without initializing removed, sometimes it would have a nonzero value, so the callback would be ignored.

  • chore: Clear callback caches' persistent handles in destructor

Clearing the persistent handles in the destructor makes it a bit easier to deal with the cache entry's lifetime: they are cleared whenever the entry is removed from the cache.

We do this for both the main thread callback cache and the frame callback cache.

Adding a destructor makes the cache entries non-movable. But the only place where they were moved was when inserting them into the cache anyway. We can use C++17's try_emplace() method to insert them without having to move them.

  • chore: Construct FrameCallbackCacheEntry with ID

This avoids the situation of forgetting to add an ID to the cache entry.

  • chore: Improve usage of unordered_map APIs in CallbackHandlers

This fixes a few places where we can avoid double lookups:

  • In RunOnMainThreadFdCallback, we already have a valid iterator, so no need to look up the same key again in RemoveKey (this is the only usage of RemoveKey, so we can remove it.) (Additionally, we probably want to remove the cache entry before throwing a NativeScript exception.)

  • In PostFrameCallback and RemoveFrameCallback, we should not do contains() immediately followed by find().

  • chore: Fix runtime typo

  • chore: Ignore main thread and frame callback return values

We don't do anything with the return value from these callbacks, so it's OK to ignore them and not convert them to a local handle.

8.5.0 (2023-06-27)

Bug Fixes

  • add semicolon after console type (32259a9)
  • always log console messages and uncomment live sync (c0f5514)
  • Compile as C++17 (221a9c2)
  • Correctly initialize context in inspector client init() (0bc0480)
  • drain microtasks after devtools message (4834a2b)
  • Implement console.log inspector with Runtime protocol (2c4337b)
  • memcpy array data for non-direct java bytebuffers (#1740) (1c0214a)
  • multi threading on MethodResolver (bc8bc52)
  • possible infinite loop and memory leak in metadata reader (#1749) (c2c8aa8)
  • Re-enable inspector code (f357ce6)
  • refactor console.log implementation a bit (#1741) (d3c52cb)
  • remove free of non-owned jni buffer (81806b3)
  • Remove use of DISALLOW_COPY_AND_ASSIGN macro in inspector (6da1a6b)
  • Remove use of V8InspectorPlatform (1f2b202)
  • Restore DOM and Network callback handlers (35689a7)
  • uncomment abifilters (f5a5434)
  • update js arg conversions (0640fce)
  • use min sdk 17 (2f2358c)

Features

  • add console message type prefixes (9a10e2b)
  • initial support for __inspectorSendEvent (233b7c3)
  • native timer polyfills (#1733) (3415e5c)
  • remove old WeakRef polyfill (97d7465)
  • update all archs to use v8 10.3.22 (a68b057)
  • use v8 static (ee8a521)

Performance Improvements

  • refactor arrays marshaling (84e7ddb)
  • remove instantiations and cache runtime in isolate (f23c1bb)
  • update old args converter with array marshaling optimizations and use this converter again tempporarily (b5218c9)
  • use vector pointers for passing parsed method signatures (aa623b7)

8.4.0 (2022-11-30)

Bug Fixes

Features

8.3.0 (2022-07-14)

Bug Fixes

  • apply before-plugins before checking versions (0df7362)
  • Set package version before preReleaseBuild (12acd7f)

Features

  • runOnMain, postFrameCallback & removeFrameCallback (#1713) (bdd0313)

8.2.3 (2022-06-01)

Bug Fixes

  • direct boot should not crash/ANR (d2b18d7)

8.2.2 (2022-03-09)

Bug Fixes

  • app freezing on splash screen (a61d3c1)

8.2.1 (2022-03-08)

Bug Fixes

  • add back gradle key in package json for the time being (af925d5)

8.2.0 (2022-03-08)

Bug Fixes

  • chrome-devtools: Elements tab (e935a61), closes #1641 #1640
  • ensure buildMetadata is done before R8 (01ad92e)
  • js -> buffer handling (b49801c)
  • load before-plugins.gradle in build.gradle to allow to override androidBuildToolsVersion and other vars (d926dd4)
  • loop (95ba9f5)
  • material lib as debugImplementation (c6946fe)
  • pending intent api31 flags (d8781fd)
  • update to jsparser (ea1517c)
  • workers: invalidate cached isolates on dispose (#1704) (67e9daf)

Features

  • commonGradleProperties (77585ad)
  • expose PerformMicrotaskCheckpoint (4b58570)
  • log used androidX lib versions (#1651) (528c46f)
  • make console.time use 3 decimals (7d9f90b)
  • support passing typedArrays as nio buffers (38230e5)
  • working gradle7 (501f884)

7.0.1

7.0.0

Bug Fixes

6.5.3

6.5.1

Bug Fixes

6.5.0

No changes

6.4.1

What's New

Bug Fixes

6.3.1

Bug Fixes

6.3.0

What's New

Bug Fixes

6.2.0

What's New

Bug Fixes

6.1.2

Bug Fixes

6.1.1

Bug Fixes

6.1.0

What's New

Bug Fixes

6.0.2

What's New

6.0.1

Bug Fixes

6.0.0

Breaking Changes

  • Exception information in onDiscarderError and onUnhandledError is changed so that message contains the exception message and stackTrace contains only the stackTrace. In the previous implementation stackTrace contained some additional details (including the exception message) and the message was something like:

    The application crashed because of an uncaught exception. You can look at "stackTrace" or "nativeException" for more detailed information about the exception.
    
  • The built-in JSON.stringify method is used for cross workers communication. Circular object references are no longer supported and attempting to send such object will throw an exception.

What's New

Bug Fixes

5.4.0

What's New

Bug Fixes

5.3.1

Bug Fixes

5.3.0

What's New

Bug Fixes

5.2.1

Bug Fixes

5.2.0

What's New

Bug Fixes

5.1.0

What's New

Bug Fixes

5.0.0

What's New

Bug Fixes

4.2.0

What's New

Bug Fixes

4.1.3

Bug Fixes

  • Use google repository as primary gradle repository

4.1.2

Bug Fixes

4.1.1

What's New

Bug Fixes

4.0.1

Bug Fixes

4.0.0

Breaking Changes

What's New

Bug Fixes

3.4.2

Bug Fixes

3.4.1

Bug Fixes

3.4.0

What's New

Bug Fixes

3.3.1

Bug Fixes

3.3.0

Bug Fixes

3.2.0

Bug Fixes

3.1.1

Bug Fixes

3.1.0

What's New

3.0.1

Bug Fixes

3.0.0

What's New

Bug Fixes

2.5.0-RC

What's New

Bug Fixes

2.4.0

What's New

Bug Fixes

Performance

2.3.0

What's New

Bug Fixes

2.2.0

What's New

Performance

2.1

What's New

Bug Fixes

Performance

2.0.0

What's New

Bug Fixes

Performance

1.7.1

Bug Fixes

1.7.0

What's New

Bug Fixes

1.6.0

What's New

Bug Fixes

1.5.1

What's New

Bug Fixes

1.5.0

What's New

Bug Fixes

1.4.0

Bug Fixes

1.3.0

What's New

Bug Fixes

Performance

Android Runtime Changelog

1.2.1

What's New

Bug Fixes

1.2.0

What's New

Bug Fixes

Performance

1.1.0 (2015, June 10)

New

  • Implemented #58 to remove the 3-seconds initial timeout for Debug builds.
  • Implemented #118 to replace the MultiDex library with DexClassLoader.
  • Started #103 AOT proxy generation to improve startup time and to enable new scenarios like BroadcastReceivers, BackgroundServices and arbitrary Activity types declared in the manifest.

Fixed

  • #63. An issue which prevented users to extend overloaded methods.
  • #64. A JNI Crash when calling JS method with char.
  • #113. Fixes the extend routine for an Activity.
  • #114. Removes the redundant setNativeScriptOverrides method.

1.0.0 (2015, April 29)

New

  • Updated the V8 version to 4.1.0.27.
  • Re-implemented debugger support (no more spontaneous dead locks).

Fixed

  • An issue with the error reporting routine.

Breaking Changes

  • Renamed global functions:
    • __log (was Log)
    • __debugbreak (was waitForDebugger)
    • __enableVerboseLogging (was enableVerboseLogging)
    • __disableVerboseLogging (was disableVerboseLogging)
    • __exit (was fail)

0.10.0 (2015, April 17)

New

  • Added Dynamic Generator for binding proxies. This boosts the initial loading time, especially on Android 5.0+ devices.
  • Added several optimization techniques, which further optimize the loading time and the overall performance.
  • Improved the error reporting mechanism for Debug builds.
  • Added support for package.json and index.js for bootstrapping an application.

Breaking Changes

  • Removed the simulated property-like support for Android types. E.g. the android.content.Intent.getAction() previously was accessible like android.content.Intent.Action. This is no longer valid as it contradicts with the Android APIs.
  • Changed the way extend constructs work
// WRONG
var handler = new android.os.Handler.extend({...})();

// CORRECT
var handlerType = android.os.Handler.extend({...});
var handler = new handlerType();
  • The directory structure in the assets folder has changed. The tns_modules directory is now within the assets/app one. To migrate older CLI projects to the new structure simply move the content of the inner app folder one level up:

####Previous structure:

|--app
|--|--app
|--|--|--bootstrap.js
|--|--|--myFile.js
|--|--tns_modules

####New structure:

|--app
|--|--bootstrap.js
|--|--myFile.js
|--|--tns_modules