Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scala 3.2.0 reveals "non-local return' defects #2822

Closed
LeeTibbert opened this issue Aug 31, 2022 · 16 comments · Fixed by #2948
Closed

Scala 3.2.0 reveals "non-local return' defects #2822

LeeTibbert opened this issue Aug 31, 2022 · 16 comments · Fixed by #2948

Comments

@LeeTibbert
Copy link
Contributor

LeeTibbert commented Aug 31, 2022

This is a placeholder. Something to peck away at whist waiting for CI jobs to complete.
Later: Scala 3.0 deprecated non-local returns (see Scala 3.0 docs) and announced that
they would be removed in some future release. Scala 3.2 is now more vocal about
letting people know that they are deprecated. Time passes, Life evolves.

So, yes, these are real.

Building SN itself with Scala 3.1.3 brought with it a set of warnings. I have
been meaning to take a run at them, but like black flies in June in Maine,
one gradually gets used to them.

Building with the new Scala 3.2.0 seems to have brought a rash
of new warnings.

[warn] -- Warning: /mnt/AthaBHdd1/lee49/DevoHdd1/scala_native/WorkSpace_1/2022/study_SN_Scala320_build_2022-08-31T1343-0400/javalib/src/main/scala/java/net/SocketHelpers.scala:174:8 
[warn] 174 |        return scala.Array.empty[String]
[warn]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[warn]     |Non local returns are no longer supported; use scala.util.control.NonLocalReturns instead

These are in javalib and not deep into the SN compiler so they look accessible. There are a bunch all of
the same type, so the same fix could be rolled out over a number of places.

The hard part is if the recommended fix scala.util.control.NonLocalReturns is available as far back
as Scala 2.11. Probably far easier to just restructure the code.

@WojciechMazur
Copy link
Contributor

I agree that restructuring the code would be the best solution right now. NonLocalReturns are deprecated in 3.2.0, but it's not yet agreed when this feature would be removed, probably in Scala 3.3 or 3.4, so probably in a span of 6-18 months.

