Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 71f77a8e02 | |||
| 1a1541028c | |||
| acec32e744 | |||
| 5784f074a6 | |||
| d07b321b25 | |||
| 2e6c01cb75 | |||
| b22eeffc3d | |||
| b366bed24b |
+8
-1
@@ -9,6 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
### Changed
|
### Changed
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
## [6.0.2] 2021-07-05
|
||||||
|
### Changed
|
||||||
|
- `List.from_to_step` now forbids non-positive step (this change does
|
||||||
|
*not* alter the behavior of the previously deployed contracts)
|
||||||
|
- Fixed leaking state between contracts
|
||||||
|
|
||||||
## [6.0.1] 2021-06-24
|
## [6.0.1] 2021-06-24
|
||||||
### Changed
|
### Changed
|
||||||
- Fixed a bug in calldata encoding for contracts containing multiple contracts
|
- Fixed a bug in calldata encoding for contracts containing multiple contracts
|
||||||
@@ -303,7 +309,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Simplify calldata creation - instead of passing a compiled contract, simply
|
- Simplify calldata creation - instead of passing a compiled contract, simply
|
||||||
pass a (stubbed) contract string.
|
pass a (stubbed) contract string.
|
||||||
|
|
||||||
[Unreleased]: https://github.com/aeternity/aesophia/compare/v6.0.1...HEAD
|
[Unreleased]: https://github.com/aeternity/aesophia/compare/v6.0.2...HEAD
|
||||||
|
[6.0.2]: https://github.com/aeternity/aesophia/compare/v6.0.1...v6.0.2
|
||||||
[6.0.1]: https://github.com/aeternity/aesophia/compare/v6.0.0...v6.0.1
|
[6.0.1]: https://github.com/aeternity/aesophia/compare/v6.0.0...v6.0.1
|
||||||
[6.0.0]: https://github.com/aeternity/aesophia/compare/v5.0.0...v6.0.0
|
[6.0.0]: https://github.com/aeternity/aesophia/compare/v5.0.0...v6.0.0
|
||||||
[5.0.0]: https://github.com/aeternity/aesophia/compare/v4.3.0...v5.0.0
|
[5.0.0]: https://github.com/aeternity/aesophia/compare/v4.3.0...v5.0.0
|
||||||
|
|||||||
@@ -1216,7 +1216,7 @@ List.unzip(l : list('a * 'b)) : list('a) * list('b)
|
|||||||
Opposite to the `zip` operation. Takes a list of pairs and returns pair of lists with respective elements on same indices.
|
Opposite to the `zip` operation. Takes a list of pairs and returns pair of lists with respective elements on same indices.
|
||||||
|
|
||||||
|
|
||||||
### merge
|
#### merge
|
||||||
```
|
```
|
||||||
List.merge(lesser_cmp : ('a, 'a) => bool, l1 : list('a), l2 : list('a)) : list('a)
|
List.merge(lesser_cmp : ('a, 'a) => bool, l1 : list('a), l2 : list('a)) : list('a)
|
||||||
```
|
```
|
||||||
@@ -1224,7 +1224,7 @@ List.merge(lesser_cmp : ('a, 'a) => bool, l1 : list('a), l2 : list('a)) : list('
|
|||||||
Merges two sorted lists into a single sorted list. O(length(l1) + length(l2))
|
Merges two sorted lists into a single sorted list. O(length(l1) + length(l2))
|
||||||
|
|
||||||
|
|
||||||
### sort
|
#### sort
|
||||||
```
|
```
|
||||||
List.sort(lesser_cmp : ('a, 'a) => bool, l : list('a)) : list('a)
|
List.sort(lesser_cmp : ('a, 'a) => bool, l : list('a)) : list('a)
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ namespace List =
|
|||||||
* `b` only if `(b - a) mod step == 0`. `step` should be bigger than 0.
|
* `b` only if `(b - a) mod step == 0`. `step` should be bigger than 0.
|
||||||
*/
|
*/
|
||||||
function from_to_step(a : int, b : int, s : int) : list(int) =
|
function from_to_step(a : int, b : int, s : int) : list(int) =
|
||||||
|
require(s > 0, "List.from_to_step: non-positive step")
|
||||||
from_to_step_(a, b - (b-a) mod s, s, [])
|
from_to_step_(a, b - (b-a) mod s, s, [])
|
||||||
private function from_to_step_(a : int, b : int, s : int, acc : list(int)) : list(int) =
|
private function from_to_step_(a : int, b : int, s : int, acc : list(int)) : list(int) =
|
||||||
if(b < a) acc
|
if(b < a) acc
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
{base_plt_apps, [erts, kernel, stdlib, crypto, mnesia]}
|
{base_plt_apps, [erts, kernel, stdlib, crypto, mnesia]}
|
||||||
]}.
|
]}.
|
||||||
|
|
||||||
{relx, [{release, {aesophia, "6.0.1"},
|
{relx, [{release, {aesophia, "6.0.2"},
|
||||||
[aesophia, aebytecode, getopt]},
|
[aesophia, aebytecode, getopt]},
|
||||||
|
|
||||||
{dev_mode, true},
|
{dev_mode, true},
|
||||||
|
|||||||
@@ -330,10 +330,11 @@ to_fcode(Env, [{Contract, Attrs, Con = {con, _, Name}, Decls}|Rest])
|
|||||||
case Contract =:= contract_interface of
|
case Contract =:= contract_interface of
|
||||||
false ->
|
false ->
|
||||||
#{ builtins := Builtins } = Env,
|
#{ builtins := Builtins } = Env,
|
||||||
ConEnv = Env#{ context => {contract_def, Name},
|
ConEnv = maps:remove(state_layout,
|
||||||
|
Env#{ context => {contract_def, Name},
|
||||||
builtins => Builtins#{[Name, "state"] => {get_state, none},
|
builtins => Builtins#{[Name, "state"] => {get_state, none},
|
||||||
[Name, "put"] => {set_state, 1},
|
[Name, "put"] => {set_state, 1},
|
||||||
[Name, "Chain", "event"] => {chain_event, 1}} },
|
[Name, "Chain", "event"] => {chain_event, 1}} }),
|
||||||
#{ functions := PrevFuns } = ConEnv,
|
#{ functions := PrevFuns } = ConEnv,
|
||||||
#{ functions := Funs } = Env1 =
|
#{ functions := Funs } = Env1 =
|
||||||
decls_to_fcode(ConEnv, Decls),
|
decls_to_fcode(ConEnv, Decls),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{application, aesophia,
|
{application, aesophia,
|
||||||
[{description, "Compiler for Aeternity Sophia language"},
|
[{description, "Compiler for Aeternity Sophia language"},
|
||||||
{vsn, "6.0.1"},
|
{vsn, "6.0.2"},
|
||||||
{registered, []},
|
{registered, []},
|
||||||
{applications,
|
{applications,
|
||||||
[kernel,
|
[kernel,
|
||||||
|
|||||||
@@ -199,6 +199,7 @@ compilable_contracts() ->
|
|||||||
"clone",
|
"clone",
|
||||||
"clone_simple",
|
"clone_simple",
|
||||||
"create",
|
"create",
|
||||||
|
"child_contract_init_bug",
|
||||||
"test" % Custom general-purpose test file. Keep it last on the list.
|
"test" % Custom general-purpose test file. Keep it last on the list.
|
||||||
].
|
].
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
contract Identity =
|
||||||
|
record state = {foo: int, bar: string}
|
||||||
|
entrypoint init() = {foo = 0, bar = ""}
|
||||||
|
|
||||||
|
main contract IdentityService =
|
||||||
|
stateful entrypoint createNewIdentity() : Identity =
|
||||||
|
put(())
|
||||||
|
Chain.create()
|
||||||
Reference in New Issue
Block a user