Merge pull request #70 from aeternity/PT-166147620-prepare_v3
PT-166147620 Prepare for v3.0.0
This commit is contained in:
commit
dcae96ed21
25
CHANGELOG.md
25
CHANGELOG.md
@ -6,11 +6,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
### Added
|
||||
- `stateful` annotations are now properly enforced. Functions must be marked stateful
|
||||
in order to update the state or spend tokens.
|
||||
### Changed
|
||||
### Removed
|
||||
|
||||
## [3.0.0] - 2019-05-21
|
||||
### Added
|
||||
- `stateful` annotations are now properly enforced. Functions must be marked stateful
|
||||
in order to update the state or spend tokens.
|
||||
- Primitives `Contract.creator`, `Address.is_contract`, `Address.is_oracle`,
|
||||
`Oracle.check` and `Oracle.check_query` has been added to Sophia.
|
||||
- A byte array type `bytes(N)` has been added to generalize `hash (== bytes(32))` and
|
||||
`signature (== bytes(64))` and allow for byte arrays of arbitrary fixed length.
|
||||
- `Crypto.ecverify_secp256k1` has been added.
|
||||
### Changed
|
||||
- Address literals (+ Oracle, Oracle query and remote contracts) have been changed
|
||||
from `#<hex>` to address as `ak_<base58check>`, oracle `ok_<base58check>`,
|
||||
oracle query `oq_<base58check>` and remote contract `ct_<base58check>`.
|
||||
- The compilation and typechecking of `letfun` (e.g. `let m(f, xs) = map(f, xs)`) was
|
||||
not working properly and has been fixed.
|
||||
### Removed
|
||||
- `let rec` has been removed from the language, it has never worked.
|
||||
- The standalone CLI compiler is served in the repo `aeternity/aesophia_cli` and has
|
||||
been completely removed from `aesophia`.
|
||||
|
||||
## [2.1.0] - 2019-04-11
|
||||
### Added
|
||||
- Stubs (not yet wired up) for compilation to FATE
|
||||
@ -37,6 +55,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Simplify calldata creation - instead of passing a compiled contract, simply
|
||||
pass a (stubbed) contract string.
|
||||
|
||||
[Unreleased]: https://github.com/aeternity/aesophia/compare/v2.1.0...HEAD
|
||||
[Unreleased]: https://github.com/aeternity/aesophia/compare/v3.0.0...HEAD
|
||||
[3.0.0]: https://github.com/aeternity/aesophia/compare/v2.1.0...v3.0.0
|
||||
[2.1.0]: https://github.com/aeternity/aesophia/compare/v2.0.0...v2.1.0
|
||||
[2.0.0]: https://github.com/aeternity/aesophia/tag/v2.0.0
|
||||
|
17
rebar.config
17
rebar.config
@ -9,28 +9,13 @@
|
||||
{tag, "2.8.0"}}}
|
||||
]}.
|
||||
|
||||
{escript_incl_apps, [aesophia, aebytecode, getopt]}.
|
||||
{escript_main_app, aesophia}.
|
||||
{escript_name, aesophia}.
|
||||
{escript_emu_args, "%%! \n"}.
|
||||
{provider_hooks, [{post, [{compile, escriptize}]}]}.
|
||||
|
||||
{post_hooks, [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)",
|
||||
escriptize,
|
||||
"cp \"$REBAR_BUILD_DIR/bin/aesophia\" ./aesophia"},
|
||||
{"win32",
|
||||
escriptize,
|
||||
"robocopy \"%REBAR_BUILD_DIR%/bin/\" ./ aesophia* "
|
||||
"/njs /njh /nfl /ndl & exit /b 0"} % silence things
|
||||
]}.
|
||||
|
||||
{dialyzer, [
|
||||
{warnings, [unknown]},
|
||||
{plt_apps, all_deps},
|
||||
{base_plt_apps, [erts, kernel, stdlib, crypto, mnesia]}
|
||||
]}.
|
||||
|
||||
{relx, [{release, {aesophia, "2.1.0"},
|
||||
{relx, [{release, {aesophia, "3.0.0"},
|
||||
[aesophia, aebytecode, getopt]},
|
||||
|
||||
{dev_mode, true},
|
||||
|
@ -1,6 +1,6 @@
|
||||
{application, aesophia,
|
||||
[{description, "Contract Language for aeternity"},
|
||||
{vsn, "2.1.0"},
|
||||
{vsn, "3.0.0"},
|
||||
{registered, []},
|
||||
{applications,
|
||||
[kernel,
|
||||
|
@ -1,78 +0,0 @@
|
||||
-module(aesophia).
|
||||
|
||||
-export([main/1]).
|
||||
|
||||
-define(OPT_SPEC,
|
||||
[ {src_file, undefined, undefined, string, "Sophia source code file"}
|
||||
, {version, $V, "version", undefined, "Print compiler version"}
|
||||
, {verbose, $v, "verbose", undefined, "Verbose output"}
|
||||
, {help, $h, "help", undefined, "Show this message"}
|
||||
, {outfile, $o, "out", string, "Output file (experimental)"} ]).
|
||||
|
||||
usage() ->
|
||||
getopt:usage(?OPT_SPEC, "aesophia").
|
||||
|
||||
main(Args) ->
|
||||
case getopt:parse(?OPT_SPEC, Args) of
|
||||
{ok, {Opts, []}} ->
|
||||
case Opts of
|
||||
[version] ->
|
||||
print_vsn();
|
||||
[help] ->
|
||||
usage();
|
||||
_ ->
|
||||
compile(Opts)
|
||||
end;
|
||||
|
||||
{ok, {_, NonOpts}} ->
|
||||
io:format("Can't understand ~p\n\n", [NonOpts]),
|
||||
usage();
|
||||
|
||||
{error, {Reason, Data}} ->
|
||||
io:format("Error: ~s ~p\n\n", [Reason, Data]),
|
||||
usage()
|
||||
end.
|
||||
|
||||
|
||||
compile(Opts) ->
|
||||
case proplists:get_value(src_file, Opts, undefined) of
|
||||
undefined ->
|
||||
io:format("Error: no input source file\n\n"),
|
||||
usage();
|
||||
File ->
|
||||
compile(File, Opts)
|
||||
end.
|
||||
|
||||
compile(File, Opts) ->
|
||||
Verbose = proplists:get_value(verbose, Opts, false),
|
||||
OutFile = proplists:get_value(outfile, Opts, undefined),
|
||||
|
||||
try
|
||||
Res = aeso_compiler:file(File, [pp_ast || Verbose]),
|
||||
write_outfile(OutFile, Res),
|
||||
io:format("\nCompiled successfully!\n")
|
||||
catch
|
||||
%% The compiler errors.
|
||||
error:{type_errors, Errors} ->
|
||||
io:format("\n~s\n", [string:join(["** Type errors\n" | Errors], "\n")]);
|
||||
error:{parse_errors, Errors} ->
|
||||
io:format("\n~s\n", [string:join(["** Parse errors\n" | Errors], "\n")]);
|
||||
error:{code_errors, Errors} ->
|
||||
ErrorStrings = [ io_lib:format("~p", [E]) || E <- Errors ],
|
||||
io:format("\n~s\n", [string:join(["** Code errors\n" | ErrorStrings], "\n")]);
|
||||
%% General programming errors in the compiler.
|
||||
error:Error ->
|
||||
Where = hd(erlang:get_stacktrace()),
|
||||
ErrorString = io_lib:format("Error: ~p in\n ~p", [Error,Where]),
|
||||
io:format("\n~s\n", [ErrorString])
|
||||
end.
|
||||
|
||||
write_outfile(undefined, _) -> ok;
|
||||
write_outfile(Out, ResMap) ->
|
||||
%% Lazy approach
|
||||
file:write_file(Out, term_to_binary(ResMap)),
|
||||
io:format("Output written to: ~s\n", [Out]).
|
||||
|
||||
print_vsn() ->
|
||||
{ok, Vsn} = aeso_compiler:version(),
|
||||
io:format("Compiler version: ~s\n", [Vsn]).
|
Loading…
x
Reference in New Issue
Block a user