1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-11 13:55:55 +03:00
Commit Graph

3469 Commits

Author SHA1 Message Date
Joel Martin
9b5e56e93c ci.sh: include MAL_IMPL in log prefix if set. 2021-07-11 19:08:14 -05:00
mmcgill
8d875b00b0 [java-truffle] don't exclude graal-sdk dependency
I added the exclusion as a hack to work around classpath
issues after importing the project into Eclipse, but this
isn't the right thing to do.

It prevents compilation on JDKs other than Graal, which was
not my intent.
2021-07-11 17:52:32 -06:00
mmcgill
13bb041072 [java-truffle] mention native images in README 2021-07-11 17:52:32 -06:00
mmcgill
20b6677551 [java-truffle] tweaks for native image compilation
GraalVM native image compilation wasn't working due to
some missing @TruffleBoundary annotations, and calls
from partially evaluated code into methods that are
black-listed for runtime compilation.

With these changes, a GraalVM native image should be
producable from every Mal step.
2021-07-11 17:52:32 -06:00
mmcgill
593290d601 [java-truffle] update to GraalVM 21.1.0 2021-07-11 17:52:32 -06:00
Nicolas Boulenguez
4807c1b65f Print a stack trace for uncaught exceptions in self-hosting
An uncaught exception in the self-hosting implementation causes the
interpreter to display the EVALed ast for each EVAL level until the
exception, something similare to a stack trace.  This does not cost
much and may help a lot debugging the self-hosting step.

On the other hand, remove try* from step0 where it serves no useful
purpose.

Because of indentation level, this diff is better viewed with the git
-b command line option.
2021-07-11 17:48:13 -06:00
Nicolas Boulenguez
931971e047 Move step9 test of map as exceptions from deferrable to optional
Self-hosting is not requiring this anymore.
2021-07-11 17:40:43 -06:00
Nicolas Boulenguez
7a45dc5851 Add intermediate test for env/fn interaction
It should pass on existing implementations because it is a
prerequisite for an existing test, but small independent tests are
easyer to debug on new implementations.
2021-07-11 17:38:14 -06:00
Nicolas Boulenguez
894b24d892 haskell: fix and optional-test order of assignments in let* 2021-07-11 17:38:14 -06:00
Nicolas Boulenguez
c9c504ac20 haskell: make grammar readable as reference, misc
Split user functions and macros, merge user functions and core functions.

Add a flag triggering debugging info in EVAL.

Reserve mutable environments for REPL and let*.
Move env type declaration from Types to Env.
Check let* arguments only once.

Share more code between map constructions and key type checks.

Stop copying metadata when evaluating collections.

The strict variant of Data.Map.Strict is recommended for general use.

simplify printer.
2021-07-11 17:38:14 -06:00
Nicolas Boulenguez
003947b30f haskell: clarify reader
The grammar is not fully equivalent to the one in the process, but it
passes all tests.

I suggest that it becomes a formal/testable reference (are tabs
allowed as spaces? is "a~" valid? is "' a" valid?...).

As it is formuled here, it can directly be translated either to
another language with high-level parsers, or to a low-level language
as each production only switches after a look at the next input
character.

Another suggestion to simplify step1 is to make '{' a reader macro,
parsing "{a1 a2..}" into (hash-map a1 a2..).

