8.8 (Release 1)

NEW FEATURES

  • The profiling VM now supports collecting classpath information, which enables the Profile Analyzer to select the code source for the analysis.

  • Two new properties were added for helping dealing with shutdown hooks: jamaica.shutdownhook.time_limit and jamaica.shutdownhook.inherit_priority. The first limits the time that the VM waits for the completion of the shutdown hooks before terminating. The second ensures that the shutdown hooks run at least in the System.exit() caller’s priority, increasing their chances to run in an environment with higher priority threads.

NOW SUPPORTED (OR CHANGED)

  • The RTSJ 2.0 javax.realtime.memory package is now supported.

  • The RTSJ 2.0 javax.realtime.posix package is now supported.

  • The RTSJ 2.0 javax.realtime.control package is now supported.

  • The RTSJ 2.0 javax.realtime.enforce classes HeapConstraint, ProcessingConstraint, ThreadConstraint, and ImmortalConstraint, are now available.

  • Jamaica is now shipped with OpenJDK’s root CA certificates based on jdk8u402.

  • Jamaica is now based on standard classes of OpenJDK version jdk8u402.

  • Added new system property "java.specification.maintenance.version" set to "4".

  • The fdlibm library used by Jamaica was updated to OpenJDK version jdk8u402.

  • The FreeType bundled with Jamaica was updated to version 2.13.2.

  • The "java.runtime.name" system property is now set to "JamaicaVM™ Runtime Environment".

  • Except for some finalization tests for scoped memory corner cases, all RTSJ 1.0.x TCK tests for features supported in RTSJ 2.0 pass. Physical memory and feasibility have been removed from RTSJ 2.0 and therefore are not supported. Feasibility was ill defined and physical memory has not found practical application.

NO LONGER SUPPORTED (OR DEPRECATED)

  • The com.aicas.jamaica.lang classes MemoryBudget and AllocationHandler are no longer supported. Instead the new RTSJ 2.0 javax.realtime.enforce class HeapConstraint can be used. It provides a standard interface for this functionality.

BUG FIXES

  • Fixed JAM-9363: com.aicas.jamaica.lang.debug.dumpNativeStack no longer leaks memory.

  • Fixed JAM-9173: the RTSJ ScopeCleaner has been restructured to prevent deadlocks.

  • Fixed JAM-9122, JAM-9240: Error reporting in a scoped memory now works properly.

  • Fixed JAM-8474: Ending a thread allocated in a scope memory now cleans up the scope stacks properly.

  • Fixed JAM-6578: The visibility of potentially dangerous methods in com.aicas.jamaica.realtime.LowLevelRTSJ has been reduced.

  • Fixed JAM-8807: RTSJ assignment checks for ensuring reference integrity were improved.

  • Fixed JAM-9621: The multicore profiling VM no longer hangs when dumping the generated profile.

  • Fixed JAM-9538: Starting a thread with invalid affinity identifier correctly throws IllegalTaskStateException.

  • Fixed JAM-9658: Throwable.addSuppressed no longer throws IllegalArgumentException in a very specific case related to OutOfMemoryError.

  • Fixed JAM-9607: The VM no longer hangs while shutting down a thread pool. The underlying cause, discarding interrupts while waiting for another thread initializing a class, was fixed.

  • Fixed JAM-9638: Unnamed parameters in class files with the MethodParameters attribute will no longer cause the VM to throw an internal error and the Builder to fail.

  • Fixed JAM-9596: A segmentation fault caused by a race condition related to the multicore monitor implementation has been fixed.

  • Fixed JAM-6430, JAM-6418: The resolution of interface methods now complies with the specification in the JVMS.

  • Fixed JAM-9446: A race condition on VM shutdown, related to joining terminated threads, has been fixed.

  • Fixed JAM-9474: The Builder and the JarAccelerator no longer encounter rare errors related to method handles with type REF_newInvokeSpecial.

  • Fixed JAM-9394: The jamaica.conf and jaraccelerator.conf items are now correctly sorted again, with timestamp on the first line.

  • Fixed JAM-9521: RTSJ RealtimeThreadGroup.setMaxEligibilty() now correctly checks compatibility of the provided scheduling eligibility with the max eligibility enforced by ancestor thread groups.

  • Fixed JAM-9246: RTSJ javax.realtime.Timed now works reliably.

  • Fixed JAM-9237: RTSJ memory assignment checks now work with the method MemoryArea.executeInArea().

  • Fixed JAM-9329: Scoped memory can now be used as the initial memory area of an RTSJ AsynchEventHandler.

  • Fixed JAM-9238: Checks on entering scoped memory no longer cause a segmentation fault on ARM with the single core variant of JamaicaVM.

  • Fixed JAM-8890: Finalization for threads in RTSJ scopes was improved.

  • Fixed JAM-8428: java.util.concurrent.Semaphore can be used in RTSJ scoped memory.

  • Fixed JAM-9563: The VM no longer unexpectedly terminates for a multicore configuration when shutting down the VM that ran plenty of threads.

  • Fixed JAM-9491: The VM no longer terminates with an unexpected "java.lang.Error: Cleaner terminated abnormally" exception when using accelerated JAR files.

  • Fixed JAM-9350: The process of reloading an already loaded accelerated module in a new class loader can no longer be interrupted by garbage collection, thus preventing a potential segmentation fault.

  • Fixed JAM-6600: Setting breakpoints or stepping into default methods when debugging using a JVMTI-enabled JamaicaVM is now supported.

  • Fixed JAM-6439: Classes are always loaded in heap memory even from code running in RTSJ scoped memory.

  • Fixed JAM-5826: RTSJ deadline overrun checking works when deadline is the same as period.

  • Fixed JAM-3358: RTSJ Heap.ExecuteInArea() now correctly throws a MemoryAccessError for a heapless context.

  • Fixed JAM-3451: The constructor of RTSJ NoHeapRealTimeThread now correctly throws an exception when a heap value is set in its arguments.

  • Fixed JAM-707: RTSJ scoped memory no longer hangs when reporting assignment errors.