Skip to content

Instantly share code, notes, and snippets.

@leppie
Last active November 30, 2022 12:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leppie/2530f0257f7f4d1737e7cd5654f5f07b to your computer and use it in GitHub Desktop.
Save leppie/2530f0257f7f4d1737e7cd5654f5f07b to your computer and use it in GitHub Desktop.
IronScheme bench runtimes precompiled JIT testing

Conversation

https://twitter.com/terrajobst/status/1562179020027965446

https://twitter.com/leppie/status/1562196732418482176

Source

(library (foo2)
  (export run ack fib tak)
  (import 
    (except (ironscheme) define + - < = time fx+ fx- fx<? fx=?) 
    (ironscheme typed core) 
    (ironscheme syntax shorthand) 
    (only (ironscheme datetime) measure)
    (rename (only (ironscheme typed fixnums) fx+ fx- fx<? fx=?)
        (fx+   +)
        (fx-   -)
        (fx<?  <)
        (fx=?  =)))

  (define-syntax-rule (define (name arg ...) body ...)
    (define: (name (arg : fixnum) ... -> fixnum)
        body ...))
      
  (define-syntax-rule (time expr)
    (measure 1000 expr))

  (define (ack m n)
    (cond
      [(= m 0) (+ n 1)]
      [(= n 0) (ack (- m 1) 1)]
      [else (ack (- m 1) (ack m (- n 1)))]))
          
  (define (fib n)
    (if (< n 2)
        n
        (+ (fib (- n 1)) (fib (- n 2)))))

  (define (tak x y z)
    (if (not (< y x))
        z
        (tak (tak (- x 1) y z)
             (tak (- y 1) z x)
             (tak (- z 1) x y))))      
    
  (define (run)
    (ack 3 1)
    (time (ack 3 10))
    (fib 10)
    (time (fib 35))
    (tak 18 12 6)
    (time (tak 22 17 6))
    0))

Command line (bench.cmd)

@prompt $G
@cls

echo (import (foo2)) (run) | IronScheme.Console32-v2.exe --logo
echo (import (foo2)) (run) | IronScheme.Console-v2.exe --logo
echo (import (foo2)) (run) | IronScheme.Console32-v4.exe --logo
echo (import (foo2)) (run) | IronScheme.Console-v4.exe --logo
echo (import (foo2)) (run) | IronScheme.ConsoleCore.exe --logo
echo (import (foo2)) (run) | IronScheme.ConsoleCore.exe --fx-version 3.0.2 --logo
echo (import (foo2)) (run) | IronScheme.ConsoleCore.exe --fx-version 3.1.28 --logo
echo (import (foo2)) (run) | IronScheme.ConsoleCore.exe --fx-version 5.0.17 --logo
echo (import (foo2)) (run) | IronScheme.ConsoleCore.exe --fx-version 6.0.8 --logo
echo (import (foo2)) (run) | IronScheme.ConsoleCore.exe --fx-version 7.0.0-rc.1.22426.10 --logo

@prompt $P$G

Disassembly (ironscheme.typed.fixnums.dll)

> (import (ironscheme typed fixnums))

> (disassemble fx+)
Int32 fx+(Int32, Int32)
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: add
IL_0003: ret

> (disassemble fx-)
Int32 fx-(Int32, Int32)
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: sub
IL_0003: ret

> (disassemble fx<?)
Boolean fx<?(Int32, Int32)
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: clt
IL_0004: ret

> (disassemble fx=?)
Boolean fx=?(Int32, Int32)
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: ceq
IL_0004: ret

Disassembly (foo2.dll)

> (import (foo2))