The step1 tests should then accept both "(hash-map ..)" and "{a1..}",
but the process should in my opinion suggest the former as it moves
the complexity related to maps (language-dependent constructor,
argument count and type checking, reporting of such errors) form
reader.qx/step1 to core.qx/hash-map, where it has to be done later
anyway.
2021-07-11 17:38:14 -06:00
Rom DuPlain
cede778bd2 Fix reference to Makefile.impls in guide. 2021-07-10 12:20:37 -06:00
Søren Sjørup
00b3ce5fb4 Update guide.md 2021-07-10 12:16:37 -06:00
Søren Sjørup
9757259e92 Update guide.md 2021-07-05 13:01:04 -06:00
Nicolas Boulenguez
2bbec8ac43 Guide: formaly introduce map and vector literals
This addresses issue 452.
2021-05-31 10:52:42 -05:00
minor-change
b89a93ab57 fix small typos 2021-05-31 10:51:29 -05:00
Joel Martin
2684d33e95 README: count java-truffle as new implementation.
The java-truffle implementation is unique enough from the Java
implementation to be considered a unique implementation and not just
a new runtime mode.
2021-05-31 10:30:13 -05:00
Matt McGill
578df288f4 [java-truffle] add to main README.md 2021-05-31 10:28:04 -05:00
Matt McGill
1393145567 [java-truffle] add to IMPLS.yml 2021-05-31 10:28:04 -05:00
mmcgill
068512559e [java-truffle] propagate step B code thru C-E 2021-05-31 10:28:04 -05:00
mmcgill
66144016ee [java-truffle] fix compiler bailouts, finish README
Turns out I was missing the @ExplodeLoop annotation on the
execute methods of VectorNode and MapNode. These annotations
trigger loop unrolling. I had thought they were simply for
performance, but in fact they are necessary to ensure that
the correct specializations get selected for each of the
child nodes. Without them, we get compiler bailouts for
functions that include vector and map literals.
2021-05-31 10:28:04 -05:00
mmcgill
a54987cde7 [java-truffle] benchmarking and write-up 2021-05-31 10:28:04 -05:00
mmcgill
4f500ca996 [java-truffle] step E: inlining macros 2021-05-31 10:28:04 -05:00
mmcgill
22a18d3d7a [java-truffle] step D: cache symbol lookups 2021-05-31 10:28:04 -05:00
mmcgill
495e62e86d [java-truffle] step C: specialize symbol lookups 2021-05-31 10:28:04 -05:00
mmcgill
df22cf3b17 [java-truffle] step B: specialize function calls 2021-05-31 10:28:04 -05:00
mmcgill
d2069e9d7d [java-truffle] step A! 2021-05-31 10:28:04 -05:00
mmcgill
26d9e6e465 [java-truffle] step 9 2021-05-31 10:28:04 -05:00
mmcgill
146ecc8230 [java-truffle] step 8 2021-05-31 10:28:04 -05:00
mmcgill
0cde9e9c74 [java-truffle] step 7 2021-05-31 10:28:04 -05:00
mmcgill
32e57779cd [java-truffle] step 6 2021-05-31 10:28:04 -05:00
mmcgill
de183d6a16 [java-truffle] step 5 2021-05-31 10:28:04 -05:00
mmcgill
1c48eda8e1 [java-truffle] step 4 2021-05-31 10:28:04 -05:00
mmcgill
d6093cd075 [java-truffle] step 3 2021-05-31 10:28:04 -05:00
mmcgill
17890c2ac8 [java-truffle] step 2 2021-05-31 10:28:04 -05:00
mmcgill
03b4694231 [java-truffle] step 1 2021-05-31 10:28:04 -05:00
mmcgill
1f58e1123a [java-truffle] step 0 2021-05-31 10:28:04 -05:00
Joel Martin
6a6e2cf3bc README: add Discord link. 2021-05-27 13:19:39 -05:00
Joel Martin
27b761bd1e README: move from freenode to libera.chat. 2021-05-27 10:57:17 -05:00
Joel Martin
ebc74e8928 C.2: normalize README name. 2021-05-12 09:36:49 -05:00
Duncan Watts
87c86cbb4d tweaks for publication 2021-05-12 09:32:29 -05:00
Duncan Watts
fe6c42e303 renamed to c.2 and rebased onto latest master 2021-05-12 09:32:29 -05:00
Fabian
9d0331494e add SML to README 2021-05-02 17:35:40 -05:00
Fabian
7e015062a9 SML CI: add mosml, mlton, setup GitHub workflow 2021-05-02 17:35:40 -05:00
Fabian
9798302546 SML portability: use LargeInt for time-ms 2021-05-02 17:35:40 -05:00
Fabian
a2d6e66030 add SML README 2021-05-02 17:35:40 -05:00
Fabian
4594bff0e3 formatting 2021-05-02 17:35:40 -05:00
Fabian
f3e4237e8d remove unused function 2021-05-02 17:35:40 -05:00
Fabian
177940d90c Dockerize SML, make dist 2021-05-02 17:35:40 -05:00
Fabian
d000ac7398 SML: Step A 2021-05-02 17:35:40 -05:00