@effekt-lang/effekt 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/effekt +0 -0
- package/libraries/common/io/console.effekt +1 -2
- package/libraries/common/io/filesystem.effekt +4 -4
- package/libraries/common/io/network.effekt +4 -4
- package/libraries/common/io/time.effekt +1 -1
- package/libraries/common/io.effekt +5 -5
- package/libraries/js/effekt_builtins.js +5 -1
- package/libraries/js/effekt_runtime.js +185 -352
- package/licenses/eclipse public license, version 2.0 - epl-2.0.html +2 -2
- package/package.json +1 -1
- package/libraries/js/unsafe/cont.effekt +0 -11
- package/licenses/mit license - mit-license.html +0 -1240
- package/licenses/the bsd license - bsd-license.html +0 -1236
- package/licenses/the mit license - mit.html +0 -1240
package/bin/effekt
CHANGED
|
Binary file
|
|
@@ -38,8 +38,7 @@ namespace js {
|
|
|
38
38
|
jsNode "${console}.close()"
|
|
39
39
|
|
|
40
40
|
extern async def readLine(console: JSConsole): String =
|
|
41
|
-
jsNode "$effekt.
|
|
42
|
-
|
|
41
|
+
jsNode "$effekt.capture(k => ${console}.once('line', k))"
|
|
43
42
|
extern io def writeLine(console: JSConsole, message: String): Unit =
|
|
44
43
|
jsNode "${console}.output.write(${message} + '\\n')"
|
|
45
44
|
}
|
|
@@ -208,28 +208,28 @@ namespace internal {
|
|
|
208
208
|
"""
|
|
209
209
|
|
|
210
210
|
extern async def open(path: String, mode: Mode): Int =
|
|
211
|
-
jsNode "$effekt.
|
|
211
|
+
jsNode "$effekt.capture(k => open(${path}, ${mode}, k))"
|
|
212
212
|
llvm """
|
|
213
213
|
call void @c_fs_open(%Pos ${path}, %Pos ${mode}, %Stack %stack)
|
|
214
214
|
ret void
|
|
215
215
|
"""
|
|
216
216
|
|
|
217
217
|
extern async def read(fd: Int, buffer: Bytes, offset: Int): Int =
|
|
218
|
-
jsNode "$effekt.
|
|
218
|
+
jsNode "$effekt.capture(k => read(${fd}, ${buffer}, ${offset}, k))"
|
|
219
219
|
llvm """
|
|
220
220
|
call void @c_fs_read(%Int ${fd}, %Pos ${buffer}, %Int ${offset}, %Stack %stack)
|
|
221
221
|
ret void
|
|
222
222
|
"""
|
|
223
223
|
|
|
224
224
|
extern async def write(fd: Int, buffer: Bytes, offset: Int): Int =
|
|
225
|
-
jsNode "$effekt.
|
|
225
|
+
jsNode "$effekt.capture(k => write(${fd}, ${buffer}, ${offset}, k))"
|
|
226
226
|
llvm """
|
|
227
227
|
call void @c_fs_write(%Int ${fd}, %Pos ${buffer}, %Int ${offset}, %Stack %stack)
|
|
228
228
|
ret void
|
|
229
229
|
"""
|
|
230
230
|
|
|
231
231
|
extern async def close(fd: Int): Int =
|
|
232
|
-
jsNode "$effekt.
|
|
232
|
+
jsNode "$effekt.capture(k => close(${fd}, k))"
|
|
233
233
|
llvm """
|
|
234
234
|
call void @c_fs_close(%Int ${fd}, %Stack %stack)
|
|
235
235
|
ret void
|
|
@@ -18,16 +18,16 @@ namespace js {
|
|
|
18
18
|
extern io def server(): JSServer =
|
|
19
19
|
jsNode "net.createServer()"
|
|
20
20
|
extern io def listen(server: JSServer, port: Int, host: String, listener: JSSocket => Unit at {io, async, global}): Unit =
|
|
21
|
-
jsNode "listen(${server}, ${port}, ${host}, (socket) => (${listener})(socket)
|
|
21
|
+
jsNode "listen(${server}, ${port}, ${host}, (socket) => $effekt.runToplevel((ks, k) => (${listener})(socket, ks, k)))"
|
|
22
22
|
|
|
23
23
|
extern async def send(socket: JSSocket, data: Bytes): Unit =
|
|
24
|
-
jsNode "$effekt.
|
|
24
|
+
jsNode "$effekt.capture(k => ${socket}.write(${data}, k))"
|
|
25
25
|
|
|
26
26
|
extern async def receive(socket: JSSocket): Bytes =
|
|
27
|
-
jsNode "$effekt.
|
|
27
|
+
jsNode "$effekt.capture(k => ${socket}.once('data', k))"
|
|
28
28
|
|
|
29
29
|
extern async def end(socket: JSSocket): Unit =
|
|
30
|
-
jsNode "$effekt.
|
|
30
|
+
jsNode "$effekt.capture(k => ${socket}.end(k))"
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
interface Socket {
|
|
@@ -5,7 +5,7 @@ extern llvm """
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
extern async def wait(millis: Int): Unit =
|
|
8
|
-
js "$effekt.
|
|
8
|
+
js "$effekt.capture(k => setTimeout(() => k($effekt.unit), ${millis}))"
|
|
9
9
|
llvm """
|
|
10
10
|
call void @c_timer_start(%Int ${millis}, %Stack %stack)
|
|
11
11
|
ret void
|
|
@@ -13,7 +13,7 @@ extern llvm """
|
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
15
|
extern async def spawn(task: Task[Unit]): Unit =
|
|
16
|
-
js "$effekt.
|
|
16
|
+
js "$effekt.capture(k => { setTimeout(() => k($effekt.unit), 0); return $effekt.run(${task}) })"
|
|
17
17
|
llvm """
|
|
18
18
|
call void @c_yield(%Stack %stack)
|
|
19
19
|
call void @run(%Neg ${task})
|
|
@@ -21,14 +21,14 @@ extern async def spawn(task: Task[Unit]): Unit =
|
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
23
|
extern async def yield(): Unit =
|
|
24
|
-
js "$effekt.
|
|
24
|
+
js "$effekt.capture(k => setTimeout(() => k($effekt.unit), 0))"
|
|
25
25
|
llvm """
|
|
26
26
|
call void @c_yield(%Stack %stack)
|
|
27
27
|
ret void
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
30
|
extern async def abort(): Nothing =
|
|
31
|
-
js "$effekt.
|
|
31
|
+
js "$effekt.capture(k => undefined)"
|
|
32
32
|
llvm """
|
|
33
33
|
call void @eraseStack(%Stack %stack)
|
|
34
34
|
ret void
|
|
@@ -55,14 +55,14 @@ extern llvm """
|
|
|
55
55
|
"""
|
|
56
56
|
|
|
57
57
|
extern async def await[T](promise: Promise[T]): T =
|
|
58
|
-
js "$effekt.
|
|
58
|
+
js "$effekt.capture(k => ${promise}.promise.then(k))"
|
|
59
59
|
llvm """
|
|
60
60
|
call void @c_promise_await(%Pos ${promise}, %Stack %stack)
|
|
61
61
|
ret void
|
|
62
62
|
"""
|
|
63
63
|
|
|
64
64
|
extern async def resolve[T](promise: Promise[T], value: T): Unit =
|
|
65
|
-
js "$effekt.
|
|
65
|
+
js "$effekt.capture(k => { ${promise}.resolve(${value}); return k($effekt.unit) })"
|
|
66
66
|
llvm """
|
|
67
67
|
call void @c_promise_resolve(%Pos ${promise}, %Pos ${value}, %Stack %stack)
|
|
68
68
|
ret void
|
|
@@ -54,4 +54,8 @@ $effekt.println = function println$impl(str) {
|
|
|
54
54
|
console.log(str); return $effekt.unit;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
$effekt.unit = { __unit: true }
|
|
57
|
+
$effekt.unit = { __unit: true }
|
|
58
|
+
|
|
59
|
+
$effekt.emptyMatch = function() { throw "empty match" }
|
|
60
|
+
|
|
61
|
+
$effekt.hole = function() { throw "not implemented, yet" }
|