> (disassemble ack)
Int32 foo2::ack(Int32, Int32)
.locals init (
  System.Int32 (0)
  System.Int32 (1)
  System.Int32 (2)
  System.Int32 (3)
)
IL_0000: ldarg.0
IL_0001: ldc.i4.0
IL_0002: call Boolean ironscheme.typed.fixnums::fx=?(Int32, Int32)
IL_0007: brfalse IL_0014
IL_000c: ldarg.1
IL_000d: ldc.i4.1
IL_000e: call Int32 ironscheme.typed.fixnums::fx+(Int32, Int32)
IL_0013: ret
IL_0014: ldarg.1
IL_0015: ldc.i4.0
IL_0016: call Boolean ironscheme.typed.fixnums::fx=?(Int32, Int32)
IL_001b: brfalse IL_0035
IL_0020: ldarg.0
IL_0021: ldc.i4.1
IL_0022: call Int32 ironscheme.typed.fixnums::fx-(Int32, Int32)
IL_0027: stloc.0
IL_0028: ldc.i4.1
IL_0029: stloc.1
IL_002a: ldloc.0
IL_002b: starg.s Int32 m
IL_002d: ldloc.1
IL_002e: starg.s Int32 n
IL_0030: br IL_0000
IL_0035: ldarg.0
IL_0036: ldc.i4.1
IL_0037: call Int32 ironscheme.typed.fixnums::fx-(Int32, Int32)
IL_003c: stloc.2
IL_003d: ldarg.0
IL_003e: ldarg.1
IL_003f: ldc.i4.1
IL_0040: call Int32 ironscheme.typed.fixnums::fx-(Int32, Int32)
IL_0045: call Int32 foo2::ack(Int32, Int32)
IL_004a: stloc.3
IL_004b: ldloc.2
IL_004c: starg.s Int32 m
IL_004e: ldloc.3
IL_004f: starg.s Int32 n
IL_0051: br IL_0000

> (disassemble fib)
Int32 foo2::fib(Int32)
IL_0000: ldarg.0
IL_0001: ldc.i4.2
IL_0002: call Boolean ironscheme.typed.fixnums::fx<?(Int32, Int32)
IL_0007: brfalse IL_000e
IL_000c: ldarg.0
IL_000d: ret
IL_000e: ldarg.0
IL_000f: ldc.i4.1
IL_0010: call Int32 ironscheme.typed.fixnums::fx-(Int32, Int32)
IL_0015: call Int32 foo2::fib(Int32)
IL_001a: ldarg.0
IL_001b: ldc.i4.2
IL_001c: call Int32 ironscheme.typed.fixnums::fx-(Int32, Int32)
IL_0021: call Int32 foo2::fib(Int32)
IL_0026: call Int32 ironscheme.typed.fixnums::fx+(Int32, Int32)
IL_002b: ret

> (disassemble tak)
Int32 foo2::tak(Int32, Int32, Int32)
.locals init (
  System.Int32 (0)
  System.Int32 (1)
  System.Int32 (2)
)
IL_0000: ldarg.1
IL_0001: ldarg.0
IL_0002: call Boolean ironscheme.typed.fixnums::fx<?(Int32, Int32)
IL_0007: brtrue IL_000e
IL_000c: ldarg.2
IL_000d: ret
IL_000e: ldarg.0
IL_000f: ldc.i4.1
IL_0010: call Int32 ironscheme.typed.fixnums::fx-(Int32, Int32)
IL_0015: ldarg.1
IL_0016: ldarg.2
IL_0017: call Int32 foo2::tak(Int32, Int32, Int32)
IL_001c: stloc.0
IL_001d: ldarg.1
IL_001e: ldc.i4.1
IL_001f: call Int32 ironscheme.typed.fixnums::fx-(Int32, Int32)
IL_0024: ldarg.2
IL_0025: ldarg.0
IL_0026: call Int32 foo2::tak(Int32, Int32, Int32)
IL_002b: stloc.1
IL_002c: ldarg.2
IL_002d: ldc.i4.1
IL_002e: call Int32 ironscheme.typed.fixnums::fx-(Int32, Int32)
IL_0033: ldarg.0
IL_0034: ldarg.1
IL_0035: call Int32 foo2::tak(Int32, Int32, Int32)
IL_003a: stloc.2
IL_003b: ldloc.0
IL_003c: starg.s Int32 x
IL_003e: ldloc.1
IL_003f: starg.s Int32 y
IL_0041: ldloc.2
IL_0042: starg.s Int32 z
IL_0044: br IL_0000

