hydromatic / morel

Standard ML interpreter, with relational extensions, implemented in Java
Apache License 2.0
291 stars 15 forks source link

Support JDK 19 #199

Closed julianhyde closed 10 months ago

julianhyde commented 11 months ago

Support JDK 19.

When we run the tests on JDK 19, we get a number of differences in builtIn.sml:

[ERROR]   ScriptTest.test:98->checkRun:159 Files differ: /home/jhyde/dev/morel.3/target/test-classes/script/builtIn.smli /home/jhyde/dev/morel.3/target/test-classes/script/surefire/script/builtIn.smli
65c65
< >    maxFinite=3.4028235E38,min=fn,minNormalPos=1.17549435E~38,minPos=1.4E~45,
---
> >    maxFinite=3.4028235E38,min=fn,minNormalPos=1.1754944E~38,minPos=1.4E~45,
1413c1413
< > val it = 1.17549435E~38 : real
---
> > val it = 1.1754944E~38 : real
1948c1948
< >    (1.17549435E~38,{exp=~125,man=0.5},1.17549435E~38),
---
> >    (1.1754944E~38,{exp=~125,man=0.5},1.1754944E~38),
1980c1980
< >    (~1.23456E~6,~1.23456E~6),(1.4E~45,1.4E~45),(1.17549435E~38,1.17549435E~38),
---
> >    (~1.23456E~6,~1.23456E~6),(1.4E~45,1.4E~45),(1.1754944E~38,1.1754944E~38),
2062c2062
< > val it = 1.17549435E~38 : real
---
> > val it = 1.1754944E~38 : real
2263c2263
< >    (1.17549435E~38,SOME 1.17549435E~38),(3.4028235E38,SOME 3.4028235E38),
---
> >    (1.1754944E~38,SOME 1.1754944E~38),(3.4028235E38,SOME 3.4028235E38),
2337c2337
< > val it = "1.17549435E~38" : string
---
> > val it = "1.1754944E~38" : string
2339c2339
< > val it = "1.23456795E12" : string
---
> > val it = "1.234568E12" : string
2341c2341
< > val it = "1.23456791E11" : string
---
> > val it = "1.2345679E11" : string
2343c2343
< > val it = "1.23456788E10" : string
---
> > val it = "1.2345679E10" : string
2345c2345
< > val it = "1.23456792E8" : string
---
> > val it = "1.2345679E8" : string
2376c2376
< >    (1.17549435E~38,"1.17549435E~38"),(3.4028235E38,"3.4028235E38"),
---
> >    (1.1754944E~38,"1.1754944E~38"),(3.4028235E38,"3.4028235E38"),

This is because JDK-4511638 has been fixed in JDK 19.

To support JDK 19 we should update builtIn.smli to the correct output, and provide a compatibility mode for JDK 18 and earlier.