Skip to content

Commit a375b27

Browse files
committed
retain release
1 parent ae76a3b commit a375b27

8 files changed

Lines changed: 2719 additions & 2541 deletions

File tree

BOOTSTRAP/cli.c

Lines changed: 2684 additions & 2539 deletions
Large diffs are not rendered by default.

LM23COMMON/type-definition.lsts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,7 @@ let .retain(t: Type): Type = (
3131
};
3232
t
3333
);
34+
35+
# TODO: remove
36+
let .release(tt: x[]): Nil = ();
37+
let .retain(tt: x[]): x[] = tt;

PLUGINS/FRONTEND/LSTS/lsts-parse.lsts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1099,7 +1099,6 @@ let lsts-parse-let(tokens: List<Token>): (AST, List<Token>) = (
10991099
} else {
11001100
mk-glb( with-location(mk-token(name),loc), return-term );
11011101
};
1102-
if not(config-v3) and (name==c".retain" or name==c".release") then rvalue = mk-nil();
11031102
(rvalue, tokens)
11041103
);
11051104

lib/std/default.lsts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ import std/cmp.lsts;
3333
import std/print.lsts;
3434
import std/collections.lsts;
3535
import std/regex.lsts;
36-
#import std/owned-data.lsts;
36+
import std/phi.lsts;
37+
import std/owned-data.lsts;

lib/std/list.lsts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,3 +197,7 @@ let deep-hash(ts: List<t>): U64 = (
197197
for list t0 in ts { return = return + deep-hash(t0); };
198198
return;
199199
);
200+
201+
# TODO: remove
202+
let .release(tt: List<x>): Nil = ();
203+
let .retain(tt: List<x>): List<x> = tt;

lib/std/minimal.lsts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,4 @@ import std/cmp.lsts;
3131
import std/print.lsts;
3232
import std/collections.lsts;
3333
import std/owned-data.lsts;
34+
import std/phi.lsts;

lib/std/phi.lsts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
type phi MustRelease = ToRelease{ promise:'a } | Released;
3+
4+
let :Blob mark-as-released(x: x+(MustRelease::ToRelease<'a> ~> MustRelease::Released)+MustNotRetain): Nil = (
5+
$":frame"($":frame"(x));
6+
$":expression"($":expression"(x));
7+
);
8+
let :Blob mark-as-released(x: x+(MustRelease::Released ~> MustRelease::Released)+MustNotRetain): Nil = (
9+
$":frame"($":frame"(x));
10+
$":expression"($":expression"(x));
11+
);
12+
let :Blob mark-as-released(x: x): Nil = (
13+
$":frame"($":frame"(x));
14+
$":expression"($":expression"(x));
15+
);
16+
17+
let :Blob destroy(x: x+MustNotRetain): Nil = (
18+
$":frame"();
19+
$":expression"(l"memset(&"; $":expression"(x); l",0,sizeof "; $":expression"(x); l");");
20+
);
21+

lib/std/vector.lsts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,3 +262,6 @@ let deep-hash(ts: Vector<t>): U64 = (
262262
# ignore, don't port to lib2
263263
# for compatibility in lmcommon
264264
let .buffer-into-string(c: Vector<U8>): Vector<U8> = c;
265+
266+
let .release(v: Vector<x>): Nil = ();
267+
let .retain(v: Vector<x>): Vector<x> = v;

0 commit comments

Comments
 (0)