blob: 6561a9292b36b46e0d6f4828aa1869d12d43984b (
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
|
System functions vs effects
===========================
SLUL will have system functions indirected via arenas
(so that they can be overridden/proxied, and this can be
used to implement capabilities / sandboxing).
Indirected function are somewhat related to effect types.
This could be added as an optional feature:
With the "arena" keyword for arenas:
func .new(arena) -> arena Thing effect Alloc, Fail
func arena Thing.do_any_stuff()
func arena Thing.do_io() effect IO, Fail
With sigills for arenas:
func .new@() -> Thing@ effect Alloc, Fail
func Thing.do_any_stuff@()
func Thing.do_io@() effect IO, Fail
With effect specifications(!) for arenas:
func .new() -> Thing effect Alloc, Fail
func Thing.do_any_stuff() effect Any
func Thing.do_io@() effect IO, Fail
- How to track whether the return value is an arena or not?
Problem:
How to track this for variables, or when there multiple arena parameters?
(Does the latter make any sense?)
|