Decompiled (foo2.dll)

public static int ack(int m, int n)
{
  while (!fixnums.fx=?(m, 0))
  {
    if (fixnums.fx=?(n, 0))
    {
      int num = fixnums.fx-(m, 1);
      int num2 = 1;
      m = num;
      n = num2;
    }
    else
    {
      int num3 = fixnums.fx-(m, 1);
      int num4 = ack(m, fixnums.fx-(n, 1));
      m = num3;
      n = num4;
    }
  }
  return fixnums.fx+(n, 1);
}

public static int fib(int n)
{
  if (fixnums.fx<?(n, 2))
  {
    return n;
  }
  return fixnums.fx+(fib(fixnums.fx-(n, 1)), fib(fixnums.fx-(n, 2)));
}

public static int tak(int x, int y, int z)
{
  while (fixnums.fx<?(y, x))
  {
    int num = tak(fixnums.fx-(x, 1), y, z);
    int num2 = tak(fixnums.fx-(y, 1), z, x);
    int num3 = tak(fixnums.fx-(z, 1), x, y);
    x = num;
    y = num2;
    z = num3;
  }
  return z;
}

Run with incremental compiler

>echo (import (foo2)) (run)   | IronScheme.Console32-v2.exe --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 2.0 32-bit)
(ack 3 10): 46ms
(fib 35): 44ms
(tak 22 17 6): 41ms
0

>echo (import (foo2)) (run)   | IronScheme.Console-v2.exe --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 2.0 64-bit)
(ack 3 10): 62ms
(fib 35): 61ms
(tak 22 17 6): 46ms
0

>echo (import (foo2)) (run)   | IronScheme.Console32-v4.exe --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 4.8 32-bit)
(ack 3 10): 53ms
(fib 35): 43ms
(tak 22 17 6): 41ms
0

>echo (import (foo2)) (run)   | IronScheme.Console-v4.exe --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 4.8 64-bit)
(ack 3 10): 49ms
(fib 35): 46ms
(tak 22 17 6): 39ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET Core 2.1 64-bit)
(ack 3 10): 46ms
(fib 35): 45ms
(tak 22 17 6): 40ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --fx-version 3.0.2 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET Core 3.0 64-bit)
(ack 3 10): 39ms
(fib 35): 49ms
(tak 22 17 6): 38ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --fx-version 3.1.28 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET Core 3.1 64-bit)
(ack 3 10): 38ms
(fib 35): 47ms
(tak 22 17 6): 38ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --fx-version 5.0.17 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 5.0 64-bit)
(ack 3 10): 47ms
(fib 35): 46ms
(tak 22 17 6): 44ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --fx-version 6.0.8 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 6.0 64-bit)
(ack 3 10): 47ms
(fib 35): 47ms
(tak 22 17 6): 39ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --fx-version 7.0.0-rc.1.22426.10 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 7.0 64-bit)
(ack 3 10): 46ms
(fib 35): 48ms
(tak 22 17 6): 41ms
0

Compile libraries

> (compile)
compiling ironscheme.syntax.utils.dll
compiling ironscheme.typed.parsing-helper.dll
compiling ironscheme.typed.parsing.dll
compiling ironscheme.clr.helpers.dll
compiling ironscheme.clr.dll
compiling ironscheme.typed.core.dll
compiling ironscheme.syntax.shorthand.dll
compiling ironscheme.typed.dll
compiling ironscheme.contracts-helper.dll
compiling ironscheme.contracts.dll
compiling ironscheme.datetime.dll
compiling ironscheme.typed.fixnums.dll
compiling foo2.dll

Run with precompiled libraries

>echo (import (foo2)) (run)   | IronScheme.Console32-v2.exe --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 2.0 32-bit)
(ack 3 10): 48ms
(fib 35): 40ms
(tak 22 17 6): 39ms
0

>echo (import (foo2)) (run)   | IronScheme.Console-v2.exe --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 2.0 64-bit)
(ack 3 10): 59ms
(fib 35): 51ms
(tak 22 17 6): 40ms
0

>echo (import (foo2)) (run)   | IronScheme.Console32-v4.exe --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 4.8 32-bit)
(ack 3 10): 42ms
(fib 35): 40ms
(tak 22 17 6): 41ms
0

>echo (import (foo2)) (run)   | IronScheme.Console-v4.exe --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 4.8 64-bit)
(ack 3 10): 49ms
(fib 35): 50ms
(tak 22 17 6): 41ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET Core 2.1 64-bit)
WARNING: library (ironscheme typed) has an inconsistent dependency on library (ironscheme typed core); file "lib/ironscheme/typed.sls" will be recompiled from source.
(ack 3 10): 43ms
(fib 35): 48ms
(tak 22 17 6): 41ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --fx-version 3.0.2 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET Core 3.0 64-bit)
(ack 3 10): 110ms
(fib 35): 48ms
(tak 22 17 6): 41ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --fx-version 3.1.28 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET Core 3.1 64-bit)
(ack 3 10): 107ms
(fib 35): 52ms
(tak 22 17 6): 40ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --fx-version 5.0.17 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 5.0 64-bit)
(ack 3 10): 105ms
(fib 35): 46ms
(tak 22 17 6): 39ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --fx-version 6.0.8 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 6.0 64-bit)
(ack 3 10): 87ms
(fib 35): 46ms
(tak 22 17 6): 40ms
0

>echo (import (foo2)) (run)   | IronScheme.ConsoleCore.exe --fx-version 7.0.0-rc.1.22426.10 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 7.0 64-bit)
(ack 3 10): 45ms
(fib 35): 42ms
(tak 22 17 6): 34ms
0

Observations

  • Precompiled libraries only seems to fail on .NET Core 2.1 with inconsistent dependency when loading
  • Precompiled libraries fails on .NET Core 3+ when foo2 is not precompiled, but its dependencies are (see errors at bottom)
  • JIT cross-assembly regression from .NET Core 3 onwards in ack (update: fixed in .NET 7)

Other comparisons

Library loading speed

>IronScheme.Console32-v2.exe
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 2.0 32-bit)
> (compile-system-libraries)
Statistics for 'total compile time':
  Real Time:  4069ms
  CPU Time:   3922ms
  User Time:  4297ms
  GC's:       158
  
>IronScheme.ConsoleCore.exe --fx-version 6.0.8
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 6.0 64-bit)
> (compile-system-libraries)
Statistics for 'total compile time':
  Real Time:  7293ms
  CPU Time:   7578ms
  User Time:  7688ms
  GC's:       158

R6RS test suite

>IronScheme.Console32-v2.exe
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 2.0 32-bit)
> (ironscheme-test)
3 tests failed:

Expression:
 v
Result:
 (out in)
Expected:
 (out in out in)

Expression:
 (output-port-buffer-mode p)
Result:
 line
Expected:
 none

Expression:
 (get-line p)
Result:
 "ppλe"
Expected:
 "ppλe\r"

3 of 8972 tests failed.
Statistics for 'R6RS test suite':
  Real Time:  6362ms
  CPU Time:   5922ms
  User Time:  6094ms
  GC's:       262

>IronScheme.ConsoleCore.exe --fx-version 6.0.8
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 6.0 64-bit)
> (ironscheme-test)
4 tests failed:

Expression:
 (char-lower-case? #\ª)
Result:
 #f
Expected:
 #t

Expression:
 v
Result:
 (out in)
Expected:
 (out in out in)

Expression:
 (output-port-buffer-mode p)
Result:
 line
Expected:
 none

Expression:
 (get-line p)
Result:
 "ppλe"
Expected:
 "ppλe\r"

4 of 8972 tests failed.
Statistics for 'R6RS test suite':
  Real Time:  4422ms
  CPU Time:   4484ms
  User Time:  4547ms
  GC's:       278

>IronScheme.ConsoleCore.exe --fx-version 7.0.0-rc.1.22426.10 --logo
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 7.0 64-bit)
> (ironscheme-test)
4 tests failed:

Expression:
 (char-lower-case? #\ª)
Result:
 #f
Expected:
 #t

Expression:
 v
Result:
 (out in)
Expected:
 (out in out in)

Expression:
 (output-port-buffer-mode p)
Result:
 line
Expected:
 none

Expression:
 (get-line p)
Result:
 "ppλe"
Expected:
 "ppλe\r"

4 of 8972 tests failed.
Statistics for 'R6RS test suite':
  Real Time:  5727ms
  CPU Time:   5984ms
  User Time:  6094ms
  GC's:       278

Errors

>echo (import (foo2)) | IronScheme.ConsoleCore.exe --fx-version 6.0.8 --logo --show-loaded-libraries
IronScheme 1.0.282-7e9f16c github.com/IronScheme © 2007-2021 Llewellyn Pritchard (.NET 6.0 64-bit)
ironscheme.typed.core.dll
ironscheme.syntax.utils.dll
ironscheme.clr.dll
ironscheme.clr.helpers.dll
ironscheme.typed.parsing.dll
ironscheme.typed.parsing-helper.dll
ironscheme.syntax.shorthand.dll
ironscheme.datetime.dll
ironscheme.contracts.dll
ironscheme.contracts-helper.dll
ironscheme.typed.dll
ironscheme.typed.fixnums.dll
Unhandled CLR exception during evaluation:
CLR Exception: System.NullReferenceException
System.NullReferenceException: Object reference not set to an instance of an object.
   at IronScheme.Scripting.ModuleGlobalWrapper.get_CurrentValue() in C:\projects\ironscheme\IronScheme\Microsoft.Scripting\ModuleGlobalWrapper.cs:line 62
   at ironscheme.syntax.utils.syntax-format+(Object fmt, Object loc, Object args)
   at ironscheme.typed.core.anon#700##get-spec$4918(CodeContext $context, Object id, Object lookup)
   at ironscheme.typed.core.anon#700##anon#1#2#3$4920(CodeContext $context, Object lookup)
   at #.psyntax.expander::do-macro-call(Object transformer, Object expr, Object r, Object rib) in psyntax\expander.sls:line 2783
   at #.psyntax.expander::chi-global-macro(Object p, Object e, Object r, Object rib) in psyntax\expander.sls:line 2837
   at #.psyntax.expander::chi-body*(CodeContext $context, Object e*, Object r, Object mr, Object lex*, Object rhs*, Object mod**, Object kwd*, Object exp*, Object rib, Object mix?, Object sd?) in psyntax\expander.sls:line 1001
   at #.psyntax.expander::chi-body*(CodeContext , Object[] ) in :line 0
   at #.psyntax.expander::chi-library-internal(Object e*, Object rib, Object mix?) in psyntax\expander.sls:line 3704
   at #.psyntax.expander::library-body-expander##anon#1#2#3#4#5##anon#1#2#3$2620(CodeContext $context) in psyntax\expander.sls:line 3738
   at #.ironscheme.exceptions::dynamic-wind(Object in, Object proc, Object out) in build\exceptions.sls:line 53
   at #.psyntax.expander::library-body-expander##anon#1#2$2538(CodeContext $context) in psyntax\expander.sls:line 161
   at #.ironscheme.exceptions::dynamic-wind(Object in, Object proc, Object out) in build\exceptions.sls:line 53
   at #.psyntax.expander::library-body-expander(Object name, Object main-exp*, Object imp*, Object b*, Object mix?) in psyntax\expander.sls:line 161
   at #.psyntax.expander::core-library-expander#anon#1#2#3#4#5#6#7#8$2536(CodeContext $context) in psyntax\expander.sls:line 3820
   at #.ironscheme.exceptions::dynamic-wind(Object in, Object proc, Object out) in build\exceptions.sls:line 53
   at #.psyntax.expander::core-library-expander(Object e, Object verify-name) in psyntax\expander.sls:line 3816
   at #.psyntax.expander::library-expander(Object x, Object filename, Object verify-name) in psyntax\expander.sls:line 3978
   at #.psyntax.library-manager::find-external-library#1#anon#1$2060(CodeContext $context) in psyntax\library-manager.sls:line 365
   at #.ironscheme.exceptions::dynamic-wind(Object in, Object proc, Object out) in build\exceptions.sls:line 53
   at #.psyntax.library-manager::find-external-library(Object name) in psyntax\library-manager.sls:line 161
   at #.psyntax.library-manager::find-library-by-name(Object name) in psyntax\library-manager.sls:line 377
   at #.psyntax.expander::parse-import-spec*##import-library$2597(CodeContext $context, Object spec*) in psyntax\expander.sls:line 3569
   at #.psyntax.expander::parse-import-spec*##add-imports!$2615(CodeContext $context, Object imp, Object h) in psyntax\expander.sls:line 3628
   at #.psyntax.expander::parse-import-spec*(Object imp*) in psyntax\expander.sls:line 3643
   at #.psyntax.expander::chi-body*#1#anon#1#2#3#4#5##library-import#anon#1#2$2642(CodeContext $context, Object ctxt, Object imp*) in psyntax\expander.sls:line 3343
   at #.psyntax.expander::chi-body*(CodeContext $context, Object e*, Object r, Object mr, Object lex*, Object rhs*, Object mod**, Object kwd*, Object exp*, Object rib, Object mix?, Object sd?) in psyntax\expander.sls:line 3221
   at #.psyntax.expander::chi-body*(CodeContext , Object[] ) in :line 0
   at #.psyntax.expander::chi-interaction-expr(Object e, Object rib, Object r) in psyntax\expander.sls:line 3712
   at #.psyntax.expander::core-expand#anon#1#2#3#4#5$2663(CodeContext $context) in psyntax\expander.sls:line 3939
   at #.ironscheme.exceptions::dynamic-wind(Object in, Object proc, Object out) in build\exceptions.sls:line 53
   at #.psyntax.expander::core-expand(Object x, Object env) in psyntax\expander.sls:line 3938
   at #.psyntax.expander::eval(Object x, Object env) in psyntax\expander.sls:line 3951
   at #.psyntax.main::eval-top-level#anon#1#2#3#4#5$2698(CodeContext $context) in psyntax\main.sls:line 142
   at #.ironscheme.exceptions::dynamic-wind(Object in, Object proc, Object out) in build\exceptions.sls:line 53
   at #.psyntax.main::eval-top-level#anon#1#2$2696(CodeContext $context) in psyntax\main.sls:line 161
   at #.ironscheme.exceptions::dynamic-wind(Object in, Object proc, Object out) in build\exceptions.sls:line 53
   at #.ironscheme.exceptions::with-exception-handlers(Object new-handlers, Object thunk) in build\exceptions.sls:line 67
   at #.ironscheme.exceptions::with-exception-handler(Object handler, Object thunk) in build\exceptions.sls:line 64
   at #.psyntax.main::eval-top-level#anon#1$2692(CodeContext $context, Object k) in psyntax\main.sls:line 141
   at IronScheme.Runtime.Builtins.CallWithCurrentContinuation(Object fc1) in C:\projects\ironscheme\IronScheme\IronScheme\Runtime\Control.cs:line 183
   at IronScheme.Runtime.R6RS.Exceptions.WithClrExceptionHandler(Object handler, Object thunk) in C:\projects\ironscheme\IronScheme\IronScheme\Runtime\R6RS\Exceptions.cs:line 24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment