Updated specification #8

Merged
pca006132 merged 5 commits from updated into master 2021-06-07 10:06:52 +08:00
1 changed files with 22 additions and 1 deletions
Showing only changes of commit 284ab3324c - Show all commits

View File

@ -18,6 +18,25 @@ kernel.
Only types supported in the kernel can be referenced.
Examples:
```python
FOO = 0
@kernel
def correct() -> int:
global FOO
return FOO + 1
@kernel
def fail_without_global() -> int:
return FOO + 2
@kernel
def fail_write() -> None:
FOO += 1
```
## Class and Functions
* Instance variables must be annotated: (Issue #1)
```python
@ -31,7 +50,7 @@ Only types supported in the kernel can be referenced.
* Three types of instance variables: (Issue #5)
* Host only variables: Do not add type annotation for it in the class.
* Kernel Invariants: Immutable in the kernel and in the host while the kernel
is executing. Type: `KernelInvariant(T)`. The types must be immutable.
is executing. Type: `KernelInvariant[T]`. The types must be immutable.
(use tuple instead of list in the host, but the type annotation should still
be list?)
* Normal Variables: The host can only assign to them in the `__init__`
@ -47,6 +66,8 @@ Only types supported in the kernel can be referenced.
* Function pointers are supported, and lambda expression is not supported
currently. (maybe support lambda after implementing type inference?)
Its type is denoted by the typing library, e.g. `Call[[int32, int32], int32]`.
## Built-in Types
* Primitive types include:
* `bool`