From ffdca368f523d6c9119501358595ea487b4f784b Mon Sep 17 00:00:00 2001 From: ARATA Mizuki Date: Sat, 16 Sep 2023 15:33:29 +0900 Subject: [PATCH] Split non-standard parts of basis.mlb to their own MLB files --- doc/DelimitedContinuations.md | 2 + doc/JavaScriptInterface.md | 2 +- doc/LuaInterface.md | 2 +- lib/lunarml/ml/basis/basis.mlb | 138 +++++++++++++++++- lib/lunarml/ml/basis/javascript.mlb | 5 + lib/lunarml/ml/basis/lua.mlb | 5 + lib/lunarml/ml/basis/lunarml-prim.mlb | 7 + lib/lunarml/ml/basis/lunarml.mlb | 5 + ...is-js-common.mlb => sources-js-common.mlb} | 18 +-- .../{basis-js-cps.mlb => sources-js-cps.mlb} | 12 +- .../ml/basis/{basis-js.mlb => sources-js.mlb} | 12 +- .../basis/{basis-lua.mlb => sources-lua.mlb} | 18 +-- .../{basis-luajit.mlb => sources-luajit.mlb} | 16 +- lib/lunarml/ml/basis/sources.mlb | 1 + lib/lunarml/ml/basis/unsafe.mlb | 7 + test/Makefile | 16 +- test/cps/should_run/exception.mlb | 3 + test/cps/should_run/nondet.mlb | 3 + test/cps/should_run/product.mlb | 3 + test/lua/should_run/nil_in_vector.mlb | 3 + 20 files changed, 220 insertions(+), 58 deletions(-) create mode 100644 lib/lunarml/ml/basis/javascript.mlb create mode 100644 lib/lunarml/ml/basis/lua.mlb create mode 100644 lib/lunarml/ml/basis/lunarml-prim.mlb create mode 100644 lib/lunarml/ml/basis/lunarml.mlb rename lib/lunarml/ml/basis/{basis-js-common.mlb => sources-js-common.mlb} (91%) rename lib/lunarml/ml/basis/{basis-js-cps.mlb => sources-js-cps.mlb} (90%) rename lib/lunarml/ml/basis/{basis-js.mlb => sources-js.mlb} (90%) rename lib/lunarml/ml/basis/{basis-lua.mlb => sources-lua.mlb} (91%) rename lib/lunarml/ml/basis/{basis-luajit.mlb => sources-luajit.mlb} (92%) create mode 100644 lib/lunarml/ml/basis/sources.mlb create mode 100644 lib/lunarml/ml/basis/unsafe.mlb create mode 100644 test/cps/should_run/exception.mlb create mode 100644 test/cps/should_run/nondet.mlb create mode 100644 test/cps/should_run/product.mlb create mode 100644 test/lua/should_run/nil_in_vector.mlb diff --git a/doc/DelimitedContinuations.md b/doc/DelimitedContinuations.md index 0acc3b9b..85d0a41f 100644 --- a/doc/DelimitedContinuations.md +++ b/doc/DelimitedContinuations.md @@ -4,6 +4,8 @@ Availability: JS-CPS backend (multi-shot). Lua-continuations backend (one-shot). Status: Experimental. +Delimited continuations are accessible via `LunarML.DelimCont` structure in `$(SML_LIB)/basis/lunarml.mlb`. + ```sml structure LunarML : sig ... diff --git a/doc/JavaScriptInterface.md b/doc/JavaScriptInterface.md index bd3e5e82..5653fcbe 100644 --- a/doc/JavaScriptInterface.md +++ b/doc/JavaScriptInterface.md @@ -2,7 +2,7 @@ ## JavaScript API -JavaScript features are accessible via `JavaScript` structure. +JavaScript features are accessible via `JavaScript` structure in `$(SML_LIB)/basis/javascript.mlb`. ```sml structure JavaScript : sig diff --git a/doc/LuaInterface.md b/doc/LuaInterface.md index 7f6174cb..ac82c2e2 100644 --- a/doc/LuaInterface.md +++ b/doc/LuaInterface.md @@ -2,7 +2,7 @@ ## Lua API -Lua features are accessible via `Lua` structure. +Lua features are accessible via `Lua` structure in `$(SML_LIB)/basis/lua.mlb`. ```sml structure Lua : sig diff --git a/lib/lunarml/ml/basis/basis.mlb b/lib/lunarml/ml/basis/basis.mlb index 2965d978..535f95de 100644 --- a/lib/lunarml/ml/basis/basis.mlb +++ b/lib/lunarml/ml/basis/basis.mlb @@ -1 +1,137 @@ -basis-$(TARGET_LANG).mlb +lunarml-prim.mlb +local +sources.mlb +in +signature ARRAY +signature ARRAY_SLICE +signature BOOL +signature BYTE +signature CHAR +signature DATE +signature INTEGER +signature INT_INF +signature LIST +signature LIST_PAIR +signature MATH +signature MONO_ARRAY +signature MONO_ARRAY_SLICE +signature MONO_VECTOR +signature MONO_VECTOR_SLICE +signature OPTION +signature PACK_WORD +signature REAL +signature STRING +signature STRING_CVT +signature SUBSTRING +signature TEXT +signature TIME +signature TIMER +signature VECTOR +signature VECTOR_SLICE +signature WORD +structure Array +structure ArraySlice +structure Bool +structure BoolArray +structure BoolArraySlice +structure BoolVector +structure BoolVectorSlice +structure Byte +structure Char +structure CharArray +structure CharArraySlice +structure CharVector +structure CommandLine +structure Date +structure General +structure IEEEReal +structure IO +structure Int +structure Int16 +structure Int16Array +structure Int16ArraySlice +structure Int16Vector +structure Int16VectorSlice +structure Int32 +structure Int32Array +structure Int32ArraySlice +structure Int32Vector +structure Int32VectorSlice +structure Int54 +structure Int64 +structure Int64Array +structure Int64ArraySlice +structure Int64Vector +structure Int64VectorSlice +structure Int8 +structure Int8Array +structure Int8ArraySlice +structure Int8Vector +structure Int8VectorSlice +structure IntInf +structure LargeInt +structure LargeReal +structure LargeWord +structure List +structure ListPair +structure Math +structure OS +structure Option +structure PackWord16Big +structure PackWord16Little +structure PackWord32Big +structure PackWord32Little +structure PackWord64Big +structure PackWord64Little +structure PackWord8Big +structure PackWord8Little +structure Position +structure Real +structure RealArray +structure RealArraySlice +structure RealVector +structure RealVectorSlice +structure String +structure StringCvt +structure Substring +structure Text +structure TextIO +structure Time +structure Timer +structure Vector +structure VectorSlice +structure WideChar +structure WideCharArray +structure WideCharArraySlice +structure WideCharVector +structure WideCharVectorSlice +structure WideString +structure WideSubstring +structure WideText +structure Word +structure Word16 +structure Word16Array +structure Word16ArraySlice +structure Word16Vector +structure Word16VectorSlice +structure Word32 +structure Word32Array +structure Word32ArraySlice +structure Word32Vector +structure Word32VectorSlice +structure Word64 +structure Word64Array +structure Word64ArraySlice +structure Word64Vector +structure Word64VectorSlice +structure Word8 +structure Word8Vector +structure Word8VectorSlice +structure Word8Array +structure Word8ArraySlice +structure WordArray +structure WordArraySlice +structure WordVector +structure WordVectorSlice +top-level.sml +end diff --git a/lib/lunarml/ml/basis/javascript.mlb b/lib/lunarml/ml/basis/javascript.mlb new file mode 100644 index 00000000..e3d9e612 --- /dev/null +++ b/lib/lunarml/ml/basis/javascript.mlb @@ -0,0 +1,5 @@ +local +sources.mlb +in +structure JavaScript +end diff --git a/lib/lunarml/ml/basis/lua.mlb b/lib/lunarml/ml/basis/lua.mlb new file mode 100644 index 00000000..8ff6b282 --- /dev/null +++ b/lib/lunarml/ml/basis/lua.mlb @@ -0,0 +1,5 @@ +local +sources.mlb +in +structure Lua +end diff --git a/lib/lunarml/ml/basis/lunarml-prim.mlb b/lib/lunarml/ml/basis/lunarml-prim.mlb new file mode 100644 index 00000000..7c5d7dd0 --- /dev/null +++ b/lib/lunarml/ml/basis/lunarml-prim.mlb @@ -0,0 +1,7 @@ +infixes.sml +_prim +_primOverloads +ann "allowPrim true" "allowBindEqual true" "allowOverload true" in +prim.sml +equal.sml +end diff --git a/lib/lunarml/ml/basis/lunarml.mlb b/lib/lunarml/ml/basis/lunarml.mlb new file mode 100644 index 00000000..22ea557e --- /dev/null +++ b/lib/lunarml/ml/basis/lunarml.mlb @@ -0,0 +1,5 @@ +local +sources.mlb +in +structure LunarML +end diff --git a/lib/lunarml/ml/basis/basis-js-common.mlb b/lib/lunarml/ml/basis/sources-js-common.mlb similarity index 91% rename from lib/lunarml/ml/basis/basis-js-common.mlb rename to lib/lunarml/ml/basis/sources-js-common.mlb index 790f99b9..0c35960c 100644 --- a/lib/lunarml/ml/basis/basis-js-common.mlb +++ b/lib/lunarml/ml/basis/sources-js-common.mlb @@ -1,10 +1,4 @@ -infixes.sml -_prim -_primOverloads -ann "allowPrim true" "allowBindEqual true" "allowOverload true" in -prim.sml -equal.sml -end +lunarml-prim.mlb local ann "allowPrim true" "allowOverload true" "allowInfixingDot true" in general.sml @@ -89,14 +83,14 @@ signature STRING_CVT signature SUBSTRING signature TEXT signature TIME -signature UNSAFE_MONO_ARRAY (* extension; to be moved... *) -signature UNSAFE_MONO_VECTOR (* extension; to be moved... *) +signature UNSAFE_MONO_ARRAY (* extension *) +signature UNSAFE_MONO_VECTOR (* extension *) signature VECTOR signature VECTOR_SLICE signature WORD -structure Unsafe (* extension; to be moved... *) -structure JavaScript (* extension; to be moved... *) -structure LunarML (* extension; to be moved... *) +structure Unsafe (* extension *) +structure JavaScript (* extension *) +structure LunarML (* extension *) structure Array structure ArraySlice structure Bool diff --git a/lib/lunarml/ml/basis/basis-js-cps.mlb b/lib/lunarml/ml/basis/sources-js-cps.mlb similarity index 90% rename from lib/lunarml/ml/basis/basis-js-cps.mlb rename to lib/lunarml/ml/basis/sources-js-cps.mlb index e4e1baed..5151fe6b 100644 --- a/lib/lunarml/ml/basis/basis-js-cps.mlb +++ b/lib/lunarml/ml/basis/sources-js-cps.mlb @@ -1,4 +1,4 @@ -basis-js-common.mlb +sources-js-common.mlb local ann "allowPrim true" "allowOverload true" in delim-cont.sml @@ -33,14 +33,14 @@ signature SUBSTRING signature TEXT signature TIME signature TIMER -signature UNSAFE_MONO_ARRAY (* extension; to be moved... *) -signature UNSAFE_MONO_VECTOR (* extension; to be moved... *) +signature UNSAFE_MONO_ARRAY (* extension *) +signature UNSAFE_MONO_VECTOR (* extension *) signature VECTOR signature VECTOR_SLICE signature WORD -structure Unsafe (* extension; to be moved... *) -structure JavaScript (* extension; to be moved... *) -structure LunarML (* extension; to be moved... *) +structure Unsafe (* extension *) +structure JavaScript (* extension *) +structure LunarML (* extension *) structure Array structure ArraySlice structure Bool diff --git a/lib/lunarml/ml/basis/basis-js.mlb b/lib/lunarml/ml/basis/sources-js.mlb similarity index 90% rename from lib/lunarml/ml/basis/basis-js.mlb rename to lib/lunarml/ml/basis/sources-js.mlb index eeb2118d..4d20147c 100644 --- a/lib/lunarml/ml/basis/basis-js.mlb +++ b/lib/lunarml/ml/basis/sources-js.mlb @@ -1,4 +1,4 @@ -basis-js-common.mlb +sources-js-common.mlb local ann "allowPrim true" "allowOverload true" in js/javascript-callback.sml @@ -32,14 +32,14 @@ signature SUBSTRING signature TEXT signature TIME signature TIMER -signature UNSAFE_MONO_ARRAY (* extension; to be moved... *) -signature UNSAFE_MONO_VECTOR (* extension; to be moved... *) +signature UNSAFE_MONO_ARRAY (* extension *) +signature UNSAFE_MONO_VECTOR (* extension *) signature VECTOR signature VECTOR_SLICE signature WORD -structure Unsafe (* extension; to be moved... *) -structure JavaScript (* extension; to be moved... *) -structure LunarML (* extension; to be moved... *) +structure Unsafe (* extension *) +structure JavaScript (* extension *) +structure LunarML (* extension *) structure Array structure ArraySlice structure Bool diff --git a/lib/lunarml/ml/basis/basis-lua.mlb b/lib/lunarml/ml/basis/sources-lua.mlb similarity index 91% rename from lib/lunarml/ml/basis/basis-lua.mlb rename to lib/lunarml/ml/basis/sources-lua.mlb index f4d74e99..dc9f4598 100644 --- a/lib/lunarml/ml/basis/basis-lua.mlb +++ b/lib/lunarml/ml/basis/sources-lua.mlb @@ -1,10 +1,4 @@ -infixes.sml -_prim -_primOverloads -ann "allowPrim true" "allowBindEqual true" "allowOverload true" in -prim.sml -equal.sml -end +lunarml-prim.mlb local ann "allowPrim true" "allowOverload true" "allowInfixingDot true" in general.sml @@ -93,14 +87,14 @@ signature SUBSTRING signature TEXT signature TIME signature TIMER -signature UNSAFE_MONO_ARRAY (* extension; to be moved... *) -signature UNSAFE_MONO_VECTOR (* extension; to be moved... *) +signature UNSAFE_MONO_ARRAY (* extension *) +signature UNSAFE_MONO_VECTOR (* extension *) signature VECTOR signature VECTOR_SLICE signature WORD -structure Unsafe (* extension; to be moved... *) -structure Lua (* extension; to be moved... *) -structure LunarML (* extension; to be moved... *) +structure Unsafe (* extension *) +structure Lua (* extension *) +structure LunarML (* extension *) structure Array structure ArraySlice structure Bool diff --git a/lib/lunarml/ml/basis/basis-luajit.mlb b/lib/lunarml/ml/basis/sources-luajit.mlb similarity index 92% rename from lib/lunarml/ml/basis/basis-luajit.mlb rename to lib/lunarml/ml/basis/sources-luajit.mlb index ed183a91..be0dba8f 100644 --- a/lib/lunarml/ml/basis/basis-luajit.mlb +++ b/lib/lunarml/ml/basis/sources-luajit.mlb @@ -1,10 +1,4 @@ -infixes.sml -_prim -_primOverloads -ann "allowPrim true" "allowBindEqual true" "allowOverload true" in -prim.sml -equal.sml -end +lunarml-prim.mlb local ann "allowPrim true" "allowOverload true" "allowInfixingDot true" in general.sml @@ -91,13 +85,13 @@ signature SUBSTRING signature TEXT signature TIME signature TIMER -signature UNSAFE_MONO_ARRAY (* extension; to be moved... *) -signature UNSAFE_MONO_VECTOR (* extension; to be moved... *) +signature UNSAFE_MONO_ARRAY (* extension *) +signature UNSAFE_MONO_VECTOR (* extension *) signature VECTOR signature VECTOR_SLICE signature WORD -structure Unsafe (* extension; to be moved... *) -structure Lua (* extension; to be moved... *) +structure Unsafe (* extension *) +structure Lua (* extension *) structure Array structure ArraySlice structure Bool diff --git a/lib/lunarml/ml/basis/sources.mlb b/lib/lunarml/ml/basis/sources.mlb new file mode 100644 index 00000000..a605ba8a --- /dev/null +++ b/lib/lunarml/ml/basis/sources.mlb @@ -0,0 +1 @@ +sources-$(TARGET_LANG).mlb diff --git a/lib/lunarml/ml/basis/unsafe.mlb b/lib/lunarml/ml/basis/unsafe.mlb new file mode 100644 index 00000000..1c0220ca --- /dev/null +++ b/lib/lunarml/ml/basis/unsafe.mlb @@ -0,0 +1,7 @@ +local +sources.mlb +in +signature UNSAFE_MONO_ARRAY +signature UNSAFE_MONO_VECTOR +structure Unsafe +end diff --git a/test/Makefile b/test/Makefile index 39ab591d..e4836cc2 100644 --- a/test/Makefile +++ b/test/Makefile @@ -183,11 +183,11 @@ should_run += $(addprefix mlbasis/should_run/,\ ) # int-inf-factorial.sml ifeq ($(VARIANT), lua) -should_run += mlbasis/should_run/os-path.sml mlbasis/should_run/scan-real.sml lua/should_run/nil_in_vector.sml +should_run += mlbasis/should_run/os-path.sml mlbasis/should_run/scan-real.sml lua/should_run/nil_in_vector.mlb else ifeq ($(VARIANT), lua-continuations) -should_run += mlbasis/should_run/os-path.sml mlbasis/should_run/scan-real.sml lua/should_run/nil_in_vector.sml +should_run += mlbasis/should_run/os-path.sml mlbasis/should_run/scan-real.sml lua/should_run/nil_in_vector.mlb else ifeq ($(VARIANT), luajit) -should_run += mlbasis/should_run/os-path.sml mlbasis/should_run/scan-real.sml lua/should_run/nil_in_vector.sml +should_run += mlbasis/should_run/os-path.sml mlbasis/should_run/scan-real.sml lua/should_run/nil_in_vector.mlb endif should_compile += $(addprefix interface/should_compile/,\ INTEGER.sml \ @@ -234,14 +234,14 @@ should_compile += $(addprefix extension/should_compile/,\ ) ifeq ($(VARIANT), lua-continuations) should_run += $(addprefix cps/should_run/,\ - product.sml \ - exception.sml \ + product.mlb \ + exception.mlb \ ) else ifeq ($(VARIANT), nodejs-cps) should_run += $(addprefix cps/should_run/,\ - product.sml \ - nondet.sml \ - exception.sml \ + product.mlb \ + nondet.mlb \ + exception.mlb \ ) endif diff --git a/test/cps/should_run/exception.mlb b/test/cps/should_run/exception.mlb new file mode 100644 index 00000000..ceb9d850 --- /dev/null +++ b/test/cps/should_run/exception.mlb @@ -0,0 +1,3 @@ +$(SML_LIB)/basis/basis.mlb +$(SML_LIB)/basis/lunarml.mlb +exception.sml diff --git a/test/cps/should_run/nondet.mlb b/test/cps/should_run/nondet.mlb new file mode 100644 index 00000000..6cfb0bcd --- /dev/null +++ b/test/cps/should_run/nondet.mlb @@ -0,0 +1,3 @@ +$(SML_LIB)/basis/basis.mlb +$(SML_LIB)/basis/lunarml.mlb +nondet.sml diff --git a/test/cps/should_run/product.mlb b/test/cps/should_run/product.mlb new file mode 100644 index 00000000..b61d186f --- /dev/null +++ b/test/cps/should_run/product.mlb @@ -0,0 +1,3 @@ +$(SML_LIB)/basis/basis.mlb +$(SML_LIB)/basis/lunarml.mlb +product.sml diff --git a/test/lua/should_run/nil_in_vector.mlb b/test/lua/should_run/nil_in_vector.mlb new file mode 100644 index 00000000..c59b9563 --- /dev/null +++ b/test/lua/should_run/nil_in_vector.mlb @@ -0,0 +1,3 @@ +$(SML_LIB)/basis/basis.mlb +$(SML_LIB)/basis/lua.mlb +nil_in_vector.sml