Version 14.15.0 'Fermium' (LTS)
Notable Changes
This release marks the transition of Node.js 14.x into Long Term Support (LTS) with the codename 'Fermium'. The 14.x release line now moves into "Active LTS" and will remain so until October 2021. After that time, it will move into "Maintenance" until end of life in April 2023.
Changelog:
New in release OpenJDK 11.0.9 (2020-10-20):
===========================================
* New features
- JDK-8250784: Shenandoah: A Low-Pause-Time Garbage Collector
* Security fixes
- JDK-8233624: Enhance JNI linkage
- JDK-8236196: Improve string pooling
- JDK-8236862, CVE-2020-14779: Enhance support of Proxy class
- JDK-8237990, CVE-2020-14781: Enhanced LDAP contexts
- JDK-8237995, CVE-2020-14782: Enhance certificate processing
- JDK-8240124: Better VM Interning
- JDK-8241114, CVE-2020-14792: Better range handling
- JDK-8242680, CVE-2020-14796: Improved URI Support
- JDK-8242685, CVE-2020-14797: Better Path Validation
- JDK-8242695, CVE-2020-14798: Enhanced buffer support
- JDK-8243302: Advanced class supports
- JDK-8244136, CVE-2020-14803: Improved Buffer supports
- JDK-8244479: Further constrain certificates
- JDK-8244955: Additional Fix for JDK-8240124
- JDK-8245407: Enhance zoning of times
- JDK-8245412: Better class definitions
- JDK-8245417: Improve certificate chain handling
- JDK-8248574: Improve jpeg processing
- JDK-8249927: Specify limits of jdk.serialProxyInterfaceLimit
- JDK-8253019: Enhanced JPEG decoding
* Other changes
- JDK-6532025: GIF reader throws misleading exception with truncated images
- JDK-6949753: [TEST BUG]: java/awt/print/PageFormat/PDialogTest.java needs update by removing a infinite loop
- JDK-8022535: [TEST BUG] javax/swing/text/html/parser/Test8017492.java fails
- JDK-8062947: Fix exception message to correctly represent LDAP connection failure
- JDK-8067354: com/sun/jdi/GetLocalVariables4Test.sh failed
- JDK-8134599: TEST_BUG: java/rmi/transport/closeServerSocket/CloseServerSocket.java fails intermittently with Address already in use
- JDK-8151678: com/sun/jndi/ldap/LdapTimeoutTest.java failed due to timeout on DeadServerNoTimeoutTest is incorrect
- JDK-8160768: Add capability to custom resolve host/domain names within the default JNDI LDAP provider
- JDK-8172404: Tools should warn if weak algorithms are used before restricting them
- JDK-8193367: Annotated type variable bounds crash javac
- JDK-8202117: com/sun/jndi/ldap/RemoveNamingListenerTest.java fails intermittently: Connection reset
- JDK-8203026: java.rmi.NoSuchObjectException: no such object in table
- JDK-8203281: [Windows] JComboBox change in ui when editor.setBorder() is called
- JDK-8203382: Rename SystemDictionary::initialize_wk_klass to resolve_wk_klass
- JDK-8203393: com/sun/jdi/JdbMethodExitTest.sh and JdbExprTest.sh fail due to timeout
- JDK-8203928: [Test] Convert non-JDB scaffolding serviceability shell script tests to java
- JDK-8204963: javax.swing.border.TitledBorder has a memory leak
- JDK-8204994: SA might fail to attach to process with "Windbg Error: WaitForEvent failed"
- JDK-8205534: Remove SymbolTable dependency from serviceability agent
- JDK-8206309: Tier1 SA tests fail
- JDK-8208281: java/nio/channels/AsynchronousSocketChannel/Basic.java timed out
- JDK-8209109: [TEST] rewrite com/sun/jdi shell tests to java version - step1
- JDK-8209332: [TEST] test/jdk/com/sun/jdi/CatchPatternTest.sh is incorrect
- JDK-8209342: Problemlist SA tests on Solaris due to Error attaching to process: Can't create thread_db agent!
- JDK-8209343: Test javax/swing/border/TestTitledBorderLeak.java should be marked as headful
- JDK-8209517: com/sun/jdi/BreakpointWithFullGC.java fails with timeout
- JDK-8209604: [TEST] rewrite com/sun/jdi shell tests to java version - step2
- JDK-8209605: com/sun/jdi/BreakpointWithFullGC.java fails with ZGC
- JDK-8209608: Problem list com/sun/jdi/BreakpointWithFullGC.java
- JDK-8210131: vmTestbase/nsk/jvmti/scenarios/allocation/AP10/ap10t001/TestDescription.java failed with ObjectFree: GetCurrentThreadCpuTimerInfo returned unexpected error code
- JDK-8210243: [TEST] rewrite com/sun/jdi shell tests to java version - step3
- JDK-8210527: JShell: NullPointerException in jdk.jshell.Eval.translateExceptionStack
- JDK-8210560: [TEST] convert com/sun/jdi redefineClass-related tests
- JDK-8210725: com/sun/jdi/RedefineClearBreakpoint.java fails with waitForPrompt timed out after 60 seconds
- JDK-8210748: [TESTBUG] lib.jdb.Jdb.waitForPrompt() should clarify which output is the pending reply after a timeout
- JDK-8210760: [TEST] rewrite com/sun/jdi shell tests to java version - step4
- JDK-8210977: jdk/jfr/event/oldobject/TestThreadLocalLeak.java fails to find ThreadLocalObject
- JDK-8211292: [TEST] convert com/sun/jdi/DeferredStepTest.sh test
- JDK-8211694: JShell: Redeclared variable should be reset
- JDK-8212200: assert when shared java.lang.Object is redefined by JVMTI agent
- JDK-8212629: [TEST] wrong breakpoint in test/jdk/com/sun/jdi/DeferredStepTest
- JDK-8212665: com/sun/jdi/DeferredStepTest.java: jj1 (line 57) - unexpected. lastLine=52, minLine=52, maxLine=55
- JDK-8212807: tools/jar/multiRelease/Basic.java times out
- JDK-8213182: Minimal VM build failure after JDK-8212200 (assert when shared java.lang.Object is redefined by JVMTI agent)
- JDK-8213214: Set -Djava.io.tmpdir= when running tests
- JDK-8213275: ReplaceCriticalClasses.java fails with jdk.internal.vmn string table expansion when dumping lots of CDS classes
- JDK-8213703: LambdaConversionException: Invalid receiver type not a subtype of implementation type interface
- JDK-8214074: Ghash optimization using AVX instructions
- JDK-8214491: Upgrade sts failing intermitently with \"Problem cleaning up the following threads:\"
- JDK-8215244: jdk/jshell/ToolBasicTest.java testHistoryReference failed
- JDK-8215354: x86_32 build failures after JDK-8214074 (Ghash optimization using AVX instructions)
l to 1 on Windows
- JDK-8216974: HttpConnection not returned to the pool after 204 response
- JDK-8218948: SimpleDateFormat :: format - Zone Names are not reflected correctly during run time
- JDK-8219712: code_size2 (defined in stub_routines_x86.hpCPUs
- JDK-8220150: macos10.14 Mojave returns anti-aliased glyphs instead of aliased B&W glyphs
- JDK-8221658: aarch64: add necessary predicate for ubfx patterns
- JDK-8221759: Crash when completing \"java.io.File.path\"
- JDK-8221918: runtime/SharedArchiveFile/serviceability/ReplaceCriticalClasses.java fails: Shared archive not found
- JDK-8222074: Enhance auto vectorization for x86
- JDK-8222079: Don't use memset to initialize fields decode_env constructor in disassembler.cpp
- JDK-8222769: [TESTBUG] TestJFRNetworkEvents should not rely on hostname command
- JDK-8223688: JShell: crash on the instantiation of raw anonymous class
- JDK-8223777: In posix_spawn mode, failing to exec() jspawnhelper does not result in an error
- JDK-8223940: Private key not supported by chosen signature algorithm
- JDK-8224184: jshell got IOException at exiting with AIX
- JDK-8224234: compiler/codegen/TestCharVect2.java fails in test_mulc
- JDK-8225037: java.net.JarURLConnection::getJarEntry() throws NullPointerException
- JDK-8225625: AES Electronic Codebook (ECB) encryption and decryption optimization using AVX512 + VAES instructions
- JDK-8226536: Catch OOM from deopt that fails rematerializing objects
- JDK-8226575: OperatingSystemMXBean should be made container aware
- JDK-8226697: Several tests which need the @key headful keyword are missing it.
- JDK-8226809: Circular reference in printed stack trace is not correctly indented & ambiguous
- JDK-8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
- JDK-8227269: Slow class loading when running with JDWP
- JDK-8227595: keytool/fakegen/DefaultSignatureAlgorithm.java fails due to "exitValue = 6"
- JDK-8228448: Jconsole can't connect to itself
- JDK-8228967: Trust/Key store and SSL context utilities for tests
- JDK-8229378: jdwp library loader in linker_md.c quietly truncates on buffer overflow
- JDK-8229815: Upgrade Jline to 3.12.1
- JDK-8230000: some httpclients testng tests run zero test
- JDK-8230002: javax/xml/jaxp/unittest/transform/SecureProcessingTest.java runs zero test
- JDK-8230010: Remove jdk8037819/BasicTest1.java
- JDK-8230094: CCE in createXMLEventWriter(Result) over an arbitrary XMLStreamWriter
- JDK-8230402: Allocation of compile task fails with assert: "Leaking compilation tasks?"
- JDK-8230767: FlightRecorderListener returns null recording
- JDK-8230870: (zipfs) Add a ZIP FS test that is similar to test/jdk/java/util/zip/EntryCount64k.java
- JDK-8231209: [REDO] ThreadMXBean::getThreadAllocatedBytes() can be quicker for self thread
- JDK-8231586: enlarge encoding space for OopMapValue offsets
- JDK-8231953: Wrong assumption in assertion in oop::register_oop
- JDK-8231968: getCurrentThreadAllocatedBytes default implementation s/b getThreadAllocatedBytes
- JDK-8232083: Minimal VM is broken after JDK-8231586
- JDK-8232161: Align some one-way conversion in MS950 charset with Windows
- JDK-8232855: jshell missing word in /help help
- JDK-8233027: OopMapSet::all_do does oms.next() twice during iteration
- JDK-8233228: Disable weak named curves by default in TLS, CertPath, and Signed JAR
- JDK-8233386: Initialize NULL fields for unused decorations
- JDK-8233452: java.math.BigDecimal.sqrt() with RoundingMode.FLOOR results in incorrect result
- JDK-8233686: XML transformer uses excessive amount of memory
- JDK-8233741: AES Countermode (AES-CTR) optimization using AVX512 + VAES instructions
- JDK-8233829: javac cannot find non-ASCII module name under non-UTF8 environment
- JDK-8233958: Memory retention due to HttpsURLConnection finalizer that serves no purpose
- JDK-8234011: (zipfs) Memory leak in ZipFileSystem.releaseDeflater()
- JDK-8234058: runtime/CompressedOops/CompressedClassPointers.java fails with 'Narrow klass base: 0x0000000000000000' missing from stdout/stderr
- JDK-8234149: Several regression tests do not dispose Frame at end
- JDK-8234347: "Turkey" meta time zone does not generate composed localized names
- JDK-8234385: [TESTBUG] java/awt/EventQueue/6980209/bug6980209.java fails in linux nightly
- JDK-8234535: Cross compilation fails due to missing CFLAGS for the BUILD_CC
- JDK-8234541: C1 emits an empty message when it inlines successfully
- JDK-8234687: change javap reporting on unknown attributes
- JDK-8236464: SO_LINGER option is ignored by SSLSocket in JDK 11
- JDK-8236548: Localized time zone name inconsistency between English and other locales
- JDK-8236617: jtreg test containers/docker/TestMemoryAwareness.java fails after 8226575
- JDK-8237182: Update copyright header for shenandoah and epsilon files
- JDK-8237888: security/infra/java/security/cert/CertPathValidator/certification/LuxTrustCA.java fails when checking validity interval
- JDK-8237977: Further update javax/net/ssl/compatibility/Compatibility.java
- JDK-8238270: java.net HTTP/2 client does not decrease stream count when receives 204 response
- JDK-8238284: [macos] Zero VM build fails due to an obvious typo
- JDK-8238380: java.base/unix/native/libjava/childproc.c "multiple definition" link errors with GCC10
- JDK-8238386: (sctp) jdk.sctp/unix/native/libsctp/SctpNet.c "multiple definition" link errors with GCC10
- JDK-8238388: libj2gss/NativeFunc.o "multiple definition" link errors with GCC10
- JDK-8238448: RSASSA-PSS signature verification fail when using certain odd key sizes
- JDK-8238710: LingeredApp doesn't log stdout/stderr if exits with non-zero code
- JDK-8239083: C1 assert(known_holder == NULL || (known_holder->is_instance_klass() && (!known_holder->is_interface() || ((ciInstanceKlass*)known_holder)->has_nonstatic_concrete_methods())), "should be non-static concrete method");
- JDK-8239385: KerberosTicket client name refers wrongly to sAMAccountName in AD
- JDK-8240169: javadoc fails to link to non-modular api docs
- JDK-8240295: hs_err elapsed time in seconds is not accurate enough
- JDK-8240360: NativeLibraryEvent has wrong library name on Linux
- JDK-8240676: Meet not symmetric failure when running lucene on jdk8
- JDK-8241007: Shenandoah: remove ShenandoahCriticalControlThreadPriority support
- JDK-8241065: Shenandoah: remove leftover code after JDK-8231086
- JDK-8241086: Test runtime/NMT/HugeArenaTracking.java is failing on 32bit Windows
- JDK-8241130: com.sun.jndi.ldap.EventSupport.removeDeadNotifier: java.lang.NullPointerException
- JDK-8241138: http.nonProxyHosts=* causes StringIndexOutOfBoundsException in DefaultProxySelector
- JDK-8241319: WB_GetCodeBlob doesn't have ResourceMark
- JDK-8241478: vmTestbase/gc/gctests/Steal/steal001/steal001.java fails with OOME
- JDK-8241574: Shenandoah: remove ShenandoahAssertToSpaceClosure
- JDK-8241750: x86_32 build failure after JDK-8227269
- JDK-8242184: CRL generation error with RSASSA-PSS
- JDK-8242283: Can't start JVM when java home path includes non-ASCII character
- JDK-8242556: Cannot load RSASSA-PSS public key with non-null params from byte array
- JDK-8243029: Rewrite javax/net/ssl/compatibility/Compatibility.java with a flexible interop test framework
- JDK-8243138: Enhance BaseLdapServer to support starttls extended request
- JDK-8243320: Add SSL root certificates to Oracle Root CA program
- JDK-8243321: Add Entrust root CA - G4 to Oracle Root CA program
- JDK-8243389: enhance os::pd_print_cpu_info on linux
- JDK-8243453: java --describe-module failed with non-ASCII module name under non-UTF8 environment
- JDK-8243470: [macos] bring back O2 opt level for unsafe.cpp
- JDK-8243489: Thread CPU Load event may contain wrong data for CPU time under certain conditions
- JDK-8243925: Toolkit#getScreenInsets() returns wrong value on HiDPI screens (Windows)
- JDK-8244087: 2020-04-24 public suffix list update
- JDK-8244151: Update MUSCLE PC/SC-Lite headers to the latest release 1.8.26
- JDK-8244164: AArch64: jaotc generates incorrect code for compressed OOPs with non-zero heap base
- JDK-8244196: adjust output in os_linux
- JDK-8244225: stringop-overflow warning on strncpy call from compile_the_world_in
- JDK-8244287: JFR: Methods samples have line number 0
- JDK-8244703: "platform encoding not initialized" exceptions with debugger, JNI
- JDK-8244719: CTW: C2 compilation fails with "assert(!VerifyHashTableKeys || _hash_lock == 0) failed: remove node from hash table before modifying it"
- JDK-8244729: Shenandoah: remove resolve paths from SBSA::generate_shenandoah_lrb
- JDK-8244763: Update --release 8 symbol information after JSR 337 MR3
- JDK-8244818: Java2D Queue Flusher crash while moving application window to external monitor
- JDK-8245151: jarsigner should not raise duplicate warnings on verification
- JDK-8245616: Bump update version for OpenJDK: jdk-11.0.9
- JDK-8245714: "Bad graph detected in build_loop_late" when loads are pinned on loop limit check uncommon branch
- JDK-8245801: StressRecompilation triggers assert "redundunt OSR recompilation detected. memory leak in CodeCache!"
- JDK-8245832: JDK build make-static-libs should build all JDK libraries
- JDK-8245880: Shenandoah: check class unloading flag early in concurrent code root scan
- JDK-8245981: Upgrade to jQuery 3.5.1
- JDK-8246027: Minimal fastdebug build broken after JDK-8245801
- JDK-8246094: [macos] Sound Recording and playback is not working
- JDK-8246153: TestEliminateArrayCopy fails with -XX:+StressReflectiveCode
- JDK-8246193: Possible NPE in ENC-PA-REP search in AS-REQ
- JDK-8246196: javax/management/MBeanServer/OldMBeanServerTest fails with AssertionError
- JDK-8246203: Segmentation fault in verification due to stack overflow with -XX:+VerifyIterativeGVN
- JDK-8246330: Add TLS Tests for Legacy ECDSA curves
- JDK-8246453: TestClone crashes with "all collected exceptions must come from the same place"
- JDK-8247246: Add explicit ResolvedJavaType.link and expose presence of default methods
- JDK-8247350: [aarch64] assert(false) failed: wrong size of mach node
- JDK-8247502: PhaseStringOpts crashes while optimising effectively dead code
- JDK-8247615: Initialize the bytes left for the heap sampler
- JDK-8247824: CTW: C2 (Shenandoah) compilation fails with SEGV in SBC2Support::pin_and_expand
- JDK-8247874: Replacement in VersionProps.java.template not working when --with-vendor-bug-url contains '&'
- JDK-8247979: aarch64: missing side effect of killing flags for clearArray_reg_reg
- JDK-8248214: Add paddings for TaskQueueSuper to reduce false-sharing cache contention
- JDK-8248219: aarch64: missing memory barrier in fast_storefield and fast_accessfield
- JDK-8248348: Regression caused by the update to BCEL 6.0
- JDK-8248385: [testbug][11u] Adapt TestInitiExceptions to jtreg 5.1
- JDK-8248495: [macos] zerovm is broken due to libffi headers location
- JDK-8248851: CMS: Missing memory fences between free chunk check and klass read
- JDK-8248987: AOT's Linker.java seems to eagerly fail-fast on Windows
- JDK-8249159: Downport test rework for SSLSocketTemplate from 8224650
- JDK-8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 on Japanese Windows.
- JDK-8249251: [dark_mode ubuntu 20.04] The selected menu is not highlighted in GTKLookAndFeel
- JDK-8249255: Build fails if source code in cygwin home dir
- JDK-8249277: TestVerifyIterativeGVN.java is failing with timeout in OpenJDK 11
- JDK-8249278: Revert JDK-8226253 which breaks the spec of AccessibleState.SHOWING for JList
- JDK-8249560: Shenandoah: Fix racy GC request handling
- JDK-8249801: Shenandoah: Clear soft-refs on requested GC cycle
- JDK-8249953: Shenandoah: gc/shenandoah/mxbeans tests should account for corner cases
- JDK-8250582: Revert Principal Name type to NT-UNKNOWN when requesting TGS Kerberos tickets
- JDK-8250609: C2 crash in IfNode::fold_compares
- JDK-8250627: Use -XX:+/-UseContainerSupport for enabling/disabling Java container metrics
- JDK-8250755: Better cleanup for jdk/test/javax/imageio/plugins/shared/CanWriteSequence.java
- JDK-8250787: Provider.put no longer registering aliases in FIPS env
- JDK-8250826: jhsdb does not work with coredump which comes from Substrate VM
- JDK-8250827: Shenandoah: needs to reset/finish StringTable's dead count before/after parallel walk
- JDK-8250844: Make sure {type,obj}ArrayOopDesc accessors check the bounds
- JDK-8251117: Cannot check P11Key size in P11Cipher and P11AEADCipher
- JDK-8251354: Shenandoah: Fix jdk/jfr/tool/TestPrintJSON.java test failure
- JDK-8251451: Shenandoah: Remark ObjectSynchronizer roots with I-U
- JDK-8251469: Better cleanup for test/jdk/javax/imageio/SetOutput.java
- JDK-8251487: Shenandoah: missing detail timing tracking for final mark cleaning phase
- JDK-8252120: compiler/oracle/TestCompileCommand.java misspells "occured"
- JDK-8252157: JDK-8231209 11u backport breaks jmm binary compatibility
- JDK-8252258: [11u] JDK-8242154 changes the default vendor
- JDK-8252804: [test] Fix 'ReleaseDeflater.java' test after downport of 8234011
- JDK-8253134: JMM_VERSION should remain at 0x20020000 (JDK 10) in JDK 11
- JDK-8253283: [11u] Test build/translations/VerifyTranslations.java failing after JDK-8252258
- JDK-8253813: Backout JDK-8244287 from 11u: it causes several crashes
Changelog extracted from https://nim-lang.org/blog/2020/10/16/version-140-released.html
Standard library additions and changes
Added some enhancements to std/jsonutils module.
Added a possibility to deserialize JSON arrays directly to
HashSet and OrderedSet types and respectively to serialize
those types to JSON arrays via jsonutils.fromJson and
jsonutils.toJson procedures.
Added a possibility to deserialize JSON null objects to Nim
option objects and respectively to serialize Nim option object
to JSON object if isSome or to JSON null object if isNone via
jsonutils.fromJson and jsonutils.toJson procedures.
Added a Joptions parameter to jsonutils.fromJson currently
containing two boolean options allowExtraKeys and
allowMissingKeys.
If allowExtraKeys is true Nim’s object to which the JSON
is parsed is not required to have a field for every JSON
key.
If allowMissingKeys is true Nim’s object to which JSON is
parsed is allowed to have fields without corresponding
JSON keys.
Added bindParams, bindParam to db_sqlite for binding parameters
into a SqlPrepared statement.
Added tryInsert,insert procs to db_* libs which accept primary key
column name.
Added xmltree.newVerbatimText support create style’s,script’s
text.
uri module now implements RFC-2397.
Added DOM Parser to the dom module for the JavaScript target.
The default hash for Ordinal has changed to something more
bit-scrambling. import hashes; proc hash(x: myInt): Hash =
hashIdentity(x) recovers the old one in an instantiation context
while -d:nimIntHash1 recovers it globally.
deques.peekFirst and deques.peekLast now have var Deque[T] -> var T
overloads.
File handles created from high-level abstractions in the stdlib
will no longer be inherited by child processes. In particular,
these modules are affected: asyncdispatch, asyncnet, system,
nativesockets, net and selectors.
For asyncdispatch, asyncnet, net and nativesockets, an inheritable
flag has been added to all procs that create sockets, allowing the
user to control whether the resulting socket is inheritable. This
flag is provided to ease the writing of multi-process servers,
where sockets inheritance is desired.
For a transition period, define nimInheritHandles to enable file
handle inheritance by default. This flag does not affect the
selectors module due to the differing semantics between operating
systems.
asyncdispatch.setInheritable, system.setInheritable and nativesockets.setInheritable are also introduced for setting file handle or socket inheritance. Not all platforms have these procs defined.
The file descriptors created for internal bookkeeping by
ioselector_kqueue and ioselector_epoll will no longer be leaked to
child processes.
strutils.formatFloat with precision = 0 has been restored to the
version 1 behaviour that produces a trailing dot,
e.g. formatFloat(3.14159, precision = 0) is now 3., not 3.
Added commonPrefixLen to critbits.
relativePath(rel, abs) and relativePath(abs, rel) used to silently
give wrong results (see #13222); instead they now use
getCurrentDir to resolve those cases, and this can now throw in
edge cases where getCurrentDir throws. relativePath also now works
for js with -d:nodejs.
JavaScript and NimScript standard library changes:
streams.StringStream is now supported in JavaScript, with the
limitation that any buffer pointers used must be castable to ptr
string, any incompatible pointer type will not work. The lexbase
and streams modules used to fail to compile on NimScript due to a
bug, but this has been fixed.
The following modules now compile on both JS and NimScript:
parsecsv, parsecfg, parsesql, xmlparser, htmlparser and
ropes. Additionally supported for JS is cstrutils.startsWith and
cstrutils.endsWith, for NimScript: json, parsejson, strtabs and
unidecode.
Added streams.readStr and streams.peekStr overloads to accept an
existing string to modify, which avoids memory allocations,
similar to streams.readLine (#13857).
Added high-level asyncnet.sendTo and asyncnet.recvFrom UDP functionality.
dollars.$ now works for unsigned ints with nim js.
Improvements to the bitops module, including bitslices,
non-mutating versions of the original masking functions,
mask/masked, and varargs support for bitand, bitor, and bitxor.
sugar.=> and sugar.-> changes: Previously (x, y: int) was
transformed into (x: auto, y: int), it now becomes (x: int, y:
int) for consistency with regular proc definitions (although you
cannot use semicolons).
Pragmas and using a name are now allowed on the lefthand side of =>.
Here is an example of these changes:
import sugar
foo(x, y: int) {.noSideEffect.} => x + y
# is transformed into
proc foo(x: int, y: int): auto {.noSideEffect.} = x + y
The fields of times.DateTime are now private, and are accessed
with getters and deprecated setters.
The times module now handles the default value for DateTime more
consistently. Most procs raise an assertion error when given an
uninitialized DateTime, the exceptions are == and $ (which returns
"Uninitialized DateTime"). The proc times.isInitialized has been
added which can be used to check if a DateTime has been
initialized.
Fix a bug where calling close on io streams in osproc.startProcess was a noop and led to hangs if a process had both reads from stdin and writes (e.g. to stdout).
The callback that is passed to system.onThreadDestruction must now be .raises: [].
The callback that is assigned to system.onUnhandledException must now be .gcsafe.
osproc.execCmdEx now takes an optional input for stdin, workingDir and env parameters.
Added a ssl_config module containing lists of secure ciphers as recommended by Mozilla OpSec
net.newContext now defaults to the list of ciphers targeting “Intermediate compatibility” per Mozilla’s recommendation instead of ALL. This change should protect users from the use of weak and insecure ciphers while still provides adequate compatibility with the majority of the Internet.
A new module std/jsonutils with hookable jsonTo,toJson,fromJson operations for json serialization/deserialization of custom types was added.
A new proc heapqueue.find[T](heap: HeapQueue[T], x: T): int to get index of element x was added.
Added rstgen.rstToLatex a convenience proc for renderRstToOut and initRstGenerator.
Added os.normalizeExe.
macros.newLit now preserves named vs unnamed tuples.
Added random.gauss, that uses the ratio of uniforms method of sampling from a Gaussian distribution.
Added typetraits.elementType to get the element type of an iterable.
typetraits.$ changes: $(int,) is now "(int,)" instead of "(int)"; $tuple[] is now "tuple[]" instead of "tuple"; $((int, float), int) is now "((int, float), int)" instead of "(tuple of (int, float), int)"
Added macros.extractDocCommentsAndRunnables helper.
strformat.fmt and strformat.& support specifier =. fmt"{expr=}" now expands to fmt"expr={expr}".
Deprecations: instead of os.existsDir use dirExists, instead of os.existsFile use fileExists.
Added the jsre module, Regular Expressions for the JavaScript target..
Made maxLines argument Positive in logging.newRollingFileLogger, because negative values will result in a new file being created for each logged line which doesn’t make sense.
Changed log in logging to use proper log level for JavaScript, e.g. debug uses console.debug, info uses console.info, warn uses console.warn, etc.
Tables, HashSets, SharedTables and deques don’t require anymore that the passed initial size must be a power of two - this is done internally. Proc rightSize for Tables and HashSets is deprecated, as it is not needed anymore. CountTable.inc takes val: int again not val: Positive; i.e. it can “count down” again.
Removed deprecated symbols from macros module, some of which were deprecated already in 0.15.
Removed sugar.distinctBase, deprecated since 0.19. Use typetraits.distinctBase.
asyncdispatch.PDispatcher.handles is exported so that an external low-level libraries can access it.
std/with, sugar.dup now support object field assignment expressions:
import std/with
type Foo = object
x, y: int
var foo = Foo()
with foo:
x = 10
y = 20
echo foo
Proc math.round is no longer deprecated. The advice to use strformat instead cannot be applied to every use case. The limitations and the (lack of) reliability of round are well documented.
Added getprotobyname to winlean. Added getProtoByname to nativesockets which returns a protocol code from the database that matches the protocol name.
Added missing attributes and methods to dom.Navigator like deviceMemory, onLine, vibrate(), etc.
Added strutils.indentation and strutils.dedent which enable indented string literals:
import strutils
echo dedent """
This
is
cool!
"""
Added initUri(isIpv6: bool) to uri module, now uri supports parsing ipv6 hostname.
Added readLines(p: Process) to osproc.
Added the below toX procs for collections. The usage is similar to procs such as sets.toHashSet and tables.toTable. Previously, it was necessary to create the respective empty collection and add items manually.
critbits.toCritBitTree, which creates a CritBitTree from an openArray of items or an openArray of pairs.
deques.toDeque, which creates a Deque from an openArray.
heapqueue.toHeapQueue, which creates a HeapQueue from an openArray.
intsets.toIntSet, which creates an IntSet from an openArray.
Added progressInterval argument to asyncftpclient.newAsyncFtpClient to control the interval at which progress callbacks are called.
Added os.copyFileToDir.
Language changes
The =destroy hook no longer has to reset its target, as the compiler now automatically inserts wasMoved calls where needed.
The = hook is now called =copy for clarity. The old name = is still available so there is no need to update your code. This change was backported to 1.2 too so you can use the more readable =copy without loss of compatibility.
In the newruntime it is now allowed to assign to the discriminator field without restrictions as long as the case object doesn’t have a custom destructor. The discriminator value doesn’t have to be a constant either. If you have a custom destructor for a case object and you do want to freely assign discriminator fields, it is recommended to refactor the object into 2 objects like this:
type
MyObj = object
case kind: bool
of true: y: ptr UncheckedArray[float]
of false: z: seq[int]
proc `=destroy`(x: MyObj) =
if x.kind and x.y != nil:
deallocShared(x.y)
Refactor into:
type
MySubObj = object
val: ptr UncheckedArray[float]
MyObj = object
case kind: bool
of true: y: MySubObj
of false: z: seq[int]
proc `=destroy`(x: MySubObj) =
if x.val != nil:
deallocShared(x.val)
getImpl on enum type symbols now returns field syms instead of idents. This helps with writing typed macros. The old behavior for backwards compatibility can be restored with --useVersion:1.0.
The typed AST for proc headers will now have the arguments be syms instead of idents. This helps with writing typed macros. The old behaviour for backwards compatibility can be restored with --useVersion:1.0.
let statements can now be used without a value if declared with importc/importcpp/importjs/importobjc.
The keyword from is now usable as an operator.
Exceptions inheriting from system.Defect are no longer tracked with the .raises: [] exception tracking mechanism. This is more consistent with the built-in operations. The following always used to compile (and still does):
proc mydiv(a, b): int {.raises: [].} =
a div b # can raise an DivByZeroDefect
Now also this compiles:
proc mydiv(a, b): int {.raises: [].} =
if b == 0: raise newException(DivByZeroDefect, "division by zero")
else: result = a div b
The reason for this is that DivByZeroDefect inherits from Defect and with --panics:on Defects become unrecoverable errors.
Added the thiscall calling convention as specified by Microsoft, mostly for hooking purposes.
Deprecated the {.unroll.} pragma, because it was always ignored by the compiler anyway.
Removed the deprecated strutils.isNilOrWhitespace.
Removed the deprecated sharedtables.initSharedTable.
Removed the deprecated asyncdispatch.newAsyncNativeSocket.
Removed the deprecated dom.releaseEvents and dom.captureEvents.
Removed sharedlists.initSharedList, was deprecated and produces undefined behaviour.
There is a new experimental feature called “strictFuncs” which makes the definition of .noSideEffect stricter. See here for more information.
“for-loop macros” (see the manual) are no longer an experimental feature. In other words, you don’t have to write pragma {.experimental: "forLoopMacros".} if you want to use them.
Added the .noalias pragma. It is mapped to C’s restrict keyword for the increased performance this keyword can enable.
items no longer compiles with enums with holes as its behavior was error prone, see #14004.
system.deepcopy has to be enabled explicitly for --gc:arc and --gc:orc via --deepcopy:on.
Added the std/effecttraits module for introspection of the inferred effects. We hope this enables async macros that are precise about the possible exceptions that can be raised.
The pragma blocks {.gcsafe.}: ... and {.noSideEffect.}: ... can now also be written as {.cast(gcsafe).}: ... and {.cast(noSideEffect).}: .... This is the new preferred way of writing these, emphasizing their unsafe nature.
Compiler changes
Specific warnings can now be turned into errors via --warningAsError[X]:on|off.
The define and undef pragmas have been de-deprecated.
New command: nim r main.nim [args...] which compiles and runs main.nim, and implies --usenimcache so that the output is saved to $nimcache/main$exeExt, using the same logic as nim c -r to avoid recompilations when sources don’t change. Example:
nim r compiler/nim.nim --help # only compiled the first time
echo 'import os; echo getCurrentCompilerExe()' | nim r - # this works too
nim r compiler/nim.nim --fullhelp # no recompilation
nim r --nimcache:/tmp main # binary saved to /tmp/main
--hint:processing is now supported and means --hint:processing:on (likewise with other hints and warnings), which is consistent with all other bool flags. (since 1.3.3).
nim doc -r main and nim rst2html -r main now call openDefaultBrowser.
Added the new hint --hint:msgOrigin will show where a compiler msg (hint|warning|error) was generated; this helps in particular when it’s non obvious where it came from either because multiple locations generate the same message, or because the message involves runtime formatting.
Added the new flag --backend:js|c|cpp|objc (or -b:js etc), to change the backend; can be used with any command (e.g. nim r, doc, check etc); safe to re-assign.
Added the new flag --doccmd:cmd to pass additional flags for runnableExamples, e.g.: --doccmd:-d:foo --threads use --doccmd:skip to skip runnableExamples and rst test snippets.
Added the new flag --usenimcache to output binary files to nimcache.
runnableExamples "-b:cpp -r:off": code is now supported, allowing to override how an example is compiled and run, for example to change the backend.
nim doc now outputs under $projectPath/htmldocs when --outdir is unspecified (with or without --project); passing --project now automatically generates an index and enables search. See docgen for details.
Removed the --oldNewlines switch.
Removed the --laxStrings switch for mutating the internal zero terminator on strings.
Removed the --oldast switch.
Removed the --oldgensym switch.
$getType(untyped) is now “untyped” instead of “expr”, $getType(typed) is now “typed” instead of “stmt”.
Sink inference is now disabled per default and has to enabled explicitly via --sinkInference:on. Note: For the standard library sink inference remains enabled. This change is most relevant for the --gc:arc, --gc:orc memory management modes.
Tool changes
nimsuggest now returns both the forward declaration and the implementation location upon a def query. Previously the behavior was to return the forward declaration only.
Bugfixes
Fixed “repr() not available for uint{,8,16,32,64} under –gc:arc” (#13872)
Fixed “Critical: 1 completed Future, multiple await: Only 1 await will be awakened (the last one)” (#13889)
Fixed “crash on openarray interator with argument in stmtListExpr” (#13739)
Fixed “Some compilers on Windows don’t work” (#13910)
Fixed “httpclient hangs if it recieves an HTTP 204 (No Content)” (#13894)
Fixed ““distinct uint64” type corruption on 32-bit, when using {.borrow.} operators” (#13902)
Fixed “Regression: impossible to use typed pragmas with proc types” (#13909)
Fixed “openssl wrapper corrupts stack on OpenSSL 1.1.1f + Android” (#13903)
Fixed “C compile error with –gc:arc on version 1.2.0 “unknown type name ‘TGenericSeq’” (#13863)
Fixed “var return type for proc doesn’t work at c++ backend” (#13848)
Fixed “TimeFormat() should raise an error but craches at compilation time” (#12864)
Fixed “gc:arc cannot fully support threadpool with FlowVar” (#13781)
Fixed “simple ‘var openarray[char]’ assignment crash when the openarray source is a local string and using gc:arc” (#14003)
Fixed “Cant use expressions with when in type sections.” (#14007)
Fixed “for a in MyEnum gives incorrect results with enum with holes” (#14001)
Fixed “Trivial crash” (#12741)
Fixed “Enum with holes cannot be used as Table index” (#12834)
Fixed “spawn proc that uses typedesc crashes the compiler” (#14014)
Fixed “Docs Search Results box styling is not Dark Mode Friendly” (#13972)
Fixed “–gc:arc -d:useSysAssert undeclared identifier cstderr with newSeq” (#14038)
Fixed “issues in the manual” (#12486)
Fixed “Annoying warning: inherit from a more precise exception type like ValueError, IOError or OSError [InheritFromException]” (#14052)
Fixed “relativePath(“foo”, “/”) and relativePath(“/”, “foo”) is wrong” (#13222)
Fixed “[regression] parseEnum does not work anymore for enums with holes” (#14030)
Fixed “Exception types in the stdlib should inherit from CatchableError or Defect, not Exception” (#10288)
Fixed “Make debugSend and debugRecv procs public in smtp.nim” (#12189)
Fixed “xmltree need add raw text, when add style element” (#14064)
Fixed “raises requirement does not propagate to derived methods” (#8481)
Fixed “tests/stdlib/tgetaddrinfo.nim fails on NetBSD” (#14091)
Fixed “tests/niminaction/Chapter8/sdl/sdl_test.nim fails on NetBSD” (#14088)
Fixed “Incorrect escape sequence for example in jsffi library documentation” (#14110)
Fixed “HCR: Can not link exported const, in external library” (#13915)
Fixed “Cannot import std/unidecode” (#14112)
Fixed “macOS: dsymutil should not be called on static libraries” (#14132)
Fixed “nim jsondoc -o:doc.json filename.nim fails when sequences without a type are used” (#14066)
Fixed “algorithm.sortedByIt template corrupts tuple input under –gc:arc” (#14079)
Fixed “Invalid C code with lvalue conversion” (#14160)
Fixed “strformat: doc example fails” (#14054)
Fixed “Nim doc fail to run for nim 1.2.0 (nim 1.0.4 is ok)” (#13986)
Fixed “Exception when converting csize to clong” (#13698)
Fixed “[Documentation] overloading using named arguments works but is not documented” (#11932)
Fixed “import os + use of existsDir/dirExists/existsFile/fileExists/findExe in config.nims causes “ambiguous call’ error” (#14142)
Fixed “import os + use of existsDir/dirExists/existsFile/fileExists/findExe in config.nims causes “ambiguous call’ error” (#14142)
Fixed “runnableExamples doc gen crashes compiler with except Exception as e syntax” (#14177)
Fixed “[ARC] Segfault with cyclic references (?)” (#14159)
Fixed “Semcheck regression when accessing a static parameter in proc” (#14136)
Fixed “iterator walkDir doesn’t work with -d:useWinAnsi” (#14201)
Fixed “cas is wrong for tcc” (#14151)
Fixed “proc execCmdEx doesn’t work with -d:useWinAnsi” (#14203)
Fixed “Use -d:nimEmulateOverflowChecks by default?” (#14209)
Fixed “Old sequences with destructor objects bug” (#14217)
Fixed “[ARC] ICE when changing the discriminant of a return value” (#14244)
Fixed “[ARC] ICE with static objects” (#14236)
Fixed “[ARC] “internal error: environment misses: a” in a finalizer” (#14243)
Fixed “[ARC] compile failure using repr with object containing ref seq[string]” (#14270)
Fixed “[ARC] implicit move on last use happening on non-last use” (#14269)
Fixed “[ARC] Compiler crash with a recursive non-ref object variant” (#14294)
Fixed “htmlparser.parseHtml behaves differently using –gc:arc or –gc:orc” (#13946)
Fixed “Invalid return value of openProcess is NULL rather than INVALID_HANDLE_VALUE(-1) in windows” (#14289)
Fixed “ARC codegen bug with inline iterators” (#14219)
Fixed “Building koch on OpenBSD fails unless the Nim directory is in $PATH” (#13758)
Fixed “[gc:arc] case object assignment SIGSEGV: destroy not called for primitive type “ (#14312)
Fixed “Crash when using thread and –gc:arc “ (#13881)
Fixed “Getting “Warning: Cannot prove that ‘result’ is initialized” for an importcpp’d proc with var T return type” (#14314)
Fixed “nim cpp -r --gc:arc segfaults on caught AssertionError” (#13071)
Fixed “tests/async/tasyncawait.nim is recently very flaky” (#14320)
Fixed “Documentation nonexistent quitprocs module” (#14331)
Fixed “SIGSEV encountered when creating threads in a loop w/ –gc:arc” (#13935)
Fixed “nim-gdb is missing from all released packages” (#13104)
Fixed “sysAssert error with gc:arc on 3 line program” (#13862)
Fixed “compiler error with inline async proc and pragma” (#13998)
Fixed “[ARC] Compiler crash when adding to a seq[ref Object]” (#14333)
Fixed “nimvm: sysFatal: unhandled exception: ‘sons’ is not accessible using discriminant ‘kind’ of type ‘TNode’ [FieldError]” (#14340)
Fixed “[Regression] karax events are not firing “ (#14350)
Fixed “odbcsql module has some wrong integer types” (#9771)
Fixed “db_sqlite needs sqlPrepared” (#13559)
Fixed “[Regression] createThread is not GC-safe” (#14370)
Fixed “Broken example on hot code reloading” (#14380)
Fixed “runnableExamples block with except on specified error fails with nim doc” (#12746)
Fixed “compiler as a library: findNimStdLibCompileTime fails to find system.nim” (#12293)
Fixed “5 bugs with importcpp exceptions” (#14369)
Fixed “Docs shouldn’t collapse pragmas inside runnableExamples/code blocks” (#14174)
Fixed “Bad codegen/emit for hashes.hiXorLo in some contexts.” (#14394)
Fixed “Boehm GC does not scan thread-local storage” (#14364)
Fixed “RVO not exception safe” (#14126)
Fixed “runnableExamples that are only compiled” (#10731)
Fixed “foldr raises IndexError when called on sequence” (#14404)
Fixed “moveFile does not overwrite destination file” (#14057)
Fixed “doc2 outputs in current work dir” (#6583)
Fixed “[docgen] proc doc comments silently omitted after 1st runnableExamples” (#9227)
Fixed “nim doc --project shows ‘@@/’ instead of ‘../’ for relative paths to submodules” (#14448)
Fixed “re, nre have wrong start semantics” (#14284)
Fixed “runnableExamples should preserve source code doc comments, strings, and (maybe) formatting” (#8871)
Fixed “nim doc .. fails when runnableExamples uses $ [devel] [regression]” (#14485)
Fixed “items is 20%~30% slower than iteration via an index” (#14421)
Fixed “ARC: unreliable setLen “ (#14495)
Fixed “lent is unsafe: after #14447 you can modify variables with “items” loop for sequences” (#14498)
Fixed “var op = fn() wrongly gives warning ObservableStores with object of RootObj type” (#14514)
Fixed “Compiler assertion” (#14562)
Fixed “Can’t get ord of a value of a Range type in the JS backend “ (#14570)
Fixed “js: can’t take addr of param (including implicitly via lent)” (#14576)
Fixed “{.noinit.} ignored in for loop -> bad codegen for non-movable types” (#14118)
Fixed “generic destructor gives: Error: unresolved generic parameter” (#14315)
Fixed “Memory leak with arc gc” (#14568)
Fixed “escape analysis broken with lent” (#14557)
Fixed “wrapWords seems to ignore linebreaks when wrapping, leaving breaks in the wrong place” (#14579)
Fixed “lent gives wrong results with -d:release” (#14578)
Fixed “Nested await expressions regression: await a(await expandValue()) doesnt compile” (#14279)
Fixed “windows CI docs fails with strange errors” (#14545)
Fixed “[CI] tests/async/tioselectors.nim flaky test for freebsd + OSX CI” (#13166)
Fixed “seq.setLen sometimes doesn’t zero memory” (#14655)
Fixed “nim dump is roughly 100x slower in 1.3 versus 1.2” (#14179)
Fixed “Regression: devel docgen cannot generate document for method” (#14691)
Fixed “recently flaky tests/async/t7758.nim” (#14685)
Fixed “Bind no longer working in generic procs.” (#11811)
Fixed “The pegs module doesn’t work with generics!” (#14718)
Fixed “Defer is not properly working for asynchronous procedures.” (#13899)
Fixed “Add an ARC test with threads in a loop” (#14690)
Fixed “[goto exceptions] {.noReturn.} pragma is not detected in a case expression” (#14458)
Fixed “[exceptions:goto] C compiler error with dynlib pragma calling a proc” (#14240)
Fixed “Cannot borrow var float64 in infix assignment” (#14440)
Fixed “lib/pure/memfiles.nim: compilation error with –taintMode:on” (#14760)
Fixed “newWideCString allocates a multiple of the memory needed” (#14750)
Fixed “Nim source archive install: ‘install.sh’ fails with error: cp: cannot stat ‘bin/nim-gdb’: No such file or directory” (#14748)
Fixed “nim cpp -r tests/exception/t9657 hangs” (#10343)
Fixed “Detect tool fails on FreeBSD” (#14715)
Fixed “compiler crash: findUnresolvedStatic “ (#14802)
Fixed “seq namespace (?) regression” (#4796)
Fixed “Possible out of bounds string access in std/colors parseColor and isColor” (#14839)
Fixed “compile error on latest devel with orc and ssl” (#14647)
Fixed “[minor] $ wrong for type tuple” (#13432)
Fixed “Documentation missing on devel asyncftpclient” (#14846)
Fixed “nimpretty is confused with a trailing comma in enum definition” (#14401)
Fixed “Output arguments get ignored when compiling with –app:staticlib” (#12745)
Fixed “[ARC] destructive move destroys the object too early” (#14396)
Fixed “highlite.getNextToken() crashes if the buffer string is “echo “"”” (#14830)
Fixed “Memory corruption with –gc:arc with a seq of objects with an empty body.” (#14472)
Fixed “Stropped identifiers don’t work as field names in tuple literals” (#14911)
Fixed “Please revert my commit” (#14930)
Fixed “[ARC] C compiler error with inline iterators and imports” (#14864)
Fixed “AsyncHttpClient segfaults with gc:orc, possibly memory corruption” (#14402)
Fixed “[ARC] Template with a block evaluating to a GC’d value results in a compiler crash” (#14899)
Fixed “[ARC] Weird issue with if expressions and templates” (#14900)
Fixed “xmlparser does not compile on devel” (#14805)
Fixed “returning lent T from a var T param gives codegen errors or SIGSEGV” (#14878)
Fixed “[ARC] Weird issue with if expressions and templates” (#14900)
Fixed “threads:on + gc:orc + unittest = C compiler errors” (#14865)
Fixed “mitems, mpairs doesn’t work at compile time anymore” (#12129)
Fixed “strange result from executing code in const expression” (#10465)
Fixed “Same warning printed 3 times” (#11009)
Fixed “type alias for generic typeclass doesn’t work” (#4668)
Fixed “exceptions:goto Bug devel codegen lvalue NIM_FALSE=NIM_FALSE” (#14925)
Fixed “the –useVersion:1.0 no longer works in devel” (#14912)
Fixed “template declaration of iterator doesn’t compile” (#4722)
Fixed “Compiler crash on type inheritance with static generic parameter and equality check” (#12571)
Fixed “Nim crashes while handling a cast in async circumstances.” (#13815)
Fixed “[ARC] Internal compiler error when calling an iterator from an inline proc “ (#14383)
Fixed ““Cannot instantiate” error when template uses generic type” (#5926)
Fixed “Different raises behaviour for newTerminal between Linux and Windows” (#12759)
Fixed “Expand on a type (that defines a proc type) in error message “ (#6608)
Fixed “unittest require quits program with an exit code of 0” (#14475)
Fixed “Range type: Generics vs concrete type, semcheck difference.” (#8426)
Fixed “[Macro] Type mismatch when parameter name is the same as a field” (#13253)
Fixed “Generic instantiation failure when converting a sequence of circular generic types to strings” (#10396)
Fixed “initOptParser ignores argument after value option with empty value.” (#13086)
Fixed “[ARC] proc with both explicit and implicit return results in a C compiler error” (#14985)
Fixed “Alias type forgets implicit generic params depending on order” (#14990)
Fixed “[ARC] sequtils.insert has different behaviour between ARC/refc” (#14994)
Fixed “The documentation for “hot code reloading” references a non-existent npm package” (#13621)
Fixed “existsDir deprecated but breaking dir undeclared” (#15006)
Fixed “uri.decodeUrl crashes on incorrectly formatted input” (#14082)
Fixed “testament incorrectly reports time for tests, leading to wrong conclusions” (#14822)
Fixed “Calling peekChar with Stream returned from osproc.outputStream generate runtime error” (#14906)
Fixed “localPassC pragma should come after other flags” (#14194)
Fixed ““Could not load” dynamic library at runtime because of hidden dependency” (#2408)
Fixed “–gc:arc generate invalid code for {.global.} («nimErr_» in NIM_UNLIKELY)” (#14480)
Fixed “Using ^ from stdlib/math along with converters gives a match for types that aren’t SomeNumber” (#15033)
Fixed “[ARC] Weird exception behaviour from doAssertRaises” (#15026)
Fixed “[ARC] Compiler crash declaring a finalizer proc directly in ‘new’” (#15044)
Fixed “[ARC] C compiler error when creating a var of a const seq” (#15036)
Fixed “code with named arguments in proc of winim/com can not been compiled” (#15056)
Fixed “javascript backend produces javascript code with syntax error in object syntax” (#14534)
Fixed “–gc:arc should be ignored in JS mode.” (#14684)
Fixed “arc: C compilation error with imported global code using a closure iterator” (#12990)
Fixed “[ARC] Crash when modifying a string with mitems iterator” (#15052)
Fixed “[ARC] SIGSEGV when calling a closure as a tuple field in a seq” (#15038)
Fixed “pass varargs[seq[T]] to iterator give empty seq “ (#12576)
Fixed “Compiler crashes when using string as object variant selector with else branch” (#14189)
Fixed “JS compiler error related to implicit return and return var type” (#11354)
Fixed “nkRecWhen causes internalAssert in semConstructFields” (#14698)
Fixed “Memory leaks with async (closure iterators?) under ORC” (#15076)
Fixed “strutil.insertSep() fails on negative numbers” (#11352)
Fixed “Constructing a uint64 range on a 32-bit machine leads to incorrect codegen” (#14616)
Fixed “heapqueue pushpop() proc doesn’t compile” (#14139)
Fixed “[ARC] SIGSEGV when trying to swap in a literal/const string” (#15112)
Fixed “Defer and –gc:arc” (#15071)
Fixed “internal error: compiler/semobjconstr.nim(324, 20) example” (#15111)
Fixed “[ARC] Sequence “disappears” with a table inside of a table with an object variant” (#15122)
Fixed “[ARC] SIGSEGV with tuple assignment caused by cursor inference” (#15130)
Fixed “Issue with –gc:arc at compile time” (#15129)
Fixed “Writing an empty string to an AsyncFile raises an IndexDefect” (#15148)
Fixed “Compiler is confused about call convention of function with nested closure” (#5688)
Fixed “Nil check on each field fails in generic function” (#15101)
Fixed “{.nimcall.} convention won’t avoid the creation of closures” (#8473)
Fixed “smtp.nim(161, 40) Error: type mismatch: got <typeof(nil)> but expected ‘SslContext = void’” (#15177)
Fixed “[strscans] scanf doesn’t match a single character with $+ if it’s the end of the string” (#15064)
Fixed “Crash and incorrect return values when using readPasswordFromStdin on Windows.” (#15207)
Fixed “Possible capture error with fieldPairs and genericParams” (#15221)
Fixed “The StmtList processing of template parameters can lead to unexpected errors” (#5691)
Fixed “[ARC] C compiler error when passing a var openArray to a sink openArray” (#15035)
Fixed “Inconsistent unsigned -> signed RangeDefect usage across integer sizes” (#15210)
Fixed “toHex results in RangeDefect exception when used with large uint64” (#15257)
Fixed “Arc sink arg crash” (#15238)
Fixed “SQL escape in db_mysql is not enough” (#15219)
Fixed “Mixing ‘return’ with expressions is allowed in 1.2” (#15280)
Fixed “os.getFileInfo() causes ICE with –gc:arc on Windows” (#15286)
Fixed “[ARC] Sequence “disappears” with a table inside of a table with an object variant” (#15122)
Fixed “Documentation regression jsre module missing” (#15183)
Fixed “CountTable.smallest/largest() on empty table either asserts or gives bogus answer” (#15021)
Fixed “[Regression] Parser regression” (#15305)
Fixed “[ARC] SIGSEGV with tuple unpacking caused by cursor inference” (#15147)
Fixed “LwIP/FreeRTOS compile error - missing SIGPIPE and more “ (#15302)
Fixed “Memory leaks with async (closure iterators?) under ORC” (#15076)
Fixed “Bug compiling with –gc:arg or –gc:orc” (#15325)
Fixed “memory corruption in tmarshall.nim” (#9754)
Fixed “typed macros break generic proc definitions” (#15326)
Fixed “nim doc2 ignores –docSeeSrcUrl parameter” (#6071)
Fixed “The decodeData Iterator from cgi module crash” (#15369)
Fixed “|| iterator generates invalid code when compiling with –debugger:native” (#9710)
Fixed “Wrong number of variables” (#15360)
Fixed “Coercions with distinct types should traverse pointer modifiers transparently.” (#7165)
Fixed “Error with distinct generic TableRef” (#6060)
Fixed “Support images in nim docgen” (#6430)
Fixed “Regression. Double sem check for procs.” (#15389)
Fixed “uri.nim url with literal ipv6 address is printed wrong, and cannot parsed again” (#15333)
Fixed “[ARC] Object variant gets corrupted with cursor inference” (#15361)
Fixed “nim doc .. compiler crash (regression 0.19.6 => 1.0)” (#14474)
Fixed “cannot borrow result; what it borrows from is potentially mutated” (#15403)
Fixed “memory corruption for seq.add(seq) with gc:arc and d:useMalloc “ (#14983)
Fixed “DocGen HTML output appears improperly when encountering text immediately after/before inline monospace; in some cases won’t compile” (#11537)
Fixed “Deepcopy in arc crashes” (#15405)
Fixed “pop pragma takes invalid input” (#15430)
Fixed “tests/stdlib/tgetprotobyname fails on NetBSD” (#15452)
Fixed “defer doesnt work with block, break and await” (#15243)
Fixed “tests/stdlib/tssl failing on NetBSD” (#15493)
Fixed “strictFuncs doesn’t seem to catch simple ref mutation” (#15508)
Fixed “Sizeof of case object is incorrect. Showstopper” (#15516)
Fixed “[ARC] Internal error when trying to use a parallel for loop” (#15512)
Fixed “[ARC] Type-bound assign op is not being generated” (#15510)
Fixed “[ARC] Crash when adding openArray proc argument to a local seq” (#15511)
Fixed “VM: const case object gets some fields zeroed out at runtime” (#13081)
Fixed “regression(1.2.6 => devel): VM: const case object field access gives: ‘sons’ is not accessible” (#15532)
Fixed “Csources: huge size increase (x2.3) in 0.20” (#12027)
Fixed “Out of date error message for GC options” (#15547)
Fixed “dbQuote additional escape regression” (#15560)
It seems to be a generally useful feature. If a package supports
optional cargo dependencies then you may now (instead of messing with
CARGO_ARGS directly) set in your Makefile for example:
CARGO_NO_DEFAULT_FEATURES= YES
CARGO_FEATURES+= dbus pulseaudio
"Over the last releases, the Elixir team has been focusing on the compiler, both in terms of catching more mistakes at compilation time and making it faster. Elixir v1.11 has made excellent progress on both fronts. This release also includes many other goodies, such as tighter Erlang integration, support for more guard expressions, built-in datetime formatting, and other calendar enhancements."
Update Ruby on Rails 6.0 related packages to 6.0.3.4.
This is security fix for ruby-actionpack60.
## Rails 6.0.3.4 (October 07, 2020) ##
* [CVE-2020-8264] Prevent XSS in Actionable Exceptions
go1.15.2 (released 2020/09/09) includes fixes to the compiler, runtime,
documentation, the go command, and the net/mail, os, sync, and testing
packages. See the Go 1.15.2 milestone on our issue tracker for details.
go1.15.3 (released 2020/10/14) includes fixes to cgo, the compiler, runtime,
the go command, and the bytes, plugin, and testing packages. See the Go 1.15.3
milestone on our issue tracker for details.
go1.14.9 (released 2020/09/09) includes fixes to the compiler, linker, runtime,
documentation, and the net/http and testing packages. See the Go 1.14.9
milestone on our issue tracker for details.
go1.14.10 (released 2020/10/14) includes fixes to the compiler, runtime, and
the plugin and testing packages. See the Go 1.14.10 milestone on our issue
tracker for details.
Install the new interchangeable BLAS system created by Thomas Orgis,
currently supporting Netlib BLAS/LAPACK, OpenBLAS, cblas, lapacke, and
Apple's Accelerate.framework. This system allows the user to select any
BLAS implementation without modifying packages or using package options, by
setting PKGSRC_BLAS_TYPES in mk.conf. See mk/blas.buildlink3.mk for details.
This commit should not alter behavior of existing packages as the system
defaults to Netlib BLAS/LAPACK, which until now has been the only supported
implementation.
Details:
Add new mk/blas.buildlink3.mk for inclusion in dependent packages
Install compatible Netlib math/blas and math/lapack packages
Update math/blas and math/lapack MAINTAINER approved by adam@
OpenBLAS, cblas, and lapacke will follow in separate commits
Update direct dependents to use mk/blas.buildlink3.mk
Perform recursive revbump
3.9.0 Release highlights
New syntax features:
PEP 584, union operators added to dict;
PEP 585, type hinting generics in standard collections;
PEP 614, relaxed grammar restrictions on decorators.
New built-in features:
PEP 616, string methods to remove prefixes and suffixes.
New features in the standard library:
PEP 593, flexible function and variable annotations;
os.pidfd_open() added that allows process management without races and signals.
Interpreter improvements:
PEP 573, fast access to module state from methods of C extension types;
PEP 617, CPython now uses a new parser based on PEG;
a number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
garbage collection does not block on resurrected objects;
a number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, math, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489;
a number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.
New library modules:
PEP 615, the IANA Time Zone Database is now present in the standard library in the zoneinfo module;
an implementation of a topological sort of a graph is now provided in the new graphlib module.
Release process changes:
PEP 602, CPython adopts an annual release cycle.
This release contains no new language features, though it does add one
long-awaited standard library feature. It is mostly quality of life
improvements, library stabilizations and const-ifications, and toolchain
improvements.
https://blog.rust-lang.org/2020/10/08/Rust-1.47.html
Vala 0.50.1
===========
* Various improvements and bug fixes:
- codegen:
+ Don't falsly use g_return_val_if_fail() for async creation method [#1077]
+ Don't pass CCodeFunctionCall to NULL-aware free macro
- vala:
+ Improve parsing of with-statement and allow it as embedded statement
+ Prioritize the usage of an existing with-variable instance,
Recognize previously inserted implicit access to with-variable [#1043]
- parser: Allow to begin expression with statement keyword [#1073]
- g-i: Fix a couple of C compiler warnings
- libvaladoc: Fix a couple of C compiler warnings
- testrunner: Pass --enable-checking to increase coverage, Filter external
-0X flags to preserve current default -O0
- build: Stop passing obsolete --use-header
* Bindings:
- gstreamer: Update from 1.19.0+ git master
- gtk4: Don't skip LayoutManager.create_layout_child() [#1071]
- gtk4: Update to 3.99.1+15b635d7
- vapi: Update GIR-based bindings
- webkit2gtk-4.0: Update to 2.30.1
Vala 0.50.0
===========
* Various improvements and bug fixes:
- codegen: The actual struct size is required for calloc (POSIX) [#1068]
* Bindings:
- gstreamer: Update from 1.18.0+ git master
- poppler-glib: Update to 20.09.0
- vapi: Update GIR-based bindings
Vala 0.49.92
============
* Various improvements and bug fixes:
- Don't use locale dependent string functions on syntax strings [#1067]
- girparser: Additionally fallback to "glib:type-name" to retrieve the cname
- libvaladoc/girimporter:
+ Fallback to "name" for callback
+ Fallback to "glib:type-name" for class, interface and record
+ Improve parse_symbol_doc() and don't use parse_doc()
+ Skip "attribute" elements
- libvaladoc/gtkdoc-importer:
+ Correctly retrieve "url" from "ulink" elements
+ Don't let parse_block_taglet() return null
* Bindings:
- gtk4: Update to 3.99.1
- vapi: Update GIR-based bindings
Vala 0.49.91
============
* Various improvements and bug fixes:
- codegen: Don't append unreachable clean-up section of Block [#169] [#838]
- codegen: Always include base_struct declaration if available [#464]
- vala: Additionally break on ObjectCreationExpression in "tainted" check
- vala: Add ObjectCreationExpression.to_string()
- manual: Update from wiki.gnome.org
* Bindings:
- gio-unix-2.0,glib-2.0: Updates for 2.66
- gtk4: Resolve a few conflicts of methods with virtual-methods
Vala 0.49.90
============
* Regression and bug fixes:
- Revert "girwriter: Use appropriate get_ccode_* functions" [#1059]
- tests: Don't rely on undefined use-after-free behaviour of glibc
- Add TraverseVisitor for traversing the tree with a callback
- Force usage of temporary variables for "tainted" member accesses [#1061]
- vala: Move transformation of unary increment/decrement to codegen
- vala: Set parent_node for child nodes of lambda-expression [#1062]
* Bindings:
- gstreamer: Update from 1.17.2+ git master
- gtk4: Update to 3.99.0+e6e2d6b4
- pango: Update from 1.46.0
- webkit2gtk-4.0: Update to 2.29.91
Vala 0.49.2
===========
* Highlights:
- Support non-virtual signals with default handler [#1056]
* Various improvements and bug fixes:
- codegen: Include header for base-symbols when connecting vfuncs
- vala:
+ Inherit CCode.returns_floating_reference attribute from base [#1053]
+ Mark tranformed member-access as qualified [#57]
+ Switch context if with-variable is not owned by with-statement [#1043]
- girparser: Add support for string "feature_test_macro" metadata
* Bindings:
- gio-2.0: Include "gio/gsettingsbackend.h" for GLib.SettingsBackend
members [#1054]
- goocanvas-2.0: Fix some field ownerships and types [#1057]
- gstreamer: Update from 1.17.2+ git master
- gtk4: Update to 3.99.0+358b698e
- pango: Update from 1.45.4+
- posix: Add missing "has_typedef" attribute for some delegates
- posix: Declare WRDE_APPEND constant as public
- vapi: Update GIR-based bindings
Vala 0.49.1
===========
* Highlights:
- Use defintions of public header in internal header if available
and drop --use-header compiler option and enable it by default [#713]
- gdbus: Use GDBusProxy API to set `g-interface-info` at initialization time
- Check vfunc of abstract/virtual methods and property accessors for NULL
before using it [#153]
- Check coverage of switch on enum-type and issue warnings if needed [#777]
- Map empty start/end index to 0/length for slice expressions [#238]
- Add support for "with" statement (mark them experiemental) [#327]
- Use inheritted scopes of base-types/prerequisites to resolve symbols [#54]
* Various improvements and bug fixes:
- codegen:
+ Add implicit parameter and instance checks in async method [#1005]
+ Make use of CCode.cname for label name of CatchClause
- vala:
+ Move setting of target profile and standard packages into CodeContext
+ Remove some public API from expressions and statements
+ Add Expression.is_always_true/false() helpers
+ Add InvalidExpression as replacement for erroneous nodes instead
+ Don't loose invalid_syntax when copying array type for variables [#942]
- girparser: Strip "Enum"-suffix only from enumeration
- girwriter: Internal fields/vfuncs in type-symbols are public in C [#513]
- libvaladoc: Remove unused Api.Class.get_finalize_function_name() API
- testrunner: Add more -Werror=* flags
* Bindings:
- gio-unix-2.0: Fix "g_unix_mount_for" binding [#1052]
- glib-2.0,gio-2.0,gobject-2.0: Updates for 2.66
- glib-2.0: data of GLib.Bytes is allowed to be null
- glib-2.0: Add more explicit type_id attributes for various symbols
- gstreamer: Update from 1.17.2+ git master
- gtk4: Update to 3.99.0+d743e757
- pango: Update from 1.45.2
- vapi: Update GIR-based bindings
6.14.8
BUG FIXES
npm install --dev deprecation message
remove unused broken require
Do not send user secret in the referer header
DOCUMENTATION
docs: add missing metadata in semver page
Node-gyp supports both Python and legacy Python
DEPENDENCIES
update-notifier@2.5.0
npm-registry-fetch@4.0.7
meant@1.0.2
Update Archive_Tar pear package to 1.4.10.
Bump PKGREVISION.
Archive_Tar 1.4.10 (2020-09-15 10:16 UTC)
Changelog:
* Fix block padding when the file buffer length is a multiple of 512 and
smaller than Archive_Tar buffer length
* Don't try to copy username/groupname in chroot jail
Update ruby27 to 2.7.2.
Ruby 2.7.2 Released
Posted by nagachika on 2 Oct 2020
Ruby 2.7.2 has been released.
This release contains intentional incompatibility. The deprecated warnings
are off by default on 2.7.2 and later. You can turn on the deprecated
warnings by specifing command line option -w or -W:deprecated. Please check
the topics below for details.
* Feature #17000 2.7.2 turns off deprecation warnings by default
* Feature #16345 Don¡Çt emit deprecation warnings by default.
This release contains the new version of webrick with a security fix
described in the article.
* CVE-2020-25613: Potential HTTP Request Smuggling Vulnerability in WEBrick
## 1.12.2 - 2020-09-20
- Add janet\_try and janet\_restore to C API.
- Fix `os/execute` regression on windows.
- Add :pipe option to `os/spawn`.
- Fix docstring typos.
## 1.12.1 - 2020-09-07
- Make `zero?`, `one?`, `pos?`, and `neg?` polymorphic.
- Add C++ support to jpm and improve C++ interop in janet.h.
- Add `%t` formatter to `printf`, `string/format`, and other formatter functions.
- Expose `janet_cfuns_prefix` in C API.
- Add `os/proc-wait` and `os/proc-kill` for interacting with processes.
- Add `janet_getjfile` to C API.
- Allow redirection of stdin, stdout, and stderr by passing keywords in the env table in `os/spawn` and `os/execute`.
- Add `os/spawn` to get a core/process back instead of an exit code as in `os/execute`.
When called like this, `os/execute` returns immediately.
- Add `:x` flag to os/execute to raise error when exit code is non-zero.
- Don't run `main` when flychecking.
- Add `:n` flag to `file/open` to raise an error if file cannot be opened.
- Fix import macro to not try and coerce everything to a string.
- Allow passing a second argument to `disasm`.
- Add `cancel`. Resumes a fiber but makes it immediately error at the yield point.
- Allow multi-line paste into built in repl.
- Add `(curenv)`.
- Change `net/read`, `net/chunk`, and `net/write` to raise errors in the case of failures.
- Add `janet_continue_signal` to C API. This indirectly enables C functions that yield to the event loop
to raise errors or other signals.
- Update meson build script to fix bug on Debian's version of meson
- Add `xprint`, `xprin`, `xprintf`, and `xprinf`.
- `net/write` now raises an error message if write fails.
- Fix issue with SIGPIPE on macOS and BSDs.
One of the two patches fixing the build on NetBSD was wrong; I had modified it
to build again but it turns out it was not necessary at all in the first place.
I just confirmed it on netbsd-9/amd64.
Bumps PKGREVISION for safety, since it built again after modifying the original
patch.
Coordinated with kamil@ (who upstreams for us)
Version 14.13.0 (Current)
Notable Changes
(SEMVER-MINOR) deps: upgrade to libuv 1.40.0
(SEMVER-MINOR) module: named exports for CJS via static analysis
(SEMVER-MINOR) module: exports pattern support
(SEMVER-MINOR) src: allow N-API addon in AddLinkedBinding()
Version 14.12.0 (Current)
Notable changes
deps:
* update to uvwasi 0.0.11
n-api:
* create N-API version 7
* add more property defaults
Version 14.11.0 (Current)
Notable Changes
This is a security release.
Vulnerabilities fixed:
CVE-2020-8251: Denial of Service by resource exhaustion CWE-400 due to unfinished HTTP/1.1 requests (Critical).
CVE-2020-8201: HTTP Request Smuggling due to CR-to-Hyphen conversion (High).
Version 12.18.4 'Erbium' (LTS)
Notable Changes
This is a security release.
Vulnerabilities fixed:
CVE-2020-8201: HTTP Request Smuggling due to CR-to-Hyphen conversion (High).
CVE-2020-8252: fs.realpath.native on may cause buffer overflow (Medium).
Version 10.22.1 'Dubnium' (LTS)
Notable changes
This is a security release.
Vulnerabilities fixed:
CVE-2020-8252: fs.realpath.native on may cause buffer overflow (Medium).
Version 10.22.0 'Dubnium' (LTS)
Notable changes
deps:
* upgrade npm to 6.14.6
* upgrade openssl sources to 1.1.1g
n-api:
* add napi_detach_arraybuffer
Changelog:
Mono 6.10.0 Release Notes
Release date: 19 May 2020
Highlights
Various bugfixes
In Depth
Runtime
WebAssembly
We continue to work on making our WebAssembly support better. Various sets of issues have been resolved in this release and general performance and feature work is happening as well.
Community improvements for AIX/PASE and Haiku
The ports for these systems received a bunch of improvements from community contributor Calvin Buckley (@NattyNarwhal).
Class Libraries
CoreFX integration
We continued to replace some of our classes with the implementation from CoreFX to improve performance and compatibility with .NET.
Tools
Resolved Issues
15808 - dladdr shim for gmodule; try to enable crash reporter on AIX
15894 - Move MonoError from managed wrappers to native wrappers.
16461 - [interp] Non-recursive interpreter
16746 - Clean up map.c /map.h
16785 - Modify run-jenkins.sh to adapt wasm build for the OSX CI lane
16816 - [wasm][tests] WASM Safari browser tests
16832 - Replace embedded libgc with Unity fork of recent Boehm (bdwgc)
16855 - [runtime] Add portable cached array creation functions and replace gcc-specific impl.
16949 - [netcore] Propagate ALCs through reflection functions
16954 - [llvm] Use explicit null checks with LLVM.
16982 - Replace mono_assembly_name_free use with mono_assembly_name_free_internal.
16992 - [Coop] Unconvert Microsoft.Win32.NativeMethods.
17116 - [llvm] Use -place-safepoints in JIT mode too
17119 - Inline TLS access.
17131 - Update MERP event type to MonoAppCrash
17160 - Enable more hw intrinsics for AOT
17162 - Now IsExpired property for FormsAuthenticationTicket compares two dates with same kind (UTC)
17163 - [WinForms] Fix Recalculate in ScrollableControl
17173 - [sgen] Optimize LOS for better locality and parallelization.
17195 - Fixes#17190: SerializationException on ListViewItemCount
17212 - [offsets-tool] Update the README.
17214 - [master] Update dependencies from dotnet/arcade
17219 - [mini] Fix check for FastAllocateString that used old name
17222 - Fix check in fix_libc_name to trigger only for libc, not libcups or other names …
17223 - Enable GSS on Linux
17225 - [Mono.Posix] Add support for memfd_create() and file sealing
17226 - [interp] Kill more instructions
17227 - Incorrect constrained virtual call in method using gsharedvt for reference type.
17228 - Running –enable-msvc-only didn’t find jay.vcxproj.
17229 - [interp] Small cleanups
17230 - [netcore] Disable some SafeWaitHandle tests everywhere, not just Linux
17231 - [man] Update MONO_IOMAP docs as it no longer works with corefx System.IO
17233 - Revert mono_runtime_set_main_args in 44ff0597b835d0af62f526169dba3b365c9c3411.
17236 - [sgen] Fix invalid value passed to write barrier
17237 - [netcore] Implement System.IO.HasOverriddenBeginEndRead(Write) icalls
17238 - Add drawing type converters to mobile profiles
17243 - [netcore] Port CoreCLR implementation of Exception.SetCurrentStackTrace
17249 - [mini] print inserted instruction in verbose logging
17251 - [mini] trace snippet should restore return value
17252 - [System.Net.Http] Clean up HttpMessageHandler setup
17254 - Remove varargs from g_assert and g_assert_not_reachable (save 200+ bytes per frame in wasm interp).
17255 - [tests] Disable tests that crash on android sdks
17261 - [sdks] Android runner: properly shutdown runtime for Mono.Debugger.Soft test app
17262 - [eglib] Add newline for failure check prints
17263 - Fix g_assert_not_reached message regression.
17266 - [wasm] Continue loading app even when .pdb files are not found
17269 - Upgrade MSVC native runtime build to VS2019.
17270 - Add null check around sslStream when trying to dispose in MonoTlsStream
17272 - Update Linker. This fixes a Xamarin.Android breakage
17275 - Bump corefx to get Azure testhost change
17279 - Generate LLVM IR for OP_XEQUAL that is recognized by LLVM’s vector pattern recognizers.
17294 - [loader] Fix gnu/lib-names.h define
17297 - Mirror changes from mono/coreclr
17298 - [coop] Use bitfields for coop state machine state representation
17302 - Fix C++ WebAssembly build.
17305 - Fix msvc build warning, empty source main-core.c.
17307 - Bumps corefx to mono/corefx@8e3b279
17312 - Update dotnet sdk version
17313 - [ci] Use Xcode11.1 for XI/XM Mono SDK builds
17315 - [loader] Add an explicit define DISABLE_DLLMAP to control dllmap usage
17318 - [netcore] Avoid suspending threads in Environment.Exit, it can hang process
17321 - [GTK] Bump bockbuild for GtkViewport autoscrolling patch.
17322 - [bcl] Update BCL Linked Size
17326 - [interp] Add constant propagation of integers
17328 - [wasm][http] WasmHttpMessageHandler StreamingEnabled default to false
17330 - Fix SafeHandle marshalling in ref/in/out parameters
17331 - Initial telemetry for netcore builds
17336 - [bcl] add WriteLine(string) override to CStreamWriter needed due to corefx import
17338 - [jit] Fix is_reference checks for intrinsics with byref parameters.
17340 - [wasm] Bump emscripten. Remove generated python cache files.
17341 - [bcl][jit] implement Interlocked.Exchange in terms of object
17344 - [wasm] Add a –native-lib option to the packager to allow linking additional native libraries.
17345 - [cxx][x86] int/ptr casts.
17346 - [cxx][x86] ifndef DISABLE_JIT around mono_arch_emit_prolog.
17347 - [cxx][x86][amd64] Remove unused STORE_MEM_IMM.
17348 - [cxx][netcore] Goto around init.
17349 - [ci] Improve netcore build telemetry by running nupkg and tests through build.sh
17350 - Use functions instead of macros for is_in/is_out.
17351 - [wasm][xunit tests] Disable System.IO.Compression.Tests.BrotliEncoderTests
17355 - [master] Update dependencies from dotnet/core-setup dotnet/corefx
17358 - Removing execution of network tests from WatchOs.
17361 - [netcore] Fix build for Windows with cygwin
17362 - [interp] Constant folding for integers
17366 - [netcore] Remove Gader] Unmanaged library refactoring and NativeLibrary implementation
17370 - [bcl] Remove CompareExchange_T
17377 - [cxx] Int vs. enum, static for efficiency, cleanup, fix typo.
17379 - [cxx] [wasm] m2n-gen int/ptr casts.
17380 - [jit][x86ieldAwaitable struct readonly
17387 - [netcore] Managed ThreadPool implementation
17388 - [interp][wasm] Remove more varargs to conserve stack.
17391 - Remove the Legacy TLS Provider.
17393 - Cleaning up SslStream, MobileAuthenticatedStrea
17537 - [merp] Introduce a new ‘dump mode’ that allows different signal behavior when dumping
17538 - [interp] fix code length for JitInfo
17551 - [mini] Initial tiered compilation work
17553 - Mirror changes from mono/corefx,corert
17554 - [runtime] Make mono_thread_manage external only
17558 - [cxx] Compile mini-llvm.c as C++ if configure -enable-cxx.
17559 - [wasm] Propagate exit code from Main in the test runner.
17565 - Mirror changes from mono/coreclr,corert,corefx
17566 - [runtime] Unbalanced GC Unsafe transitions before shutdown
17570 - [cxx][x86] int/ptr casts
17571 - Mirror changes from mono/coreclr
17577 - [master] Update dependencies from dotnet/arcade dotnet/core-setup dotnet/corefx
17579 - Fix#16206: Change HotkeyPrefix default value in TabControlPainter.cs
17583 - [dim][regression] Explicit interface override
17589 - [embed] Assert when call mono_runtime_object_init
17590 - Bump CoreFX to pickup corefx #367 to fix#17133.
17592 - [eglib] Handle dli.dli_sname being NULL in g_module_address ().
17595 - [interp] fix signature mismatch between jit<>interp for string constructor
17596 - [wasm] Fix build problems.
17600 - [wasm] Print a useful error message instead of a signature mismatch error on missing icalls.
17602 - Avoid caching of System.dll image and types as they may be unloaded w…
17607 - Implement GC.GetGCMemoryInfo
17608 - Fix#12337: Refact selected indexes in TabControl.Remove
17609 - Mirror changes from mono/coreclr,corefx
17611 - [runtime] Add a –enable-minimal=threads configure option to disable threading support. Use it on wasm.
17612 - Remove some unused icalls.
17615 - [mini] Fix Coverity CID 1455161 & 1455162
17616 - [netcore] Report errors on Windows CI
17623 - [interp] Optimize call path
17625 - [interp] Avoid emitting MINT_SAFEPOINT for every single call
17628 - [System.Net.Http]: Bring HttpClient from CoreFX on monotouch and xammac.
17631 - Bump mono/corefx@6e65509
17636 - [interp] Fix interp logging
17639 - [wasm] Fix xunit test ninja errors.
17641 - [interp] Handle remoting field access same as jit
17642 - [threadpool] cache processor count
17646 - Mono NetCore Windows only build/test.
17648 - [llvm] Fix a case where we treated the dreg of a store_membase instruction as a dreg, its actually the base reg.
17650 - [interp] s/MONO_API_ERROR_INIT/error_init_reuse/g
17653 - [WinForms] Returns real installed input languages on Windows
17654 - [interp] Use GetType instrinsic also on net4x
17660 - [WinForms] Fix#10559 In MaskedTextBox wrong Lines value when Mask se…
17661 - [netcore] Cleanups.
17662 - [WinForms] Fix#12249 scroll orientation was not defined in ScrollEventArgs
17664 - [iOS] Match changes done in xamarin-macios in the SDK runtime.
17666 - [netcore] Improve default constructor lookup,
17667 - [jit] Call mono_class_setup_fields () before accessing field->offset. Fixes https://github.com/mono/mono/issues/17665.
17669 - [WinForms]: Fix#16632 special values (-1 and -2) of ListView Column …
17670 - [WinForms] Fix TabPage position when enabling MultiLine
17672 - Allow runtime to be built with C++ on AIX
17673 - [netcore] Improve Array.CreateInstance
17676 - [WinForms] Fix#13777 DrawToBitmap() did not draw children controls
17680 - [mono] Fix ProcessExit handler argument.
17681 - Remove handles from ves_icall_System_Array_InternalCreate.
17683 - [interp] use mask instead of bool expression
17688 - Intrinsify Activator.CreateInstance for value types with no ctor
17690 - [master] Update dependencies from dotnet/arcade dotnet/core-setup dotnet/corefx
17691 - Explicit update/init only LLVM BTLS repro on external MSVC build.
17692 - [jit] Allow Unsafe.As<TFrom, TTo> on gsharedvt types.
17694 - Bump Corefx
17695 - Mirror changes from mono/coreclr
17698 - [wasm] Build the tests with –no-native-strip.
17701 - [loader] Skip the full pinvoke resolution process for __Internal
17706 - Fix MSVC intellisense for LLVM sources.
17708 - Remove handles from ves_icall_System_Array_CanChangePrimitive.
17711 - Handles reduction – 4 MERP functions.
17712 - error_init reduction.
17713 - Remove handles from System.Diagnostics.Debugger.
17719 - [netcore] Complete Monitor.LockContentionCount implementation
17723 - [merp] Remove extraneous waitpid invocation
17727 - [debugger] Assert when async debug a generic method
17730 - Switch away from Start-Process, Wait-Process in build.ps1.
17731 - [WinForms][UIA] Add to the PropertyGrid new internal event to track grid items expanded state update
17732 - [Wasm] Enabled –preload-files without AOT
17738 - [runtime] Fix locking in mono_get_seq_points ().
17739 - [aot] Improve the aot mangler a bit, handle bool/char as a primitive type and avoid emitting a System prefix.
17740 - [profiler] Fix log profiling of native to managed wrappers
17744 - [sdks] Add xunit to iOS test runner and add results reporting
17748 - [wasm] Bump emscripten.
17749 - [LLVM] Change llvm submodule to dotnet-org fork of official LLVM git repo
17751 - [Mono.Security] Do not decode data beyond detected length in ASN1 parser
17753 - [netcore] Run individual CoreCLR test suites
17755 - [WinForms] Fix#16557 DefaultCellStyle was not cloned deeply in DataG…
17757 - [netcore] Fix RuntimePropertyInfo.GetValue() in FullAOT scenarios
17758 - Bump corefx to pick up https://github.com/mono/corefx/pull/370
17761 - Mirror changes from mono/corefx,coreclr,corert
17772 - Delete some LLVM test cases from make dist
17773 - [wasm] Change netcore support to use a prebuilt corefx runtime.
17777 - Mirror changes from mono/corefx,coreclr
17778 - [llvm] use multiple cores to build llvm if ninja7782 - [interp] Add some missing netcore intrinsics.
17784 - [interp] Add some inline checks from the JIT.
17785 - [MacSDK] Bump xamarin-gtk-theme.py to latest revision from private bockbuild
17789 - [Wasm] Forced filesystem creation
17795ULL pointer crash in mono_decompose_vtype_opts().
17803 - Mirror changes from mono/runtime
17806 - Remove handles/MonoError from Mono.RuntimeGPtrArrayHandle.
17816 - [Wasm] Update emscripten to 1.39.3
17827 - [llvm] Add support for LLVM JInt is a generic valuetype.
18577 - [2019-12] Bump msbuild to track mono-2019-10
18591 - [2019-12] [runtime] Disable lldb backtrace display on osx, it hangs on attaching in lldb.
18595 - [2019-12] configure.ac: remove AC_SEARCH_LIBS for libintl
18611 - [2019-12] [merp] MONO_DEBUG=no-gdb-stacktrace shouldn’t disable MERP
18620 - [2019-12] [corlib] Split corlib xunit tests even more for iOS
18682 - [2019-12] [aot] Avoid inflating gparams with byreflike types during generic sharing.
18705 - Update deprecated query parameter to header
18723 - [2019-12] [merp] Add an exception type for managed exceptions
18733 - [2019-12] [NUnitLite] Bump nunitlite submodule.
18744 - [2019-12] [iOS] Replace removed dsymutil -t switch with -num-threads
18786 - [2019-12] Allow users to switch to MonoWebRequestHandler on Android via UI
18792 - [2019-12] Bump msbuild to track mono-2019-10
18830 - [2019-12] Move offsets-tool into mono/tools
18833 - [2019-12] Make MonoWebRequestHandler linker friendly
18839 - [2019-12] [merp] Increase buffer size for state dump
18862 - [2019-12] Bump msbuild to track mono-2019-10
18889 - [2019-12] Move TestEnvVarSwitchForInnerHttpHandler to nunit (from xunit)
18908 - [2019-12] [bcl] Default XmlSerializer stream serialize to UTF8 Encoding
18911 - Bump bockbuild to bring in Gtk# regression fix
18921 - [2019-12] [merp] Capture Environment.FailFast message in crash report
18946 - [2019-12] [sgen] Disable managed allocator when using nursery-canaries
18956 - [2019-12] Remove TestEnvVarSwitchForInnerHttpHandler test
18964 - [2019-12] [merp] Produce hashes for unmanaged thread stacks also
18984 - [2019-12] Added some parenthesis and a cast to control order of operations.
18986 - [2019-12] Bump msbuild to track mono-2019-10
19018 - [2019-12][runtime] Improve handling crashing signals
19050 - [2019-12] [debugger] Enable reading embedded ppdb
19078 - [2019-12] Bump msbuild to track mono-2019-12
19119 - [2019-12] [merp] Create a signal (‘source’) breadcrumb for the crash dump process
19205 - [2019-12] Bump msbuild to track mono-2019-12
19208 - [2019-12] [corlib] Capture the ExceptionDispatchInfo when rethrowing from TaskContinuation
19243 - [2019-12] [merp] Add breadcrumb for StackHash
19368 - [2019-12] [amd64] align application stack pointer in signal handler
19423 - [2019-12] Force Python 3.x from env in shebang lines
19428 - [mono-2019-12] Bump corefx to get https://github.com/mono/corefx/pull/396
19622 - [2019-12] Bump msbuild to track mono-2019-12
19641 - [2019-12] [System.Runtime.Serialization] Work around specified cast is not valid
19662 - [2019-12] Bump msbuild to track mono-2019-12
On NetBSD, further limit the DEPENDS on openssl to i386. It turns out
that the sparc64 and powerpc bootstraps are not linked against openssl
as I previously assumed.
No change to limiting this DEPENDS to 9+. No change to any other OS.
This change is believed to fix rust building on NetBSD 9 sparc64.
As discussed on tech-pkg@.
Python 3.8.6 final
Core and Builtins
bpo-41525: The output of python --help contains now only ASCII characters.
Library
bpo-41817: fix tkinter.EventType Enum so all members are strings, and none are tuples
bpo-41815: Fix SQLite3 segfault when backing up closed database. Patch contributed by Peter David McCormick.
bpo-41517: fix bug allowing Enums to be extended via multiple inheritance
bpo-39587: use the correct mix-in data type when constructing Enums
bpo-41789: Honor object overrides in Enum class creation (specifically, __str__, __repr__, __format__, and __reduce_ex__).
bpo-39651: Fix a race condition in the call_soon_threadsafe() method of asyncio.ProactorEventLoop: do nothing if the self-pipe socket has been closed.
bpo-41720: Fixed turtle.Vec2D.__rmul__() for arguments which are not int or float.
bpo-39728: fix default _missing_ so a duplicate ValueError is not set as the __context__ of the original ValueError
bpo-37479: When Enum.__str__ is overridden in a derived class, the override will be used by Enum.__format__ regardless of whether mixin classes are present.
Documentation
bpo-35293: Fix RemovedInSphinx40Warning when building the documentation. Patch by Dong-hee Na.
bpo-37149: Change Shipman tkinter doc link from archive.org to TkDocs. (The doc has been removed from the NMT server.) The new link responds much faster and includes a short explanatory note.
Tests
bpo-41731: Make test_cmd_line_script pass with option ‘-vv’.
Windows
bpo-41744: Fixes automatic import of props file when using the Nuget package.
IDLE
bpo-35764: Rewrite the Calltips doc section.
bpo-40181: In calltips, stop reminding that ‘/’ marks the end of positional-only arguments.
Python 3.8.6 release candidate 1
Core and Builtins
bpo-41654: Fix a crash that occurred when destroying subclasses of MemoryError. Patch by Pablo Galindo.
bpo-41533: Free the stack allocated in va_build_stack if do_mkstack fails and the stack is not a small_stack.
bpo-38156: Handle interrupts that come after EOF correctly in PyOS_StdioReadline.
Library
bpo-41696: Fix handling of debug mode in asyncio.run(). This allows setting PYTHONASYNCIODEBUG or -X dev to enable asyncio debug mode when using asyncio.run().
bpo-39010: Restarting a ProactorEventLoop on Windows no longer logs spurious ConnectionResetErrors.
bpo-41609: The pdb whatis command correctly reports instance methods as ‘Method’ rather than ‘Function’.
bpo-32751: When cancelling the task due to a timeout, asyncio.wait_for() will now wait until the cancellation is complete also in the case when timeout is <= 0, like it does with positive timeouts.
bpo-37658: asyncio.wait_for() now properly handles races between cancellation of itself and the completion of the wrapped awaitable.
bpo-40782: Change the method asyncio.AbstractEventLoop.run_in_executor to not be a coroutine.
bpo-41520: Fix codeop regression that prevented turning compile warnings into errors.
bpo-41503: Fixed a race between setTarget and flush in logging.handlers.MemoryHandler.
bpo-41497: Fix potential UnicodeDecodeError in dis module.
bpo-41490: Update ensurepip to install pip 20.2.1 and setuptools 49.2.1.
bpo-41467: On Windows, fix asyncio recv_into() return value when the socket/pipe is closed (BrokenPipeError): return 0 rather than an empty byte string (b'').
bpo-41425: Make tkinter doc example runnable.
bpo-41384: Raise TclError instead of TypeError when an unknown option is passed to tkinter.OptionMenu.
bpo-38731: Fix NameError in command-line interface of py_compile.
bpo-41364: Reduce import overhead of uuid.
bpo-41344: Prevent creating shared_memory.SharedMemory objects with size=0.
bpo-40726: Handle cases where the end_lineno is None on ast.increment_lineno().
bpo-31122: ssl.wrap_socket() now raises ssl.SSLEOFError rather than OSError when peer closes connection during TLS negotiation
bpo-33660: Fix pathlib.PosixPath to resolve a relative path located on the root directory properly.
Documentation
bpo-41624: Fix the signature of typing.Coroutine.
bpo-40204: Enable Sphinx 3.2 c_allow_pre_v3 option and disable c_warn_on_allowed_pre_v3 option to make the documentation compatible with Sphinx 2 and Sphinx 3.
bpo-41045: Add documentation for debug feature of f-strings.
bpo-41314: Changed the release when from __future__ import annotations becomes the default from 4.0 to 3.10 (following a change in PEP 563).
bpo-39883: Make code, examples, and recipes in the Python documentation be licensed under the more permissive BSD0 license in addition to the existing Python 2.0 license.
Windows
bpo-41492: Fixes the description that appears in UAC prompts.
bpo-40741: Update Windows release to include SQLite 3.32.3.
IDLE
bpo-41468: Improve IDLE run crash error message (which users should never see).
bpo-41373: Save files loaded with no line ending, as when blank, or different line endings, by setting its line ending to the system default. Fix regression in 3.8.4 and 3.9.0b4.
C API
bpo-41524: Fix bug in PyOS_mystrnicmp and PyOS_mystricmp that incremented pointers beyond the end of a string.
For background, the bootstrap kits need pkgsrc openssl present to run.
Then, the built cargo links against libs from pkgsrc openssl. One
would expect USE_BUILTIN.openssl=no to cause the later bl3 to depend
on pkgsrc openssl, and it does, but then there is a mysterious error
about not being able to buildlink heimdal.
This commit, relative to how 1.192, modifies comments and adds a
straight DEPENDS:
DEPENDS+= openssl>=1.1:../../security/openssl
only in the case of NetBSD, >=9, i386/sparc64/powerpc.
More or less as proposed on tech-pkg, with no responses.
On NetBSD i386 (and sparc64 and powerpc), we have bootstrap kits that
are linked against pkgsrc openssl. Previously rust BUILD_DEPENDed on
openssl so they could run but this resulted in an installed cargo that
linked against that openssl. This changes the depend method to
straight bl3, so openssl will be a runtime dependency.
This continues to be icky, but after a long period of discussion on
the lists, no other this-branch fixes to make NetBSD 9/i386 be able to
build rust have been suggested, and further there no objections.
It is expected that the bootstrap process will be rototilled after
2020Q3 is cut; this situation is obviously not a good one to continue.
On NetBSD >8, for several CPU types we depend on compat80, because
bootstrap kits are build for NetBSD 8. On those, also add a
BUILD_DEPENDS on openssl, because the bootstrap kits need pkgsrc
openssl libs.
Adjust and reorganize comments (but the only functional change is the
NetBSD >8 openssl BUILD_DEPENDS).>
Resolves failure to build on NetBSD 9.
(The entire "NetBSD>8" section is a hack that can be removed with
improved bootstrap generation.)
Backport 3 vulnerability fixes from Python 3.6 using rebased patches
from Gentoo. These are:
bpo-39017 (CVE-2019-20907): infinite loop in tarfile.py
bpo-39503 (CVE-2020-8492): ReDoS on AbstractBasicAuthHandler
bpo-39603 (no CVE): header injection via HTTP method
required to gain access to 8-byte atomics. Add a hacks.mk file
to pull in devel/libatomic on powerpc ports. The reason is that
even though llvm itself doesn't need or use 8-byte atomics, other
programs refer to this installed CheckAtomic cmake file and may
indeed both need and use 8-byte atomics.
Verified that llvm still builds on NetBSD/macppc 9.0.
Bump PKGREVISION to 1.
Changelog:
JDK 15 Release Notes
These notes describe important changes, enhancements, removed APIs and
features, deprecated APIs and features, and other information about JDK 15 and
Java SE 15. In some cases, the descriptions provide links to additional
detailed information about an issue or a change. This page does not duplicate
the descriptions provided by the Java SE 15 ( JSR 390) Platform Specification,
which provides informative background for all specification changes and might
also include the identification of removed or deprecated APIs and features not
described here. The Java SE 15 ( JSR 390) specification provides links to:
* Annex 1: The complete Java SE 15 API Specification.
* Annex 2: An annotated API specification showing the exact differences
relative to Java SE 15. Informative background for these changes may be
found in the list of approved Change Specification Requests for this
release.
* Annex 3: Java SE 15 Editions of The Java Language Specification and The
Java Virtual Machine Specification. . The Java SE 15 Editions contain all
corrections and clarifications made since the Java SE 14 Editions, as well
as additions for new features.
You should be aware of the content in that document as well as the items
described in this page.
The descriptions on this Release Note page also identify potential
compatibility issues that you might encounter when migrating to JDK 15. The
Kinds of Compatibility page on the OpenJDK wiki identifies three types of
potential compatibility issues for Java programs used in these descriptions:
* Source: Source compatibility preserves the ability to compile existing
source code without error.
* Binary: Binary compatibility is defined in The Java Language Specification
as preserving the ability to link existing class files without error.
* Behavioral: Behavioral compatibility includes the semantics of the code
that is executed at runtime.
See CSRs Approved for JDK 15 for the list of CSRs closed in JDK 15 and the
Compatibility & Specification Review (CSR) page on the OpenJDK wiki for general
information about compatibility.
Contents
* New Features
* Removed Features and Options
* Deprecated Features and Options
* Known Issues
* Other Notes
New Features
This section describes some of the enhancements in Java SE 15 and JDK 15. In
some cases, the descriptions provide links to additional detailed information
about an issue or a change. The APIs described here are those that are provided
with the Oracle JDK. It includes a complete implementation of the Java SE 15
Platform and additional Java APIs to support developing, debugging, and
monitoring Java applications. Another source of information about important
enhancements and new features in Java SE 15 and JDK 15 is the Java SE 15 ( JSR
390) Platform Specification, which documents the changes to the specification
made between Java SE 14 and Java SE 15. This document includes descriptions of
those new features and enhancements that are also changes to the specification.
The descriptions also identify potential compatibility issues that you might
encounter when migrating to JDK 15.
Support for Unicode 13.0 (JDK-8239383)
core-libs/java.lang
This release upgrades Unicode support to 13.0, which includes the following:
* The java.lang.Character class supports Unicode Character Database of 13.0
level, which 13.0 adds 5,930 characters, for a total of 143,859 characters.
These additions include 4 new scripts, for a total of 154 scripts, as well
as 55 new emoji characters.
* The java.text.Bidi and java.text.Normalizer classes support 13.0 level of
Unicode Standard Annexes, #9 and #15, respectively.
* The java.util.regex package supports Extended Grapheme Clusters based on
13.0 level of Unicode Standard Annex #29 For more detail about Unicode
13.0, refer to the Unicode Consortium's release note.
Added isEmpty Default Method to CharSequence (JDK-8215401)
core-libs/java.lang
java.lang.CharSequence has been updated in this release to define a default
isEmpty method that tests if a character sequence is empty. Testing for, and
filtering out, empty Strings and other CharSequences is a common occurrence in
code and CharSequence::isEmpty can be used as a method reference. Classes that
implement java.lang.CharSequence and another interface that defines isEmpty
method should be aware of this addition as they may need to be modified to
override the isEmpty method.
JEP 371: Hidden Classes (JDK-8238358)
core-libs/java.lang.invoke
JEP 371 introduces hidden classes in Java 15. Hidden classes have the following
implications to existing code:
1. Class::getName traditionally returns a binary name, but for a hidden class
it returns a string that contains an ASCII forward slash (/) and is
therefore not a binary name. Programs that assume the returned string is a
binary name might need to be updated to handle hidden classes. That said,
the longstanding practice of Unsafe::defineAnonymousClass was to define
classes whose names were not binary names, so some programs may already
handle such names successfully.
2. Class::descriptorString and MethodType::descriptorString returns a string
that contains a ASCII dot (.) for a hidden class and therefore is not a
type descriptor conforming to JVMS 4.3. Programs that assume the returned
string is a type descriptor that conforms to JVMS 4.3 might need to be
updated to handle hidden classes.
3. Class::getNestMembers is changed to not throw an exception when it fails to
validate a nest membership of any member listed in NestMembers attribute.
Instead, Class::getNestMembers returns the nest host and the members listed
in the host's NestMembers attribute that are successfully resolved and
determined to have the same nest host as this class. (This means it may
return fewer members that listed in NestMembers attribute.) Existing code
that expects LinkageError when there is a bad nest membership might be
impacted.
4. The nestmate test in the JVM is changed to throw only IllegalAccessError
when the nest membership is invalid. Some historical understanding is
necessary:
* In Java 8, every access control failure was signaled with
IllegalAccessError (IAE). Moreover, if a given access check failed with IAE
once, then the same check would fail with IAE every time.
* In Java 11, the introduction of nest mates (JEP 181) meant that an access
control failure could be signaled either with IllegalAccessError or, if
nest membership was invalid, LinkageError. Still, if a given access check
failed with a specific exception, then the same check would always fail
with the same exception.
* In Java 15, the introduction of Lookup::defineHiddenClass implies that the
nest host of the lookup class must be determined eagerly, when the hidden
class is defined as a nestmate of the lookup class. Both
Lookup::defineHiddenClass and Class::getNestHost both determine the nest
host of a class in a more resilient manner than the JVM did in Java 11;
namely, the API simply treats a class as self-hosted if its purported nest
membership is invalid. For consistency with the API, the JVM no longer
throws LinkageError when a class's nest membership is invalid, and instead
treats the class as self-hosted. This means that the JVM only throws IAE
from access control (because a self-hosted class will not permit any other
class to access its private members). This is the behavior expected by the
vast majority of user code.
5. JVM TI GetClassSignature returns a string that contains a ASCII dot (.) for
a hidden class. JVM TI agents might need updating for hidden classes if
they assume the returned string from GetClassSignature is a type descriptor
conforming to JVMS 4.3.
Added Support for SO_INCOMING_NAPI_ID Support (JDK-8243099)
core-libs/java.net
A new JDK-specific socket option SO_INCOMING_NAPI_ID has been added to
jdk.net.ExtendedSocketOptions in this release. The socket option is Linux
specific and allows applications to query the NAPI (New API) ID of the
underlying device queue associated with its socket connection and take
advantage of the Application Device Queue (ADQ) feature of high performance
Network Interface Card (NIC) devices.
Specialized Implementations of TreeMap Methods (JDK-8176894)
core-libs/java.util:collections
The TreeMap class now provides overriding implementations of the putIfAbsent,
computeIfAbsent, computeIfPresent, compute, and merge methods. The new
implementations provide a performance improvement. However, if the function
provided to the compute- or merge methods modifies the map,
ConcurrentModificationException may be thrown, because the function that is
provided to these methods is prohibited from modifying the map. If a
ConcurrentModificationException occurs, the function must either be changed to
avoid modifying the map, or the surrounding code should be rewritten to replace
uses of the compute- and merge methods with conventional Map methods such as
get and put.
See JDK-8227666 for further information.
Added Ability to Configure Third Port for Remote JMX (JDK-8234484)
core-svc/javax.management
JMX supports (explicit) remote network access through the configuration of two
network ports (either from the command line or in a property file), by setting
the following properties:
com.sun.management.jmxremote.port=<port#>
com.sun.management.jmxremote.rmi.port=<port#>
Note: If it is not specified, the second port will default to the first.
A third local port is also opened to accept (local) JMX connections. This port
previously had its number selected at random, which could cause port
collisions.
However, it is now possible to configure the third JMX port (local only) by
using:
com.sun.management.jmxremote.local.port=<port#>
New Option Added to jstatd for Specifying RMI Connector Port Number (
JDK-8196729)
core-svc/tools
A new -r <port> option has been added to the jstatd command to specify the RMI
connector port number. If a port number is not specified, a random available
port is used.
New Option Added to jcmd for Writing a gzipped Heap Dump (JDK-8237354)
core-svc/tools
A new integer option gz has been added to the GC.heap_dump diagnostic command.
If it is specified, it will enable the gzip compression of the written heap
dump. The supplied value is the compression level. It can range from 1
(fastest) to 9 (slowest, but best compression). The recommended level is 1.
JEP 378: Text Blocks (JDK-8236934)
Text blocks have been added to the Java language. A text block is a multi-line
string literal that avoids the need for most escape sequences, automatically
formats the string in a predictable way, and gives the developer control over
the format when desired.
New Options Added to jhsdb for debugd Mode (JDK-8196751)
hotspot/svc-agent
Three new options have been added to the jhsdb command for the debugd mode:
1. --rmiport <port> is used to specify a RMI connector port number. If a port
number is not specified, a random available port is used.
2. --registryport <port> is used to specify a RMI registry port number. This
option overrides the system property sun.jvm.hotspot.rmi.port. If a port
number is not specified, the system property is used. If the system
property is not set, the default port 1099 is used.
3. --hostname <hostname> is used to specify a RMI connector host name. The
value could be a hostname or an IPv4/IPv6 address. This option overrides
the system property java.rmi.server.hostname. If a host name not specified,
the system property is used. If the system property is not set, a system
host name is used.
Added Revocation Checking to jarsigner (JDK-8242060)
security-libs/java.security
A new -revCheck option has been added to the jarsigner command to enable
revocation checking of certificates.
Tools Warn If Weak Algorithms Are Used Before Restricting Them (JDK-8172404)
security-libs/java.security
The keytool and jarsigner tools have been updated to warn users about weak
cryptographic algorithms being used before they are disabled. In this release,
the tools issue warnings for the SHA-1 hash algorithm and 1024-bit RSA/DSA
keys.
SunJCE Provider Supports SHA-3 Based Hmac Algorithms (JDK-8172680)
security-libs/javax.crypto
The SunJCE provider has been enhanced to support HmacSHA3-224, HmacSHA3-256,
HmacSHA3-384, and HmacSHA3-512. Implementations for these algorithms are
available under the Mac and KeyGenerator services. The Mac service generates
the keyed-hash and the KeyGenerator service generates the key for the Mac.
New System Properties to Configure the TLS Signature Schemes (JDK-8242141)
security-libs/javax.net.ssl
Two new system properties have been added to customize the TLS signature
schemes in JDK. jdk.tls.client.SignatureSchemes has been added for the TLS
client side, and jdk.tls.server.SignatureSchemes has been added for the server
side.
Each system property contains a comma-separated list of supported signature
scheme names specifying the signature schemes that could be used for the TLS
connections.
The names are described in the "Signature Schemes" section of the Java Security
Standard Algorithm Names Specification.
Support for certificate_authorities Extension (JDK-8206925)
security-libs/javax.net.ssl
The "certificate_authorities" extension is an optional extension introduced in
TLS 1.3. It is used to indicate the certificate authorities (CAs) that an
endpoint supports and should be used by the receiving endpoint to guide
certificate selection.
With this JDK release, the "certificate_authorities" extension is supported for
TLS 1.3 in both the client and the server sides. This extension is always
present for client certificate selection, while it is optional for server
certificate selection.
Applications can enable this extension for server certificate selection by
setting the jdk.tls.client.enableCAExtension system property to true. The
default value of the property is false.
Note that if the client trusts more CAs than the size limit of the extension
(less than 2^16 bytes), the extension is not enabled. Also, some server
implementations do not allow handshake messages to exceed 2^14 bytes.
Consequently, there may be interoperability issues when
jdk.tls.client.enableCAExtension is set to true and the client trusts more CAs
than the server implementation limit.
Support for canonicalize in krb5.conf (JDK-8239385)
security-libs/org.ietf.jgss:krb5
The 'canonicalize' flag in the krb5.conf file is now supported by the JDK
Kerberos implementation. When set to true, RFC 6806 name canonicalization is
requested by clients in TGT requests to KDC services (AS protocol). Otherwise,
and by default, it is not requested.
The new default behavior is different from JDK 14 and previous releases where
name canonicalization was always requested by clients in TGT requests to KDC
services (provided that support for RFC 6806 was not explicitly disabled with
the sun.security.krb5.disableReferrals system or security properties).
Removed Features and Options
This section describes the APIs, features, and options that were removed in
Java SE 15 and JDK 15. The APIs described here are those that are provided with
the Oracle JDK. It includes a complete implementation of the Java SE 15
Platform and additional Java APIs to support developing, debugging, and
monitoring Java applications. Another source of information about important
enhancements and new features in Java SE 15 and JDK 15 is the Java SE 15 ( JSR
390) Platform Specification, which documents changes to the specification made
between Java SE 14 and Java SE 15. This document includes the identification of
removed APIs and features not described here. The descriptions below might also
identify potential compatibility issues that you could encounter when migrating
to JDK 15. See CSRs Approved for JDK 15 for the list of CSRs closed in JDK 15.
Removal of Terminally Deprecated Solaris-specific SO_FLOW_SLA Socket Option (
JDK-8244582)
core-libs/java.net
In this release, in conjunction with the removal of the Solaris port in JEP 381
, the JDK-specific socket option jdk.net.ExtendedSocketOptions.SO_FLOW_SLA,
which is only relevant to sockets on Solaris, and its supporting classes
SocketFlow and SocketFlow.Status, have been removed.
Removal of RMI Static Stub Compiler (rmic) (JDK-8225319)
core-libs/java.rmi
The RMI static stub compiler rmic has been removed. The rmic tool is obsolete
and has been deprecated for removal since JDK 13.
Removal of Deprecated Constant RMIConnectorServer.CREDENTIAL_TYPES (JDK-8213222
)
core-svc/javax.management
The terminally deprecated constant
javax.management.remote.rmi.RMIConnectorServer.CREDENTIAL_TYPE has been
removed. A filter pattern can be specified instead by using
RMIConnectorServer.CREDENTIALS_FILTER_PATTERN.
Removal of Nashorn JavaScript Engine (JDK-8236933)
The Nashorn JavaScript script engine, its APIs, and the jjs tool have been
removed. The engine, the APIs, and the tool were deprecated for removal in Java
11 with the express intent to remove them in a future release.
Obsolete -XX:UseAdaptiveGCBoundary (JDK-8228991)
hotspot/gc
The VM option UseAdaptiveGCBoundary is obsolete. Use of this option will
produce an obsolete option warning but will otherwise be ignored.
This option was previously disabled by default, and enabling it only had an
effect when also using -XX:+UseParallelGC. Enabling it was intended to provide
a performance benefit for some applications. However, it has been disabled by
default for a long time because of crashes and performance regressions.
Removal of DocuSign Root CA Certificate (JDK-8225068)
security-libs/java.security
The following expired DocuSign root CA certificate has been removed from the
cacerts keystore:
+ alias name "keynectisrootca [jdk]"
Distinguished Name: CN=KEYNECTIS ROOT CA, OU=ROOT, O=KEYNECTIS, C=FR
Removal of Comodo Root CA Certificate (JDK-8225069)
security-libs/java.security
The following expired Comodo root CA certificate has been removed from the
cacerts keystore:
+ alias name "addtrustclass1ca [jdk]"
Distinguished Name: CN=AddTrust Class 1 CA Root, OU=AddTrust TTP Network, O=AddTrust AB, C=SE
Removal of com.sun.net.ssl.internal.ssl.Provider Name (JDK-8219989)
security-libs/javax.net.ssl
The legacy SunJSSE provider name, "com.sun.net.ssl.internal.ssl.Provider" has
been removed and should no longer be used. The "SunJSSE" name should be used
instead. For example, SSLContext.getInstance("TLS", "SunJSSE").
Retired the Deprecated SSLSession.getPeerCertificateChain() Method
Implementation (JDK-8241039)
security-libs/javax.net.ssl
The implementation of the deprecated SSLSession.getPeerCertificateChain()
method has been removed from the JDK in the SunJSSE provider and the HTTP
client implementation. The default implementation of this method has been
changed to throw UnsupportedOperationException.
SSLSession.getPeerCertificateChain() is a deprecated method and will be removed
in a future release. To mitigate the removal compatibility impact, applications
should use the SSLSession.getPeerCertificates() method instead. For service
providers, please remove this method from the existing implementation, and do
not support this method in any new implementation.
Deprecated Features and Options
Additional sources of information about the APIs, features, and options
deprecated in Java SE 15 and JDK 15 include:
* The Deprecated API page identifies all deprecated APIs including those
deprecated in Java SE 15.
* The Java SE 15 ( JSR 390) specification specification documents changes to
the specification made between Java SE 14 and Java SE 15 that include the
identification of deprecated APIs and features not described here.
* JEP 277: Enhanced Deprecation provides a detailed description of the
deprecation policy. You should be aware of the updated policy described in
this document.
You should be aware of the contents in those documents as well as the items
described in this release notes page.
The descriptions of deprecated APIs might include references to the deprecation
warnings of forRemoval=true and forRemoval=false. The forRemoval=true text
indicates that a deprecated API might be removed from the next major release.
The forRemoval=false text indicates that a deprecated API is not expected to be
removed from the next major release but might be removed in some later release.
The descriptions below also identify potential compatibility issues that you
might encounter when migrating to JDK 15. See CSRs Approved for JDK 15 for the
list of CSRs closed in JDK 15.
Deprecated RMI Activation for Removal (JDK-8245068)
core-libs/java.rmi
The RMI Activation mechanism has been deprecated and may be removed in a future
version of the platform. RMI Activation is an obsolete part of RMI that has
been optional since Java 8. It allows RMI server JVMs to be started
("activated") upon receipt of a request from a client, instead of requiring RMI
server JVMs to be running continuously. Other parts of RMI are not deprecated.
See JEP 385 for further information.
Deprecated NSWindowStyleMaskTexturedBackground (JDK-8240995)
After an upgrade of the macOS SDK used to build the JDK, the behavior of the
apple.awt.brushMetalLook and textured Swing properties has changed. When these
properties are set, the title of the frame is still visible. It is recommended
that the apple.awt.transparentTitleBar property be set to true to make the
title of the frame invisible again. The apple.awt.fullWindowContent property
can also be used.
Please note that Textured window support was implemented by using the
NSTexturedBackgroundWindowMask value of NSWindowStyleMask. However, this was
deprecated in macOS 10.12 along with NSWindowStyleMaskTexturedBackground, which
was deprecated in macOS 10.14.
For additional information, refer to the following documentation:
* apple.awt.brushMetalLook: https://developer.apple.com/documentation/appkit/
nstexturedbackgroundwindowmask?language=objc
* apple.awt.transparentTitleBar: https://developer.apple.com/documentation/
appkit/nswindow/1419167-titlebarappearstransparent?language=objc
* apple.awt.fullWindowContent: https://developer.apple.com/documentation/
appkit/nsfullsizecontentviewwindowmask
Deprecated -XX:ForceNUMA Option (JDK-8243628)
hotspot/gc
The VM option ForceNUMA is deprecated. Use of this option will produce a
deprecation warning. This option will be removed in a future release.
This option has always been disabled by default. It exists to support testing
of NUMA-related code paths when running on a single node / UMA platform.
Disabled Biased-locking and Deprecated Biased-locking Flags (JDK-8231264)
hotspot/runtime
Biased locking has been disabled by default in this release. In addition, the
VM option UseBiasedLocking along with the VM options BiasedLockingStartupDelay,
BiasedLockingBulkRebiasThreshold, BiasedLockingBulkRevokeThreshold,
BiasedLockingDecayTime and UseOptoBiasInlining have been deprecated. The
options will continue to work as intended but will generate a deprecation
warning when they are used.
Biased locking might affect performance on applications that exhibit
significant amounts of uncontended synchronization, such as applications that
rely on older Java Collections APIs that synchronize on every access. Hashtable
and Vector are examples of these APIs. Use -XX:+BiasedLocking on the command
line to re-enable biased locking. Report any significant performance
regressions to Oracle with biased locking disabled.
Disable Native SunEC Implementation by Default (JDK-8237219)
security-libs/javax.crypto
The SunEC crypto provider no longer advertises curves that are not implemented
by using modern formulas and techniques. Arbitrary and named curves, listed at
the bottom of this note, are disabled. Commonly used named curves, secp256r1,
secp384r1, secp521r1, x25519, and x448, remain supported and enabled by SunEC
because they use modern techniques. Applications that still require the
disabled curves from the SunEC provider can re-enable them by setting the
System property jdk.sunec.disableNative to false. For example: java
-Djdk.sunec.disableNative=false ....
If this property is set to any other value, the curves will remain disabled.
Exceptions thrown when the curves are disabled will contain the message Legacy
SunEC curve disabled, followed by the name of the curve. Methods affected by
the change are KeyPair.generateKeyPair(), KeyAgreement.generateSecret(),
Signature.verify(), and Signature.sign(). These methods throw the same
exception class they had before when the curve was not supported.
The following curves are disabled: secp112r1, secp112r2, secp128r1, secp128r2,
secp160k1, secp160r1, secp160r2, secp192k1, secp192r1, secp224k1, secp224r1,
secp256k1, sect113r1, sect113r2, sect131r1, sect131r2, sect163k1, sect163r1,
sect163r2, sect193r1, sect193r2, sect233k1, sect233r1, sect239k1, sect283k1,
sect283r1, sect409k1, sect409r1, sect571k1, sect571r1, X9.62 c2tnb191v1, X9.62
c2tnb191v2, X9.62 c2tnb191v3, X9.62 c2tnb239v1, X9.62 c2tnb239v2, X9.62
c2tnb239v3, X9.62 c2tnb359v1, X9.62 c2tnb431r1, X9.62 prime192v2, X9.62
prime192v3, X9.62 prime239v1, X9.62 prime239v2, X9.62 prime239v3,
brainpoolP256r1 brainpoolP320r1, brainpoolP384r1, brainpoolP512r1
Added forRemoval=true to Previously Deprecated ContentSigner APIs (JDK-8242260)
security-libs/jdk.security
The ContentSigner and ContentSignerParameters classes in the com.sun.jarsigner
package support alternative signers and have been deprecated with forRemoval=
true. When the -altsigner or -altsignerpath options are specified, the
jarsigner tool produces a warning that these options are deprecated and will be
removed.
Known Issues
java.net.HttpClient Does Not Override Protocols Specified in SSLContext Default
Parameters (JDK-8239594)
core-libs/java.net
During the setup of new connections, java.net.http.HttpClient now uses the
default set of protocols provided by the SSLContext when negotiating the TLS
handshake. In the absence of any SSLParameters explicitly supplied to the
HttpClient.builder, the HttpClient has been updated to no longer override any
default-selected protocols in the SSLContext. As a result, the actual TLS
version that is negotiated might differ from that of previous releases, or it
might even succeed or fail to negotiate when it previously might not have.
[macos] Support for Notarizing jpackage app-image and dmg (JDK-8237490)
tools/jpackage
jpackage cannot create packages on macOS that are suitable for notarization.
Other Notes
The following notes describe additional changes and information about this
release. In some cases, the following descriptions provide links to additional
detailed information about an issue or a change.
Workaround for Windows GDI API's memory restrictions (JDK-8240654)
client-libs
It has been found that some Windows GDI functions don't support all types of
Java heap memory allocation schemes. This problem can cause repaint issues and
printing bugs. It has been worked around by allocating temporary buffers off
heap.
See: https://support.microsoft.com/en-us/help/4567569/
gdi-apis-may-fail-when-large-pages-or-vad-spanning-is-used
java.awt.Robot.delay() Method Completes With Interrupt Status Set When
Interrupted (JDK-8210231)
client-libs/java.awt
When it is interrupted, the implementation of the java.awt.Robot.delay() method
has been changed to complete with the interrupt status set.
If a thread is interrupted while waiting in the java.awt.Robot.delay() method,
then this method returns immediately with the interrupt status set. If the
interrupted status is already set, this method returns immediately with the
interrupt status set.
Optimized Empty Substring Handling (JDK-8240094)
core-libs/java.lang
The implementation of String.substring and related methods stripLeading and
stripTrailing have changed in this release to avoid redundantly creating a new
empty String. This may impact code that depends on unspecified behaviour and
the identity of empty sub-strings.
Lookup::defineClass Links the Class (JDK-8238195)
core-libs/java.lang.invoke
Lookup::defineClass is specified to throw LinkageError if a linkage error
occurs, but the implementation was not actually linking the class. In this
release, the implementation has been changed to link the class before
returning, so conforming to the specification. If Lookup::defineClass is called
to define a class that fails linking, LinkageError will be thrown.
DatagramPacket.getPort() Returns 0 When the Port Is Not Set (JDK-8237890)
core-libs/java.net
In this release, the default port number for a datagram packet has been changed
to 0. Previously, this value was -1, which was undocumented. The port can be
retrieved by using DatagramPacket::getPort.
DatagramSocket::disconnect Allows an Implementation to Throw
UncheckedIOException (JDK-8235783)
core-libs/java.net
Previously, DatagramChannel::disconnect threw an IOException while
DatagramSocket::disconnect did not. As a result, the DatagramChannel::socket
adapter, which calls DatagramChannel::disconnect, catches the thrown
IOException and rethrows it as an Error. However, this was undocumented
behavior and not user-friendly.
The DatagramChannel::socket adapter has been changed to throw an
UncheckedIOException, and the specification of DatagramSocket::disconnect has
been updated to document that an implementation may now throw an
UncheckedIOException. This ensures consistency in behavior between
DatagramSocket, DatagramChannel, and DatagramChannel::socket adapter.
Filtering and Ordering of Addresses Returned by Alternative Hosts File Name
Service Provider (JDK-8244958)
core-libs/java.net
In this release, the behavior of InetAddress.getAllByName has been modified
when the alternative hosts file name service is selected .
The JDK allows specifying an alternative host's file name service by using the
jdk.net.hosts.file system property. The implementation of the alternative name
service has been changed to take into account the values of the
java.net.preferIPv4Stack and java.net.preferIPv6Addresses system properties.
This affects the results returned by InetAddress.getAllByName when the host's
file name service is selected. For details about java.net.preferIPv4Stack and
java.net.preferIPv6Addresses, see Networking Properties in the API
documentation.
Modified the MS950 charset Encoder's Conversion Table (JDK-8232161)
core-libs/java.nio.charsets
In this release, some of the one-way byte-to-char mappings have been aligned
with the preferred mappings provided by the Unicode Consortium.
Support Monetary Grouping Separator in DecimalFormat/DecimalFormatSymbols (
JDK-8227313)
core-libs/java.text
DecimalFormat/DecimalFormatSymbols classes are now capable of dealing with
grouping separators for currency values. For example, the monetary grouping
separator for the German language used in Austria (the de-AT locale) is '.',
whereas the monetary grouping separator in other German locales is ' '.
ValueRange.of(long, long, long) Does Not Throw IAE on Invalid Inputs (
JDK-8239520)
core-libs/java.time
java.time.temporal.ValueRange.of() methods are now correctly throwing an
InvalidArgumentException on given invalid arguments. For example, of(5, 2, 10)
which is invalid because the minimum is greater than the smallest maximum, now
throws the exception.
localizedBy() Overrides Localized Values With Default Values (JDK-8244245)
core-libs/java.time
java.time.format.DateTimeFormatter.localizedBy(Locale) method now honors the
default locale values, such as Chronologyand/or DecimalStyle of the specified
locale argument.
For example, in previous JDK releases:
jshell> DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)
.localizedBy(Locale.forLanguageTag("fa"))
.format(LocalDate.now())
$3 ==> "جمعه 1 مهٔ 2020"
the numbers are in Arabic (Western) numerals.
In JDK 15:
jshell> DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)
.localizedBy(Locale.forLanguageTag("fa"))
.format(LocalDate.now())
$3 ==> "جمعه ۱ مهٔ ۲۰۲۰"
the numbers are in Extended Arabic-Indic numerals because it is the default
numbering system for the Farsi locale.
Performance Improvement for InflaterOutputStream.write (JDK-8242848)
core-libs/java.util.jar
InflaterOutputStream(OutputStream out, Inflater infl, int bufLen) allows for
specifying the decompressor and buffer size to be used.
InflaterOutputStream.write(byte[] b, int off, int len) was writing data using a
max buffer size of 512 bytes.
Starting with JDK 15 the buffer size specified via InflaterOutputStream
(OutputStream out, Inflater infl, int bufLen) will be used in calls to
InflaterOutputStream.write(byte[] b, int off, int len). If the buffer size is
not specified when invoking the InflaterOutputStreamconstructor, it will
default to 512 bytes.
Case Insensitive Matching Doesn't Work Correctly for Some Character Classes (
JDK-8214245)
core-libs/java.util.regex
The Java regular expression engine supports the case insensitive mode. When
this mode is turned on, the engine is supposed to match the input text without
regard to the case of the characters it consists of.
However, the current implementation of matching against some named character
classes (those that are encoded with p{name} or P{name} constructs) fails to
respect the case insensitive mode.
This fix makes these character classes behave consistently with respect to case
sensitivity. When the regular expression engine operates in the case
insensitive mode, the named character classes will match the input characters
without regard to their case: lower case, upper case, or title case.
Localized Time Zone Name Inconsistency Between English and Other Locales (
JDK-8236548)
core-libs/java.util:i18n
English time zone names provided by the CLDR locale provider are now correctly
synthesized following the CLDR spec, rather than substituted from the COMPAT
provider. For example, SHORT style names are no longer synthesized
abbreviations of LONG style names, but instead produce GMT offset formats.
Support for CLDR version 37 (JDK-8239480)
core-libs/java.util:i18n
Locale data based on Unicode Consortium's CLDR has been upgraded to their
version 37. For the detailed locale data changes, please refer to the Unicode
Consortium's CLDR release notes:
* http://cldr.unicode.org/index/downloads/cldr-37
Flags Controlling C1 Inlining Have New Names (JDK-8235673)
hotspot/compiler
A number of flags controlling inlining in the C1 and C2 compilers have been
split up into separate flags. The C2 compiler keeps the flags with the old
names, and the C1 compiler gets the new flags.
Old flags now only controlling C2
* MaxInlineLevel
* MaxRecursiveInlineLevel
* MaxInlineSize
* MaxTrivialSize
* InlineSmallCode
* FreqInlineSize
New flags for C1 that replace the old ones
* C1MaxInlineLevel
* C1MaxRecursiveInlineLevel
* C1MaxInlineSize
* C1MaxTrivialSize
Deprecation
If the old flags are used in a JDK build without the C2 compiler, a deprecation
warning will be printed.
JEP 377: ZGC: A Scalable Low-Latency Garbage Collector (Production) (
JDK-8209683)
hotspot/gc
The Z Garbage Collector (ZGC) is now ready for use in production and no longer
marked as an experimental feature. ZGC is enabled by using the -XX:+UseZGC
command-line option (using -XX:+UnlockExperimentalVMOptions is no longer
needed).
See JEP 377 for more details.
Improved Ergonomics for G1 Heap Region Size (JDK-8241670)
hotspot/gc
The default heap region size calculation has been changed to return larger
regions by default. The calculation still aims to have 2048 regions, but two
aspects have changed:
* Only the maximum heap size is considered. The old calculation also took the
initial heap size into consideration, but this can give unexpected behavior
when no heap size is set.
* The region size is rounded up to the nearest power of 2 instead of down.
This will return larger region sizes in cases where the maximum heap size
is not a power of 2.
These changes improve startup and runtime performance.
Disabling NUMA Interleaving on Windows (JDK-8245002)
hotspot/gc
-XX:+UseNUMAInterleaving has no effect on Windows in this release. It was found
that GDI APIs used by java2d don't support the memory reservation scheme used
for NUMA interleaving. The JVM detects this problem and both warns about this
and turns off NUMA interleaving. See: https://support.microsoft.com/en-us/help/
4567569/gdi-apis-may-fail-when-large-pages-or-vad-spanning-is-used
Disabling large pages on Windows (JDK-8245000)
hotspot/gc
-XX:+UseLargePages has no effect on Windows in this release. It was found that
GDI APIs used by java2d don't support large pages. The JVM detects this problem
and both warns about this and reverts to using small pages. See: https://
support.microsoft.com/en-us/help/4567569/
gdi-apis-may-fail-when-large-pages-or-vad-spanning-is-used
Field Layout Computation Changed (JDK-8237767)
hotspot/runtime
The way that field layout is computed has been changed, with more aggressive
optimizations to avoid unused gaps in instances. These new optimizations can be
disabled by using a new VM option -XX:-UseEmptySlotsInSupers.
For a limited time, it is possible to continue to use the old code to compute
field layout with a new VM option -XX:-UseNewFieldLayout. However, this option
has been deprecated in JDK 15 and the old code will be removed in a future
release.
Enable ShowCodeDetailsInExceptionMessages by default (JDK-8233014)
hotspot/runtime
The default of the flag ShowCodeDetailsInExceptionMessages was changed to
'true'. The helpful NullPointerException messages of JEP 358 are now printed by
default. The messages contain snippets of the code where the
NullPointerException was raised.
App deployers should double check the output of their web applications and
similar usage scenarios. The NullPointerException message could be included in
application error messages or be displayed by other means in the app. This
could give remote attackers valuable hints about a potential vulnerable state
of the software components being used.
An example message is 'Cannot read field "c" because "a.b" is null'. The
attacker knows that field b of a contains null which might be unintended and
offer an opportunity for an attack. For more details of what the message can
contain see the above mentioned JEP 358.
Signature and SignatureSpi Get Parameter Methods May Return null When
Unsupported (JDK-8243424)
security-libs/java.security
Signature.getParameters() and SignatureSpi.engineGetParameters() may return
null if the underlying provider does not support returning the parameters as
AlgorithmParameters. For further details, see the Signature and SignatureSpi
method descriptions.
SunPKCS11 Initialization With NSS When External FIPS Modules Are in Security
Modules Database (JDK-8238555)
security-libs/javax.crypto:pkcs11
The SunPKCS11 security provider can now be initialized with NSS when
FIPS-enabled external modules are configured in the Security Modules Database
(NSSDB). Before this change, when such a library was configured for NSS in
non-FIPS mode, the SunPKCS11 provider would throw a RuntimeException with the
message "FIPS flag set for non-internal module".
This change allows the JDK to work properly with recent NSS releases in GNU/
Linux operating systems when the system-wide FIPS policy is turned on.
Default SSLEngine Should Create in Server Role (JDK-8237474)
security-libs/javax.net.ssl
In JDK 11 and later, javax.net.ssl.SSLEngine by default used client mode when
handshaking. As a result, the set of default enabled protocols may differ to
what is expected. SSLEngine would usually be used in server mode. From this JDK
release onwards, SSLEngine will default to server mode. The
javax.net.ssl.SSLEngine.setUseClientMode(boolean mode) method may be used to
configure the mode.
New in 2020.08.2:
+ Fixes:
+ Fix output of `--show-config` option [1a1fe7fb][f00c4198]
New in 2020.08.1:
+ Changes:
+ Fix compiler version [1336e5f3]
+ Method `invoke` of `WalkList` returns a lazy `Seq` instance now [fe40ee1e]
+ Internal:
+ `Seq` class now has its own proto for `new` method [a19996db]
New in 2020.08:
+ Changes:
+ Methods `name` and `usage-name` of `Parameter` now return an empty `Str`,
when there is no name, instead of `Nil`. Method `default` returns `Code` type object,
when no default was provided instead of `Any` type object [c11f4b18]
+ Remove redundant `(())` from `Map.new.raku` [491e1def]
+ Routine `done-testing` of `Test` module returns `Bool` now,
indicating if the tests passed or not [337848fe]
+ Deprecations:
+ Deprecate `--nqp-lib` command line option,
which had no effect for more than a year [9071653e]
+ Fixes:
+ Make `X::Method::NotFound` exception more user-friendly
[b36afcb3][760034ef][eb0ca2a3][66adb771][acc5e64d][4546a603]
+ Fix false positive typechecking exceptions for some generic types
[3d5fba7b][973b83de][8d40691d][1db17c46][1eb712d5]
+ Ensure `Routine` subtypes are composed before performing mixins with
their instances [7f2ae26c][e3c2646e]
+ Fix mixing in a role with attributes into a NQP class [1b5f6b98][9e51d01b]
+ Make exceptions thrown by supply iterators don't claim to have
originally been thrown within the iterator itself [fcfc60b6]
+ Fix `Baggy.pickpairs` called with a `Callable` [08f81f24]
+ Fix a rare, yet possible data race [9d6d8dd7]
+ Additions:
+ Add `set_parameterizer`, `parameterize_type`, `type_parameterized`,
`type_parameters` and `type_parameter_at` methods for `Metamodel::Primitives` [2ab94429]
+ Internal:
+ Type `Parameter` methods [c11f4b18]
+ Fix release pipeline to not delete the GNU/Linux build [4ad4bd30]
+ Make `Rakudo::Internals::JSON` up to 4.4x as fast [b60e1636][43bd739f]
+ Do roast-related cleanup, add `quicktest` make target
[1e20dfca][6fd09811][333ce78c][dd8cd411]
+ Rework `tools/update-passing-test-data.pl` to support backends [ea0c98cf]
+ Make `main-version.nqp` a backend-specific configuration file [80b0747a]
+ Add a `Perl6::SysConfig` class [ace5e22f]
+ Simplify binary release instructions a little [27eb5ea9]
+ Add tests to make sure profilers can be invoked [d7aa7e66]
+ Remove an outdated workaround from `Cool` implementation [a3af5833]
+ Fix incorrect method call [02a83442]
New in 2020.07:
+ Fixes:
+ Improve "Method not found" error message for some rare cases [0a86798f]
+ Fix calling `.say`/`.put`/`.note` methods on Match objects [9f546ef6]
+ Add word wrapping to numerous error messages, improve wording
[eb589c03][1b84e036][3cb29a03][6db1fb1d][80aaede3][42031860][f70a3ccd]
[3ffed2fb][a7a1fe24][cd8846ad][83a126b3][3add8615][3d9a9fc4][697596fd]
[56e5f7dc][88b0e7a3][7a93c907][f550c9f9][a4b982cd][93963433][58685eeb]
[5f423a7e][92f8c19b][5627e02b][5b7ecdc0][a7455050][f96a641f][1f93724f]
[98c7e512][248664c6][3bc4fa90]
+ Wordwrap `Mu.WHY` [16d24a21]
+ Fix check for valid Raku module extension to be an exact match instead of suffix-like one [d4eef8d4]
+ Fix result of `.raku` method called on a generic typed array [90f86d4c]
+ Additions:
+ Set equality operators: `(==)` Unicode `≡` and `≢` which allow to check
for sameness of the operands using QuantHash semantics
(for example, `1,2,3 (==) 3,1,2` returns `True`) [701f4cfb][dbd69ba7]
+ Add support for Supply.tail(*) and .tail(Inf) [9ccfc90e]
+ Add support for Supply.tail(*-3) [eaa72afa]
+ Make `Supply.head(*-3)` consistent with `List.head(*-3)` [5c8c7324][70e5cfb9]
+ Rakudo now supports the `--rakudo-home` command line option to specify the path of the Rakudo home [914bcbad]
+ Efficiency:
+ Make <a b c d>.permutations between 23 and 85x faster [682a4d4f]
+ Make IO::Handle.read(1) about 3x as fast and consuming less memory [2946ed64][252b9349]
+ Internal:
+ Micro-optimize `buf8.new` creation code in compiler [ed936c14]
+ Give `Supply.tail` its own candidate [1a91af8c]
+ Add `Str.naive-word-wrapper` (implementation detail)
[056d6a4e][9ea66e13][6db1fb1d][45893495][821f582f][3674f812]
+ Make `IO::Path` use its own `.succ` / `.pred` logic [305fc7bd]
+ Remove placeholder files [07009cc0]
+ Re-imagine `CompUnit::Repository::FileSystem!distribution` [f3b1c8df]
+ Change `perl6` to `Raku` in nqp-configure submodule URL [ddebab5a]
+ Refactor `Rakudo home` and `NQP home` handling [e4f020ca]
+ Do core setting name mapping via compiler config [6e087e13]
+ Fix for spectest not seeing Inline::Perl5 [d5630720]
New in 2020.06:
+ SPECIAL NOTES:
+ Results of `dir` routine called with dirty base path are presented
as cleaned up for some paths (like `///` or `a/../a`) unlike
before. While compatibility with most of other cases is preserved
and no ecosystem fallout was observed, be cautious of the possible
observable changes if the code does not clean dirty paths using `cleanup` method.
+ Since this release, when you start Raku with "-" as a single positional parameter, it
will now check if STDIN is connected to a terminal. If it is, then
the REPL will be started, rather than appearing to freeze waiting
for the user to enter something and issue an EOF. If STDIN is *not*
connected to a terminal, then Raku will read from STDIN and process
that as the source of a program.
+ The `run` routine, `Proc.spawn` and `Proc::Async.new` are
extended with a new argument `:$win-verbatim-args` defaulting to
`False`. If the argument is left off or set to False, the
arguments are quoted according to the Microsoft convention. This
is identical to Rakus previous behavior and thus backwards
compatible. When passing True the passed arguments are
concatenated with a single space. No other processing takes
place. This allows to manually quote the arguments as necessary.
+ Changes:
+ Support verbatim argument handling for `Proc` [709941c6][9a75738f]
+ Signatures of `slurp` and `spurt` routines not accepting redundant arguments is
now compile time error rather than run-time one [22f43444]
+ The `Distro.desc` method now states codename for MacOS [b4b2a5ec]
+ The `gist` method output for multi-dimensional arrays is truncated now [cfc3e57f][4bfe5bd5]
+ Parametrization a variable type in form `my $foo is Type[Foo, Bar]` works for all types now [de43f193]
+ The `rotate` method now returns `Seq` instead of `List` [4b501bd4]
+ Add CACHEDIR.TAG to mark cache dirs as cache [37646b86][c3bdb617][ef90599e]
+ Improve GNU C++ name mangling [4f672c27]
+ Make `Instant.raku` output simpler [c0b5fb28]
+ Improve smartmatching against `Mu`/`Any`/`Junction` types
(`Mu.new ~~ Mu` does not die anymore, `any(Mu, Any) ~~ Mu` returns `True` now) [3b4794f4][840d3e81]
+ Fixes:
+ Fix code objects created BEGIN time EVAL getting lost in precompilation [537f8877][169f63d9]
+ The `is` routine from `Test` module now handles types that cannot be stringified and
compares them using `raku` method now [c9e94623]
+ Fix various JVM and JS backend issues [8e5b610a][2b81f978]
[12f8f1eb][5b86436c][1464b35e][a059373e][9fe471cf]
+ Fix BEGIN time `EVAL` accidentally running CHECK phasers of the outer comp unit [eeb4f43f][b874c68e]
+ Fix results o `"١٢٣".Numeric` and `"١٢٣".Int` [c2e8b22f]
+ Fix race in `PIO` method of `IO::Handle` [f33ce01c]
+ Fix `Date(now)` call [9dcbc5ff]
+ Fix `.comb(Str)` to ensure non-overlapping results [8d5a0f70]
+ Fix `Instant.raku` for Rational values [f506cc03]
+ Fix sorting of 2 element native arrays [becb85eb]
+ Make sure `push-all` does not push when exhausted when splitting using a regex [077300c5]
+ Improve error message for method calls placed after white space [4278e4c2]
+ Improve `X::Syntax::Variable::MissingInitializer` exception's error message [ee005d8b]
+ Improve `X::Method::NotFound` exception's error message to only suggest a submethod if correct [b02a7413]
+ Improve `malformed loop spec` related errors [d3c3e534]
+ Improve error message for case of too many directives in routine `sprintf` [c988f832]
+ Improve detection of a version control conflict marker to provide an error message [65e412f7]
+ Additions:
+ Add `IO::Handle.do-not-close-automatically` method [61046d76][999d04aa]
+ Add `IO::Path::Parts` class [4387f280][187312b8][e9ea048b][30ae200f]
+ Add support for `printf($format, Junction)` [110324d3]
+ Add `Supply.rotate` method [9f7c9278]
+ Add `Capture.EXIST-POS` method [6a4f79ec][b55ecdf0][3372352e]
+ Add `RAKU_REPL_OUTPUT_METHOD` environment variable which sets
the method used to stringify a value of an expression in REPL, default is `gist` [285717a0]
+ Add `:chomp` named argument to `Str.lines` similar to the same named argument of `IO::Handle.new` [1bcc5d73]
+ Efficiency:
+ Make creation of regex captures faster [15961f91][272c4636]
[ed65d733][e3fa44ab][7f47db80][0b48651c][537a6e41][f627d2c8][6f6b2dfe][219199bb]
+ Make file test methods like `.d` or `.x` faster [c821bbc5]
+ Make `Match.caps` about 35% faster [87e91def]
+ Make `Str.split(Regex)` up to 2x faster [9c74d983]
+ Make `Str.split(Regex, *%_)` up to 2x faster [a9796fe5]
+ Make `dir` routine about 15% faster [700b7432]
+ Make `Blob.join` between 4% and 11% faster [84ff64cf]
+ Make `Blob.gist` about 2x as fast [b55667ef]
+ Make `QuantHash` implementation a bit faster [4a728f2a]
+ Make `IO::Spec::Win32.basename` about 1.7x as fast [ecd06c9f]
+ Make `IO::Spec::Win32.tmpdir` about 1.8x as fast [6d427d47]
+ Make `IO::Spec::Win32.path` about 2x as fast [1a8e07c2]
+ Make `IO::Spec::Unix.path` about 3.5x as fast [8dc58abf]
+ Make `IO::Spec::Unix.basename` and `IO::Spec::Unic.extension` about 1.7x as fast [f89fad87]
+ Make `IO::Spec::Unix.tmpdir` about 1.8x as fast [a2860ead]
+ Make `WhateverCode.ACCEPTS` about 2x as fast [853e6227]
+ Make `IO::Path.sibling` about 2x as fast [a5eb1d4a]
+ Make `IO::Path.succ` and `IO::Path.pred` about 3x as fast [26b9f388][7238b094]
+ Make `IO::Path.parent` about 2.7x as fast [71cb0c56]
+ Make `IO::Path.parent(N)` about 2x as fast [f93ce875]
+ Make `IO::Path.child` about 1.4x as fast [f5b2c240]
+ Make `IO::Path.add` about 1.25x as fast [718d305b]
+ Make `IO::Path.dir` between 1.5x and 2.2x as fast [b63976a8]
[6b22c1eb][7691742a][9b9d9f64]
+ Make `IO::Path.is-absolute` a bit faster [fc88b9c2][bd7fcb28]
+ Make `IO::Path.spurt` up to 35% faster [7571f65a]
+ Make `IO::Path.slurp` up to 4.7x as fast [d03fa4b0][cde948ae][36d89cf6]
+ Make `slurp` routine up to 40% faster [f3baa389][fc3e1aea]
+ Make `spurt` routine a few % faster [da5825e6]
+ Make `Str.Numeric` about 4.3x as fast [a0e58412]
+ Make `.IO` method and `IO::Path.new` about 2x as fast [2a88990b]
+ Make `IO::Spec.curupdir` about 25% faster [6a0eaabd][16d93e26]
+ Make `"42".Int` about 4.3x faster [3ee1777a]
+ Reduce overhead of `Code.ACCEPTS(value)` by 20% [2eec62fe]
+ Make `so` and `not` routines faster [d8c26500][8a3c36f8][5c93ddac][cb69cfce]
+ Optimize symbol lookup [c5f5d7ee][dc6594d6][5d61b3d0]
+ Prevent `$*OUT` lookup for each eigenstate of Junction when calling `print` or `put` [4297cb05]
+ Make `printf` routine up to 5% faster [e46d4590]
+ Streamline variable `is` and `of` handling [5561669b]
+ Make `Hash.sort` a tiny bit faster [cd617248]
+ Various small optimizations [a9074977][b50fd8b5][65e17c40]
+ Internal:
+ Set up CI with Azure Pipelines [ae07d685][43213e49][55529de1]
[78fe25b8][42c37997][4085cfdc][5b4faed3][5587574e][fce783a1][adfa192b]
+ Fix `main-version.nqp` dependencies [b71cb3ae]
+ Improve `say`, `put`, `print`, `note` methods of `IO::Handle` [7a902b5e]
[88d98225][627b39b8][438c1d2f][483cac3a][2b38666f]
+ Simplify `Shaped1Array.reverse` [de173a18]
+ Simplify `EVAL(:check)` code [afe85110]
+ Rework part of `Match` internals [0a84aa7f]
+ Simplify `Kernel.signals` using `Signal` values [5644c709]
+ Simplify `Grammar.parse` code [f10e5bce][8be24067][1402c1d1]
+ Allow debuggers for Rakudo to be specified by environment variables [48e073e2]
+ Default to using egdb when possible in rakudo-gdb-m which covers OpenBSD developer environments [b01b0120]
+ Introduce INTERPOLATE [417a591a][777e7b65][3f9f23a9][638517da][05907227]
+ Various internal improvements to the code base [ef0c457b][e71d3cb0]
[37533ee6][b3d933b4][4afaab73][3796405b][17bf5d5f][d9defb6c][2aac854f]
[799d627a][a56e62de][c1decf2a][a69465a7][26d88b9e][44b27019][95f7d34e]
[b5bf1bf4][285717a0][21c3ef82][4103a309][a616fe57][e645ff6a][ea8c04db]
[ad9b9f4f][9942ccc0][1c94538e][9f73351b][e9f80357][a431968e][519a5726]
[4ba70b7a][496e9166][d984e7c2][bf01f845][da9943a4][150af9a2][6f459456]
[92d01836][98dec90d][792a0f00][902401b7][4d1ef59e][2bfaab6c]
+ Update `INSTALL.txt` for the latest changes [8bb0235b][e1db95e8][bd5e19e4]
+ Various small improvements to compiler's user-facing documentation [dac68b27]
[302bc8ed][736ce715][10a8f6a2][627ffd42][3d6756b3][eab17e7a][18ecb604]
[2cff6dd9][77b2f2a5][197bba98][621577b4][d09cf9d8][8a8f62ca][a79efdef]
[797c96de][8c3f013d][11afa53b][fbb0abc1]
+ Various changes to documentation related to renaming process
[6ead4ce1][142d03be][e0384ee0][0ccd4cfe][4d6031f6][d53a3b1a][de6ebd4e][b0032395]
New in 2020.05.1:
+ Fixes:
+ Fix relocatable builds on the moar backend [46648b9b]
New in 2020.05:
+ Fixes:
+ Decontainerize attribute default values [d71761e3]
+ Fix `Cool` catchers for some `Str` methods
[a91d7d79][63a72659][af8788b4]
+ Update some internal documentation to use Raku name [f2cc20c6]
+ Add `Cool.contains(Regex)` candidates [c3c1e8c9]
+ Make format of all `QuantHash`'s classes `.gist` uniform [cf01f7a2]
+ `Method` objects that don't have `*%_` in their signature, `.gist` ok [ac5f353a]
+ Fix `DateTime` default stringification when the second is 0 [95de7859]
+ Make `Blob/Buf.list` non-lazy so they can be used in hypers [6d146b56][291aa580]
+ Remove unnecessary parentheses from `Pair.raku` [35a827af]
+ `IO::CatHandle.slurp` did not accept `:bin` parameter [42c4c3fc]
+ Fixed some cases where `IO::Handle.slurp` was used without `:close` [efab398e]
+ `run` routine with `out` named parameter being a `Handle` and `merge` flag
enabled now writes both stdout and stderr to the handle [1f838791]
+ A single whenever react based on a signal is now serialized by default [8aa25bfb]
+ `&cmp-ok` subroutine of `Test` module now works with objects without support for methods [fc0f78d5]
+ Ensure meta-ops respect user-defined chain ops [ac012f18]
+ Fix exception when mixing in roles that use `is built` at runtime [4c026ab8]
+ Fix inconsistent match result when using a code block in a regex [1e0474d4]
+ Fix error message related to `nextcallee` subroutine [136087e7]
+ Fix regression in sequence operator [0a6456a4]
+ Fix reflection for . twigilled parameters [296fbcf4]
+ Fix `Parameter.raku` with `OUTER` default values [87d2ff95][2f8538ed]
+ Fix `Capture.WHICH` for subclasses of `Capture` [8808401c]
+ Fix `Capture.EXISTS-KEY` for some `Capture` values [2d18cdeb]
+ Make (1..-Inf).reverse) work as intended [3983b4f8]
+ Make (foo .. foo).reverse correctly [c588323e]
+ Properly throw an exception on attempts to add a key to an immutable `Map` [1a10b63a]
+ `INPUTRC` environment variable is now checked for a Readline config when using REPL [61a48362]
+ Add missing label support for some loop constructs [66a2250a]
+ Make `Real.sign` always return an `Int` [42a303ec]
+ Result of `reverse` called on a `List` value with holes returns a
reverse of the list with `Nil` in place of holes instead of `Mu` now [e9468d6a][ca49c153]
+ Various small JVM backend related improvements [945a4d81][b4819e7c][f6f8ac0d][25a1929c][717b3266]
+ Additions:
+ Added `docs/IN-MEMORIAM.md` to commemorate departed contributors [9b6d89b1][f9f3b662][170add26]
+ Implement support of environment variables `RAKULIB` and `RAKUDOLIB`
to eventually replace deprecated `PERL6LIB`
[b3bb0d38][cc165a05][1fd660a9][00c0dec3][be9bb4b1][30a3186b][e8f7eb56][61124c35][013b47d2]
+ Implement support for environment variables `RAKU_TEST_DIE_ON_FAIL` and `RAKU_TEST_TIMES`
to replace `PERL6_TEST_DIE_ON_FAIL` and `PERL6_TEST_TIMES` [30e7a67c][afff3b0b]
+ Show timing information when installing core modules in build process [58e61356]
+ Add multiple needles feature to `Str.index/rindex` [4cec44a3][cf02c2e9]
+ `dd` can now also handle `BOOTContext` objects [8b70bfb8]
+ `Str` now has `.Date` and `DateTime` coercers [d95d218f]
+ `Date.yyyy-mm-dd` now takes a separator parameter, defaulting to `-` [3017cfea]
+ Added `Date.dd-mm-yyyy` and `Date.mm-dd-yyyy` methods [70ac9b72]
+ `IterationBuffer` now has a `.Slip` method for easier iteration [d68fe5eb]
+ Add `is implementation-detail` trait and hide exposed internals with it
[12a33637][09c1b05a][2ae9fdf0][20c978e6][78371bb0][1d57d17d][0c36feb0]
+ Introduce `^...` and `^...^` sequence generator operators [371590fa][bbed2255]
+ Add `Date.last-date-in-month` and `Date.first-day-in-month` methods [2fb7198f][20ce5560]
+ Add a `parents` metamethod to `Metamodel::ParametricRoleGroupHOW` [8dcfa849]
+ Removals:
+ Remove undocumented `Seq.new-consumed` [0f97a7f5]
+ Move implementation detail to internals [aed658d6][b639221d][86bc3b3d]
[75f34c52][d3385e73][73c7ded2][9429728c][509a7f6e][439b8609][e152aa6a][ebb29499]
+ Turn `infix:<…>` and `infix:<…^>` into aliases [bd4e119d]
+ Build system:
+ Fix CircleCI configuration [efba9639][ffcc6198]
+ Be more robust when working with git reference directories that has spaces in path
[3ec58489][e6044dfc][2f0dd45e]
+ Move prebuild archive scripts to scripts folder [e1114208]
+ Change update-submodules.pl to not use the shell at all [0ae8b4e0]
+ Fix installation of perl6 aliases [aeb418a5]
+ Move RUN_CLEAN_TARGET_FILES to a separate script [ffad1024]
+ Fix building non-moar backends on Windows [47650ebe]
+ Fix `--nqp-home` Configure.pl parameter [94fdb3d5][59fe24bc]
+ Make timing based performance tests opt in via `RAKUDO_RUN_TIMING_TESTS` environment variable [31ffc2bd]
+ Efficiency:
+ Speed up compilation of large projects [c9092582][6956c063]
+ Make `raku -n` as fast as manual iteration with `.IO.lines` [be9c139f][5cad8fee]
+ Improve behavior of default `ThreadPoolScheduler`,
increasing efficiency of multithreaded applications [77a2201e][750abe03]
+ Make method lookup with the handles trait 13% faster in certain cases [af594925]
+ Simplify "previous setting" logic [9f4a0f1c]
+ Make creation of `Failure` objects faster [79ca396e]
+ Make default `DateTime` stringification about 12% faster [0e872356][d95141ed]
+ Make all `IO::Path` filetest methods a few percent faster [76c20d28][355b520b][bd9d7c1c]
+ Make `IO::Path.mode` about 14x as fast [a093b7fa]
+ Make `Date.yyyy-mm-dd` about 250x as fast [3017cfea][f9ecf6e8]
+ Make accessing native shaped arrays about 15x faster [80f2aebf]
+ Make `Seq.Numeric` and `Seq.Int` slightly faster [b7b9358f]
+ Make a number of traits around 2% faster [4bbe308b]
+ Make a minor optimization to a bunch of STORE methods [a4fbbfa3]
+ Make `Capture.raku` 45% faster [5baa645b][d6298edc]
+ Make `Capture.WHICH` 60% faster [688f6710]
+ Make `Capture.AT-KEY` 2% faster [22c0a53d]
+ Make `push(@a, foo)` about 20x as fast [385ab4cf]
+ Make `append(@a, foo)` about 20x as fast [b98d2e00][1e4c7361]
+ Make `unshift(@a, foo)` about 20x as fast [6541775c]
+ Make `prepend(@a, foo)` about 20x as fast [9b735b76]
+ Make `Num.Rat` faster [f987cdb0][2d1ba433]
+ Make `Date.succ` faster for days 28-31 [285da3b8]
+ Make `Str.tc` about 10% faster [5610416c]
+ Make `Supply.grab` a few percent faster [e0336d52]
+ `...` (SEQUENCE) optimizations [fc8c8281][935ee309][08545a33][d2ed7faa][fbf54e17][0fba27d7]
[8fe30b9c][58fa99b2][cf6177ef][75c6ac34][500dc662][9286def3][13559242][99cb2fa2]
+ CompUnit::* optimizations [1dbb227c][0249f23e][28bd4247][b4cdccc1][cb7be78c][638c8955]
[c9d9a096][83fed554][2cc509c0][f1cdfb18][9d1b3f63][db6d2306][7c9951cc][83ddbaba]
[196db682][551c157f][07643d37][e56eddd8][20d3713c][b4d32c97][8ac2eecc][4e3e937b]
[6c7ffbdb][17c45d89][89503809][747a35ba][dedb7444][cbd75f72][81ac37f8][f54ad732]
[fae4d45d][d55146bd][e33fe878][b712789e][e756e622][199888ab][95e8906c][5271d122]
[f48b80c3][954e545c][ef2d7d84][778ce379][1a0cc947][11b186c8][dec40dc4][d38d76d5]
[f31bd5ba][e1af7407][33fc8950][a62da301][0736bf7d][437f9f46][6e95e1b0][6723d3ad]
[24fd100d][b3f7ad2f][c29a2bf0][b07224f6][7de42d4b][7b5e1434][68cadd79][f980898f]
[bec2ac4c][d66068c1][31197cd3][2899d737][d4231b1f][c2a1ee95][6d3f1c12][dceef85f]
[859d8f04][5ea1c346][2a58eb39][3d6e8d6d][ea4bdf94][38a0eb82][2075489e][13ca677e]
+ Be better at inlining `any` Junction [76923bee]
+ Optimize symbol lookup at compunit creation time [35832540][75da4cfe]
+ Numerous small optimizations and improvements [014d493a][776ef800][87226876]
[49d1dcd3][d8366ff4][61b5e488][6793713b][2edce41b][d0e427dc][0b414c0a][88a9a36e]
[604085fb][f70d95e2][db6048e3][a66f5c29][80be7d19][a5535b2a][0d5f87cc][3c83ce75]
[3aaca26a][43c7e96f][dc7a7962][e78483ed][7bbf12d3][b9b46c0a][b0a720cb][fcda03ba]
[4339073b][cfc6cc3c][33f41966][0aa8b2a8][9cabea01][9b503292][6bb87106]
+ Internal:
+ Update Appveyor perl requirement on Windows to 5.22 [370956b9]
+ Add optional "lazy" flag to `Rakudo::Iterator.SequentialIterators` [101a80f2]
+ Give `IterationBuffer` its own `iterator` method [2b49d685]
+ Adopt MoarVM-provided `value_desc_cont` [4221f822]
+ Add `Rakudo::Iterator.AllButLast` iterator [77defa77][aa5154e0]
+ Add `Rakudo::Iterator.AllButFirst` iterator [4fe18a48]
+ Add and use `Rakudo::Iterator.ReifiedListReverse` iterator
[3ca38022][270cc275][cea0fc78][4025ca43][447b396f]
+ Add `Exception.message` stub [2e605520]
+ Make `Mu.iterator` use `Rakudo::Iterator.OneValue` [65fdea7d]
+ Make `Rakudo:Iterator.OneValue` a `PredictiveIterator` [ec50b961]
+ Rename `SlippyIterator` to `Rakudo::SlippyIterator` [50f13f03][fa3c0dba]
+ Don't use named variables between internal methods [92750571]
+ Implement `VM.request-garbage-collection` [e223be56]
+ `Rakudo::Iterator.ReifiedList` now returns a `PredictiveIterator` [063bfa05]
Update ruby-cucumber-gherkin to 15.0.2.
15.0.0 - 2020-08-07
Changed
* Update messages to 13.0.1
14.2.0 - 2020-07-31
Changed
* Update messages to 12.4.0
14.1.0 - 2020-07-29
Changed
* Update messages to 12.3.2
14.0.2 - 2020-06-29
Fixed
* [JavaScript] Actually merge #1094 - it wasn't done in 14.0.1
* [JavaScript] Throw NoSuchLanguageException when language is unknown #1102 (#1102 [mpkorstanje])
14.0.1 - 2020-06-29
Fixed
* [JavaScript] Remove test code from exports (#1094 aslakhellesoy)
14.0.0 - 2020-06-27
Added
* [Java] Enable consumers to find our version at runtime using clazz.getPackage().getImplementationVersion() by upgrading to cucumber-parent:2.1.0 (#976 aslakhellesoy)
* [Java/Ruby/Go/Javascript] Add tests to ensure we do not delete whitespace inside a table cell (#769 [mpkorstanje] [vincent-psarga])
Changed
* Upgrade to messages 12.2.0
* [Ruby] gherkin-query: if a feature file is empty, do not update anything. (cucumber-ruby#1427 [vincent-psarga])
* [JavaScript] Change gherkinQuery API:
* getPickleIds: now takes a URI and an astNodeId to find the pickle ids instead of a line number
* getPickleStepIds: now takes an astNodeId parameter instead of a URL and a line number to locate the pickle step id
* expose parse and parseAndCompile utilities
* Fixed Estonian translation of "Rule" (#973 [ookull])
* Fixed Estonian translation of "Scenario Outline" (#972 [ookull])
Fixed
* [JavaScript] Update gherkin-languages.json, which hadn't been updated for a few versions (not sure for how long!)
* [Ruby] Fix the default constructor of Gherkin::Parser (#1074 aslakhellesoy)
* [Ruby] Use require_relative for internal requires (#1010 [deivid-rodriguez])
* [Javascript] Escape regex characters in table header (#1077 [mpkorstanje])