The recommended fix is available only for Scala 3 - scala.util.control.NonLocalReturns is not available in Scala 2. However, Scala 2 uses internally the same mechanism using controlled exception handling. (using `scala.runtime.NonLocalReturnControl). One solution would involve creating a wrapper or a Scala2 only implementation of mentioned methods that can be used for both Scala2 and Scala3.

SN artifacts currently would be published using Scala 3.1.3 and that probably would not change until the first release of Scala LTS.

@LeeTibbert
Copy link
Contributor Author

@WojciechMazur Thank you for the timely and helpful response.

Whilst waiting for CI jobs to complete, I took the time to read up on 3.2.0
now giving a more direct warning about the Scala 3.0 deprecation of
Non-local returns.

Reading how they are implemented, I can understand why that deprecation
was done. Always hard taking things away from people. I think most
programmers with an assembly knowledge background thing of ret
return instructions as not free but trivially cheap. Not here.

Some people, not me, actually like and advocate the "return early, return often"
style of programming. Within the past two or three months I have seen not
one but two programming style guide from major corporations recommending/
requiring that.

Much as I dislike disturbing the slumber of code which is not exhibiting
problems, I think that restructuring as first choice is the way to proceed,
with using the new NonLocalReturnControl as last resort.

A number of the new 'non-local' are in java.net. I removed a few
(and avoided introducing another few from following existing practice)
in my IPv6 PR. I can peck away at InetAddress and kin.

I think it is possible to use SN's access to system C libraries to remove
and simplify a massive amount of code in that area. The need to
get rid of 'non-local return' may give me both motivation & cover for
doing that. I have held of under the "do not disturb the sleeping baby'
rubric. Now the baby is crying.

@LeeTibbert LeeTibbert changed the title Scala 3.2.0 seems to be creating new Warnings Scala 3.2.0 reveals "non-local return' defects Sep 1, 2022
@LeeTibbert
Copy link
Contributor Author

@WojciechMazur Is OK with you if I do these corrections in the 0.5.0 stream or would it be easier for you
to merge in the 0.4.x stream (or "do something, timely, and I will figure it out as needed").

So much of my recent work has been on breaking changes that my thoughts naturally go first to 0.5.0.
In theory, these should not be breaking (if I get out cleanly). However, when I am moving large chunks
of code around I always like to give them some time for introduced defects to become apparent through
use. Your call. Not urgent.

@WojciechMazur
Copy link
Contributor

Sure, it can be fixed in the 0.5.0 first, then we can backport it to the 0.4.x

@LeeTibbert
Copy link
Contributor Author

Thank you. That gets me moving. This is a background task, so progress may be slow.

@LeeTibbert
Copy link
Contributor Author

LeeTibbert commented Sep 1, 2022

Asking before I leap:

Is it OK to use import scala.util.control.NonLocalReturns.* and associated language
constructs in javalib?

Scala.js did a sweep through their javalib to eliminate dependencies on Scala libraries.
For historical reasons, such dependencies are all over the place in Scala Native javalib.
There has been an attempt over the past few years to at least not introduce new such
dependencies.

I ask because even though Scala 3 NonLocalReturn looks like a language feature,
it might be implemented in a way which depends upon Scala libraries. Those Collections
and such are just so useful (and Java itself is so limited).

Thank you.

I got all of one line into fixing java.math.Primality before encountering this question.
I am having to write missing tests before I can even begin restructuring code.

cc: @ekrich Eric, this is FYI, since you have been the motivating advocate for ScalaOps, etc.

@LeeTibbert
Copy link
Contributor Author

To co-ordinate efforts and, hopefully, eliminate wasted work...

I am in the process of making extensive changes to javalib InetAddress*.scala and SocketHelpers.scala
for other reasons. A welcome byproduct of this work is that it should eliminate 30 or more non-local return
warnings.

LeeTibbert added a commit to LeeTibbert/scala-native-fork that referenced this issue Sep 25, 2022
@LeeTibbert
Copy link
Contributor Author

I am in the process of removing 20 or 30 'non-local return' warnings in javalib InetAddress.scala and friends,
well, mostly the friends.

I got tired of looking at the 'non-local return' warnings from other files. They made it hard for me
to tell if the files I was working on for other reasons had warnings. So I took a run at
removing them.

I hit the end of my leash pretty quickly. I want to document for others, including
myself in a few days time, what caused progress to halt.

I removed the warnings in StringTokenizer.scala and submitted a PR.

Primality.scala and URI.scala need either someone with more patience,
time, and energy that I, or the documented Big Hammer: import scala.util.control.NonLocalReturns.*

That is supposed to exist in Scala 3.2.0 and above.
It looks like the SN scala library is currently being built against Scala 3.1.3. I think I remember
that there was a reason why that is necessary at present.

So, my non-local return work in javalib is paused, as might similar work
in other sub-projects which require NonLocalReturns.

Other projects might have files which could be re-written to avoid
'returns`. Such a re-write is preferable, if it can be done in
economic time.

LeeTibbert added a commit to LeeTibbert/scala-native-fork that referenced this issue Oct 11, 2022
WojciechMazur pushed a commit that referenced this issue Oct 14, 2022
…ringTokenizer (#2868)

* Partial fix #2822: 0.4.x, 0.5.x: remove non-local returns from j.u.StringTokenizer

* Look Ma! No nonLocalReturn, no for-loop, no-var
WojciechMazur pushed a commit to WojciechMazur/scala-native that referenced this issue Oct 27, 2022
… from j.u.StringTokenizer (scala-native#2868)

* Partial fix scala-native#2822: 0.4.x, 0.5.x: remove non-local returns from j.u.StringTokenizer

* Look Ma! No nonLocalReturn, no for-loop, no-var
@LeeTibbert LeeTibbert reopened this Oct 27, 2022
@LeeTibbert
Copy link
Contributor Author

The merged PR was a partial fix, I believe there a large number of non-local return errors remaining.
I know of at least 20 (down from 50+ ) that happen to me each time I run tests on the javalib changes
I have in development.

@ekrich
Copy link
Member

ekrich commented Oct 27, 2022

Looks like Primality has removed non-local-returns in JS so maybe that is an easy get - URI could probably be re-ported as well - I could do those if needed.

@LeeTibbert
Copy link
Contributor Author

I had not seen that in Scala.js. I had thought I had looked there.
I do not want to sideline your promising & productive SN build work,
I could take a run at this. If only to the point of evaluating the
Scala.js solution.

scala.util.control.NonLocalReturns is not available before Scala 2.13.mumble, I think.

I was going to take a trial run at this, using the existing directories in javalib/src/main.

resources/
scala/
scala-2/
scala-2.11/
scala-2.12/
scala-2.13/
scala-3/

@LeeTibbert
Copy link
Contributor Author

I've ignored this one for months, saying bad words each time I ran my test. I've run
out of bad words to say.

@LeeTibbert
Copy link
Contributor Author

LeeTibbert commented Oct 27, 2022

Scala.js Primality.scala ports to SN 3.2.0 with only three(?) minor changes (missing ()).
Now to see if it passes tests (or if tests exist). The to see if SN 2.11.mumble likes it.

Spoke/wrote too early, do-while does not exist in SN 3.n. More hacking needed
in 2 or 3 places.

@ekrich
Copy link
Member

ekrich commented Oct 27, 2022

Some stuff of course we can't port and I also port the tests into the new location. I noticed in Primality they removed for where they had return otherwise for is ok and still there. Other than that, nothing else. That is what I recommend as well - had many in sconfig that I fixed early on in the Scala 3 process.

I think if there is a newer version in Scala.js, that is the ticket. If we have any in collections those porting efforts are harder.

Wow, so they have do-while - that is weird.

Edit: at least only one place - I think there focus was to free the Java lib so it perhaps happened earlier - That means you have to port it back?

@LeeTibbert
Copy link
Contributor Author

I have this ready to submit If that is OK by you. I would appreciate your checking the
changes. The reward is that you get to give me a bit of grief about using a var ;-) or
whatever non-passive-aggressive emoticon is allowed these days.

No test that I could fine in SN. While it is going thru CI, I may check Scala.js.

Sound like a plan, or do you have something ready to go? If the latter, I will stand down
if favor of that.

Any quick thoughts about URI. I could check Scala.js again.

LeeTibbert added a commit to LeeTibbert/scala-native-fork that referenced this issue Oct 27, 2022
@LeeTibbert
Copy link
Contributor Author

LeeTibbert commented Oct 27, 2022

I have run out of steam. Just to let others know what I have found on URI.scala

TL;DR; A robust fix requires the posixlib pton (presentation to network) call. Let C figure out
the parsing. To avoid introducing a posixlib dependency, I think I can hack the code so that
it will run on SN 3.n & 2.n on the same source. It will not be pretty or classroom demonstration
text, but it may be done and no longer kicking me/us whilst trying to get useful work done.

Longer story.

  1. Avoiding regex, runtime pig, even on never executed code.
  2. Nothing obviously portable from Scala.js in economic time.
  3. nothing obviously worth porting from Java to SN in Android Harmony luni.

My working goal is to not get rid of every eyesore return but only
the ones Scala 3.2.n is complaining about. I have work in other areas
of SN which will bring more benefit to the project.

ekrich pushed a commit to ekrich/scala-native that referenced this issue Oct 27, 2022
… from j.u.StringTokenizer (scala-native#2868)

* Partial fix scala-native#2822: 0.4.x, 0.5.x: remove non-local returns from j.u.StringTokenizer

* Look Ma! No nonLocalReturn, no for-loop, no-var
WojciechMazur pushed a commit to WojciechMazur/scala-native that referenced this issue Nov 1, 2022
WojciechMazur added a commit that referenced this issue Nov 9, 2022
* Update scalafmt to 3.5.9 (#2862)

* Update scalafmt to 3.5.9

* Use .scalafmt.conf version in script

* Remove quotes around version

(cherry picked from commit 87361fb)

* Adding missing `java.lang.Character` functionality (#2871)

* Added highSurrogate and lowSurrofate to java.lang.Character extraced from toSurrogate

* Added tests for highSurrogate and lowSurrogate

(cherry picked from commit 9a043fd)

* Update ReferenceQueue.scala (#2878)

Remove stub annotation import

(cherry picked from commit ff62fe4)

* Fix header definition of Commix WeakRefGreyList (#2890)

This addresses #2889

(cherry picked from commit ae27796)

* Update Scala versions in the builds (#2896)

* Add Scala 2.12.17 and Scala 2.13.10
* Update versions used in the CI
* Remove depereactions in nscplugin
* Update settings to handle deprecations
* Update scalalib patches
* Update partest files
* Increase timeout for multiarch builds
* Fix source incompatibilites for CommandLineParser
* Fix ambigious import (Scala 2.12.17 fix)
* Fix java release settings + disable source flag in tests
* Add missing partest junit test files
* Fix scripted tests config
* Disable failing BigIntTest in unoptimzied code

(cherry picked from commit 5438abb)

* Fix I2892: Implement sys/select pselect method (#2895)

(cherry picked from commit 427fea4)

* Update sbt to 1.7.2 (#2859)

* Update sbt to 1.7.2

(cherry picked from commit f509b38)

* Towards an independent javalib #1 (#2887)

* ScalaOps deprecations and removed methods

* Update UnixProcess

* Update WindowsProcess

* Update Collections from Scala.js

* Update AbstractMap and update ScalaOps

* Minor cosmetic updates

* Update File, remove unused private classes

* Remove from generated docs

* Remove compile errors and touch up toString

* Revert javalib deprecation setting

* Use scalaOps for a code simplification

* Add CollectionsTest and adapt for use

* Update AbstractMapTest, cosmetic only

* Move AssertThrows to new package

* Fix package for tests-ext

* Missed one bad substitution

(cherry picked from commit 48b3342)

* Fix #2891: posixlib spawn is now implemented. (#2894)

* Fix #2891: Implement posixlib spawn.scala

* Job is not done until the documentation is updated

* Delete include to keep Scala 2.12.16 happy

(cherry picked from commit ba9ab71)

* Port `j.u.ArrayDeque` from JSR 166 (#2898)

* Port `ArrayDeque` from JSR 166
* Port JSR 166 tests
* Add `Spliterator` interface

(cherry picked from commit 8df8499)

* Fix #1826: Add documentation for GC settings (#2910)

* Add info for None GC and more detail
* Fix #1826: Add documentation for GC settings

(cherry picked from commit 40a2330)

* Fix two sets of quality preception diminishing typos (#2914)

(cherry picked from commit faba287)

* Fix #2903: Avoid systematic checking of String integrity in IEEE754Helpers (#2907)

(cherry picked from commit 8d491c5)

* Fix #2921: Commix Heap.c now compies with Clang 15.0.3 (#2922)

(cherry picked from commit 8c9b652)

* Fix #2678: Provide examples of using NativeConfig (#2926)

(cherry picked from commit b617b3e)

* Fix #2927: Expunge non-JVM j.l.String#getValue() (#2928)

(cherry picked from commit a6109a6)

* Fix #I2925: A j.l.String constructor now yields immutable strings (#2929)

* Fix #I2925: A j.l.String constructor now generates immutable strings

* Add tests writted by David Bouyssie

(cherry picked from commit e4705a9)

* Don't unapply unecessary unboxing in lambdas (#2938)

* Add reproducer for issues 2880

* Make sure no unnecessary unboxing would be applied to primitive types

* Fix build to allow testing with Scala 2.11

* Revert "Fix build to allow testing with Scala 2.11"

This reverts commit 28fe4b8.

* Use experimantal mode in NIRcompiler for tests

* Replace ammonite script with scala-cli due to depreacted node.js runner in actions

(cherry picked from commit 207d2a7)

* Fix CI deprecation warnings and multiach builds (#2939)

* Update ations/cache to v3
* Replaced deprecated set-output commands
* Replace ammonite script with scala-cli due to depreacted node.js runner in actions
* Fix codegen bug for x86 architectures
* Refactor multiarch CI builds

(cherry picked from commit 864efc0)

* Fix #2943: Provide smarter & faster ProcessTest method (#2944)

(cherry picked from commit 2567ca9)

* Fix #2935: Ensure StringBuilder does not alter existing child Strings (#2936)

(cherry picked from commit 6cbe5cc)

* Add additional javalib String immutability tests (#2934)

(cherry picked from commit 3ab6eac)

* Enable the use of memcpy in IEEE754Helpers.bytesToCString (#2941)

* Some changes to enable use of memcpy in IEEE754Helpers.bytesToCString:
* replace while loop by `memcpy()` call
* throw NumberFormatException when String is empty (otherwise bytesToCString would throw ArrayIndexOutOfBoundsException)
* replace `var res = f(cStr, end)` by `val res = f(cStr, end)` (var not needed there)

* PR2941: use Ptr/Array conversion instead of Ptr arithmetic

(cherry picked from commit 317ff28)

* Optimize method `AbstractStringBuilder.append0(CharSequence, Int, Int)` (#2909)

* Optimize method `AbstractStringBuilder.append0(CharSequence, Int, Int)`

For reference, see equivalent Android libcore2 implementation (Apache 2 license) at:
https://android.googlesource.com/platform/libcore2/+/master/luni/src/main/java/java/lang/AbstractStringBuilder.java#151

* Revert last commit

* Optimize method `AbstractStringBuilder.append0(CharSequence, Int, Int)`

For reference, see equivalent Android libcore2 implementation (Apache 2 license) at:
https://android.googlesource.com/platform/libcore2/+/master/luni/src/main/java/java/lang/AbstractStringBuilder.java#151

* Update attribution to Android Luni in License.md

* Mention Android Luni

* Format code

* Fix NPE

* Changes relative to recent reviewer suggestions:
* replace `string.length()` by `string.count` to improve code understanding
* add unit tests in StringBufferTest.scala and StringBuilderTest.scala to ensure String immutability when doing SB.toString followed by SB modification

* Another commit (WIP for issue #2930)

(cherry picked from commit abf7dcf)

* Install ping for ProcessTest (#2945)

(cherry picked from commit 967c262)

* Fix build after cherry-picking

* Add Scala 3.2.1 to cross versions

* Fix encoding of `scala.Nothing` and `scala.Null` in type signatures (#2949)

* Reproduce issue #2858

* Fix encoding of phantom Scala types Nothing and Null

* Revert spurious changes

(cherry picked from commit 4ca323b)

* Remove non local returns from java.net.URI (#2951)

(cherry picked from commit 24c0039)

* Partial fix #2822: remove non-local returns from j.math.Primality (#2948)

(cherry picked from commit 57612fc)

* Remove deprecated assert idiom from five regex Tests (#2954)

* Remove deprecated assert idiom from two regex Tests

* Remove now unnecessary import of ThrowsHelper

* Remove deprecated assert from three more files

(cherry picked from commit e225653)

* Remove deprecated assert idiom from three java.lang Tests (#2953)

* Remove deprecated idiom from three java.lang Tests

* Remove now unnecessary import

(cherry picked from commit 4872c8b)

* Handle passing null for unboxed arguments of extern methods (#2950)

* Reproduce issue #2866

* Remove redundant build settings

* clenup

(cherry picked from commit 688c0ff)

* Report error when referencing local state in CFuncPtr (#2957)

* Report error upon usage of local state in CFuncPtr

* Fix failing tests and improve Scala 2.11 detections

(cherry picked from commit 6fb8352)

* Use unsafe array ops in `IEEE754Helpers` (#2960)

(cherry picked from commit b9c3d94)

* Fix lost information about value class instance (#2959)

* Reproduce issue `AnyVal` causes segfault #2712

* Make sure to recreate value class instance upon returning from lambda

(cherry picked from commit 584d5c2)

* Use `memcpy` in `{to,from}CString` (#2962)

* Use `memcpy` in `{to,from}CString`

* Guard against 0-length strings

* Fix empty string

* Reuse val

(cherry picked from commit 3150626)

* Remove shebang from scala-cli scripts due to failures in scalafmt (#2961)

* Remove sheband from scala-cli script

* update scalafmt overrides

* run scalafmt in non-interactive mode to limit ammont of logs

* Revert "run scalafmt in non-interactive mode to limit ammont of logs"

This reverts commit 421ace2.

* try fix fialing scalafmt test

(cherry picked from commit 76bec79)

* Encode main class name to match outputs of the compiler (#2955)

* Reproduce issue #2790

* Encode main class to match the outputs of the compiler

* Use scala.reflect.NameTransformer directly instead of reimplementing its logic

* Include package name encoding with exception of dots

* Make sure to create mirror class even if module is not a candidate for forwarders (match JVM codegen in scala compiler)

* Fix failing tools test

(cherry picked from commit 02f38ff)

* Partial fix #2963: Add missing SIGTERM & kin (#2964)

(cherry picked from commit 570e7b4)

* IEEE754Helpers optimizations: stackalloc instead of Zone + String.getBytes removal (#2965)

(cherry picked from commit d8fd989)

* Get rid of compilation warnings in tests and tools using Scala 3 (#2966)

* Extract UnboxEntry class from local scope of Hashtable.entrySet
* Extract local class from ArrayTest
* Reenable fatal warnigns for JVM tests, accept warnings when compiling native tests
* Fix handling deprecations in tools for Scala3
* Supress more warning in tests using Scala3

(cherry picked from commit 396c163)

* Fix #2902: Avoid Array allocation in ieee754tostring implementations (#2917)

* Fix #2902: Avoid Array allocation in ieee754tostring implementations

* Address reviewer suggestions in PR #2917:
* add comment to describe RESULT_STRING_MAX_LENGTH magic numbers
* add private method _xxxToCharsNoCheck() (e.g. isNaN) to avoid redundant checks when calling xxxToString()
* mark xxxToString() methods as @deprecated (note: this line is commented, as it is currently leading to errors in tests)
* add new unit tests in RyuDoubleTest and RyuFloatTest (not asked by the reviewer)
* add unit test in StringBuilderTest
* renamed and reorganize tests in StringBufferTest

* Remove unnecessary @noinline annotations

* Remove methods RyuDouble.doubleToString()/RyuFloat.floatToString() and put simplified versions in RyuDoubleTest/RyuFloatTest

* PR #2902 improvements:
* re-implement Double.toString/Float.toString in order to use RyuDouble.doubleToChars()/RyuFloat.floatToChars()
* simplify doubleToString()/floatToString() example wrappers in unit tests
* Add a note to highlight `result.length - offset >= RESULT_STRING_MAX_LENGTH`

(cherry picked from commit 9446fe6)

* Upgrade to 3.6.1 (#2968)

(cherry picked from commit 6bbcfed)

* CI: Add publishing flow and centralize release logic (#2967)

* Move building aggreation to Build, remove helper bash scripts
* Add publish flow
* add pgp passphrase
* Setup pgp key hanlding
* Set verionSchema for published projects

(cherry picked from commit bcdb50a)

* Fix #2893: Implement posixlib wait.scala (#2969)

* Fix #2893: Implement posixlib wait.scala
* Silly Rabbit! Do not run POSIX tests on Windows

(cherry picked from commit b9a220a)

* Remove -XX:MaxMetaspaceSize flag in scripted tests due to CI failures
A few java.net.Inet*Address fixes (#2877)

* Workaround missing gai_strerror() on Windows
* Re-work InetAddressTest isReachable to avoid Windows specific condition
* Explore getnameinfo() SEGV problem
* Better handling of numeric host storage in getAllByName()

(cherry picked from commit 75b2d6f)

Fix mima binary incompatibilites
Run scalafmt and fix workflows

* Don't allow to execute `runMain` task (#2971)

* Configurable Interflow optimizer  (#2819)

* make sure one method only done once; optimize processor.advance
* add inlineDepth and callersize into config
* add optimizerConfig
* make optimizer configuatable

Co-authored-by: yuly <yuly16@mails.tsinghua.edu.cn>
Co-authored-by: Wojciech Mazur <wojciech.mazur95@gmail.com>
(cherry picked from commit ca81ba6)

* Allow to link as dynamic library (#2145)

* Bootstrap support for building shared library in config
* Allow linking to shared library
* Add shared library scripted test
* Add compile time checks and tests
* Sync Scala 3 compiler plugin with Scala 2
* Generate dllexport modifiers for exported symbols on Windows
* Generate gxx personality for externs
* Restrict generation of dllexport only to Sig.Extern names
* Check if new compilation flags fix exception on mac
* Add mixxing isMac method in scirpted Platform
* Generate dylib constructor to init ScalaNative
* Set lib prefix for library outputs
* Allow to produce static libraries
* Build static library using llvm-ar directly
* Don't allow to generate '.ll' file with empty basename
* Upgrade al-cheb/configure-pagefile-action to remove CI warnings
Co-authored-by: adampauls <adpauls@microsoft.com>

(cherry picked from commit a4df2de)

* Add JDK9 constructors to `j.m.BigInteger` (#2974)

* Add JDK9 ctors to `j.m.BigInteger`
* Port ctor tests from Scala.js
* Add JDK9 tests
* Add error checking

(cherry picked from commit 1a3981d)

* Remove last two Scala 3.2 build warnings (#2977)

(cherry picked from commit 38cef3e)

* Implement `java.lang.Math.fma` (#2979)

* Fix JDK compliance CI tests

Co-authored-by: Eric K Richardson <ekrichardson@gmail.com>
Co-authored-by: Jamie Willis <J_mie@hotmail.co.uk>
Co-authored-by: Mark Hammons <markehammons@gmail.com>
Co-authored-by: LeeTibbert <LeeTibbert@users.noreply.github.com>
Co-authored-by: Arman Bilge <armanbilge@gmail.com>
Co-authored-by: David Bouyssié <6719996+david-bouyssie@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants