aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/runtime.lux
blob: b239d03eaac60c9768aa66797baaab6c98768061 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
(.module:
  [library
   [lux (#- for)
    [abstract
     [equivalence (#+ Equivalence)]]
    [data
     ["." product]
     ["." text
      ["%" format (#+ format)]]
     [collection
      ["." list ("#\." monoid)]]]
    [macro
     ["." template]]
    [world
     ["." file]]]])

(type: .public Runtime
  {#program Text
   #parameters (List Text)})

(def: .public equivalence
  (Equivalence Runtime)
  (product.equivalence
   text.equivalence
   (list.equivalence text.equivalence)))

(template [<name> <command> <parameters>]
  [(def: .public <name>
     Runtime
     {#program <command>
      #parameters (`` (list (~~ (template.spliced <parameters>))))})]

  [default_java "java" ["-jar"]]
  [default_js "node" ["--stack_size=8192"]]
  [default_python "python3" []]
  [default_lua "lua" []]
  ... [default_ruby "RUBY_THREAD_VM_STACK_SIZE=15700000 ruby" []]
  [default_ruby "ruby" []]
  )

(def: .public (for runtime path)
  (-> Runtime file.Path Runtime)
  (update@ #parameters
           (function (_ parameters)
             (list\compose parameters (list path)))
           runtime))