1760 lines
52 KiB
HTML
1760 lines
52 KiB
HTML
|
||
<!doctype html>
|
||
<html lang="en" class="no-js">
|
||
<head>
|
||
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
||
|
||
|
||
|
||
<link rel="icon" href="../favicon.png">
|
||
<meta name="generator" content="mkdocs-1.2.4, mkdocs-material-7.3.6">
|
||
|
||
|
||
|
||
<title>Changelog - æternity Sophia Language</title>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="../assets/stylesheets/main.a57b2b03.min.css">
|
||
|
||
|
||
<link rel="stylesheet" href="../assets/stylesheets/palette.3f5d1f46.min.css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700%7CRoboto+Mono&display=fallback">
|
||
<style>:root{--md-text-font-family:"Roboto";--md-code-font-family:"Roboto Mono"}</style>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</head>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="pink" data-md-color-accent="pink">
|
||
|
||
|
||
<script>function __prefix(e){return new URL("..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
|
||
|
||
<script>var palette=__get("__palette");if(null!==palette&&"object"==typeof palette.color)for(var key in palette.color)document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
|
||
|
||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||
<label class="md-overlay" for="__drawer"></label>
|
||
<div data-md-component="skip">
|
||
|
||
|
||
<a href="#changelog" class="md-skip">
|
||
Skip to content
|
||
</a>
|
||
|
||
</div>
|
||
<div data-md-component="announce">
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<header class="md-header" data-md-component="header">
|
||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||
<a href=".." title="æternity Sophia Language" class="md-header__button md-logo" aria-label="æternity Sophia Language" data-md-component="logo">
|
||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
|
||
|
||
</a>
|
||
<label class="md-header__button md-icon" for="__drawer">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
|
||
</label>
|
||
<div class="md-header__title" data-md-component="header-title">
|
||
<div class="md-header__ellipsis">
|
||
<div class="md-header__topic">
|
||
<span class="md-ellipsis">
|
||
æternity Sophia Language
|
||
</span>
|
||
</div>
|
||
<div class="md-header__topic" data-md-component="header-topic">
|
||
<span class="md-ellipsis">
|
||
|
||
Changelog
|
||
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<form class="md-header__option" data-md-component="palette">
|
||
|
||
|
||
|
||
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="pink" data-md-color-accent="pink" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
|
||
|
||
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31z"/></svg>
|
||
</label>
|
||
|
||
|
||
|
||
|
||
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="pink" data-md-color-accent="pink" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
|
||
|
||
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22z"/></svg>
|
||
</label>
|
||
|
||
|
||
</form>
|
||
|
||
|
||
|
||
<label class="md-header__button md-icon" for="__search">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
|
||
</label>
|
||
|
||
<div class="md-search" data-md-component="search" role="dialog">
|
||
<label class="md-search__overlay" for="__search"></label>
|
||
<div class="md-search__inner" role="search">
|
||
<form class="md-search__form" name="search">
|
||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||
<label class="md-search__icon md-icon" for="__search">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
||
</label>
|
||
<nav class="md-search__options" aria-label="Search">
|
||
|
||
<a href="javascript:void(0)" class="md-search__icon md-icon" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08z"/></svg>
|
||
</a>
|
||
|
||
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
|
||
</button>
|
||
</nav>
|
||
|
||
<div class="md-search__suggest" data-md-component="search-suggest"></div>
|
||
|
||
</form>
|
||
<div class="md-search__output">
|
||
<div class="md-search__scrollwrap" data-md-scrollfix>
|
||
<div class="md-search-result" data-md-component="search-result">
|
||
<div class="md-search-result__meta">
|
||
Initializing search
|
||
</div>
|
||
<ol class="md-search-result__list"></ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="md-header__source">
|
||
|
||
<a href="https://github.com/aeternity/aesophia" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
GitHub
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
</nav>
|
||
|
||
</header>
|
||
|
||
<div class="md-container" data-md-component="container">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<main class="md-main" data-md-component="main">
|
||
<div class="md-main__inner md-grid">
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
|
||
<label class="md-nav__title" for="__drawer">
|
||
<a href=".." title="æternity Sophia Language" class="md-nav__button md-logo" aria-label="æternity Sophia Language" data-md-component="logo">
|
||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54z"/></svg>
|
||
|
||
</a>
|
||
æternity Sophia Language
|
||
</label>
|
||
|
||
<div class="md-nav__source">
|
||
|
||
<a href="https://github.com/aeternity/aesophia" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
GitHub
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href=".." class="md-nav__link">
|
||
Introduction
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../sophia_syntax/" class="md-nav__link">
|
||
Syntax
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../sophia_features/" class="md-nav__link">
|
||
Features
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../sophia_stdlib/" class="md-nav__link">
|
||
Standard library
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../sophia_examples/" class="md-nav__link">
|
||
Contract examples
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active">
|
||
|
||
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||
Changelog
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<a href="./" class="md-nav__link md-nav__link--active">
|
||
Changelog
|
||
</a>
|
||
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#unreleased" class="md-nav__link">
|
||
Unreleased
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Unreleased">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#610-2021-10-20" class="md-nav__link">
|
||
6.1.0 - 2021-10-20
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="6.1.0 - 2021-10-20">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_1" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_1" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#602-2021-07-05" class="md-nav__link">
|
||
6.0.2 2021-07-05
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="6.0.2 2021-07-05">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_2" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#601-2021-06-24" class="md-nav__link">
|
||
6.0.1 2021-06-24
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="6.0.1 2021-06-24">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_3" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#600-2021-05-26" class="md-nav__link">
|
||
6.0.0 2021-05-26
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="6.0.0 2021-05-26">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_2" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_4" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_1" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#500-2021-04-30" class="md-nav__link">
|
||
5.0.0 2021-04-30
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="5.0.0 2021-04-30">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_3" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_5" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_2" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#430" class="md-nav__link">
|
||
4.3.0
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="4.3.0">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_4" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_6" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_3" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#420-2020-01-15" class="md-nav__link">
|
||
4.2.0 - 2020-01-15
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="4.2.0 - 2020-01-15">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_5" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_7" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_4" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#410-2019-11-26" class="md-nav__link">
|
||
4.1.0 - 2019-11-26
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="4.1.0 - 2019-11-26">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_6" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_8" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_5" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#400-2019-10-11" class="md-nav__link">
|
||
4.0.0 - 2019-10-11
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="4.0.0 - 2019-10-11">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_7" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_9" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_6" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#320-2019-06-28" class="md-nav__link">
|
||
3.2.0 - 2019-06-28
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="3.2.0 - 2019-06-28">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_8" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_10" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_7" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#310-2019-06-03" class="md-nav__link">
|
||
3.1.0 - 2019-06-03
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="3.1.0 - 2019-06-03">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_9" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_11" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_8" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#300-2019-05-21" class="md-nav__link">
|
||
3.0.0 - 2019-05-21
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="3.0.0 - 2019-05-21">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_10" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_12" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_9" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#210-2019-04-11" class="md-nav__link">
|
||
2.1.0 - 2019-04-11
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="2.1.0 - 2019-04-11">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_11" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_13" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#200-2019-03-11" class="md-nav__link">
|
||
2.0.0 - 2019-03-11
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="2.0.0 - 2019-03-11">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_12" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_14" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#unreleased" class="md-nav__link">
|
||
Unreleased
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Unreleased">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#610-2021-10-20" class="md-nav__link">
|
||
6.1.0 - 2021-10-20
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="6.1.0 - 2021-10-20">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_1" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_1" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#602-2021-07-05" class="md-nav__link">
|
||
6.0.2 2021-07-05
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="6.0.2 2021-07-05">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_2" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#601-2021-06-24" class="md-nav__link">
|
||
6.0.1 2021-06-24
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="6.0.1 2021-06-24">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_3" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#600-2021-05-26" class="md-nav__link">
|
||
6.0.0 2021-05-26
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="6.0.0 2021-05-26">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_2" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_4" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_1" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#500-2021-04-30" class="md-nav__link">
|
||
5.0.0 2021-04-30
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="5.0.0 2021-04-30">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_3" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_5" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_2" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#430" class="md-nav__link">
|
||
4.3.0
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="4.3.0">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_4" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_6" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_3" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#420-2020-01-15" class="md-nav__link">
|
||
4.2.0 - 2020-01-15
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="4.2.0 - 2020-01-15">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_5" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_7" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_4" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#410-2019-11-26" class="md-nav__link">
|
||
4.1.0 - 2019-11-26
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="4.1.0 - 2019-11-26">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_6" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_8" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_5" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#400-2019-10-11" class="md-nav__link">
|
||
4.0.0 - 2019-10-11
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="4.0.0 - 2019-10-11">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_7" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_9" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_6" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#320-2019-06-28" class="md-nav__link">
|
||
3.2.0 - 2019-06-28
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="3.2.0 - 2019-06-28">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_8" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_10" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_7" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#310-2019-06-03" class="md-nav__link">
|
||
3.1.0 - 2019-06-03
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="3.1.0 - 2019-06-03">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_9" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_11" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_8" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#300-2019-05-21" class="md-nav__link">
|
||
3.0.0 - 2019-05-21
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="3.0.0 - 2019-05-21">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_10" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_12" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#removed_9" class="md-nav__link">
|
||
Removed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#210-2019-04-11" class="md-nav__link">
|
||
2.1.0 - 2019-04-11
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="2.1.0 - 2019-04-11">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_11" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_13" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#200-2019-03-11" class="md-nav__link">
|
||
2.0.0 - 2019-03-11
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="2.0.0 - 2019-03-11">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#added_12" class="md-nav__link">
|
||
Added
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#changed_14" class="md-nav__link">
|
||
Changed
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="md-content" data-md-component="content">
|
||
<article class="md-content__inner md-typeset">
|
||
|
||
|
||
|
||
<h1 id="changelog">Changelog</h1>
|
||
<p>All notable changes to this project will be documented in this file.</p>
|
||
<p>The format is based on <a href="https://keepachangelog.com/en/1.0.0/">Keep a Changelog</a>,
|
||
and this project adheres to <a href="https://semver.org/spec/v2.0.0.html">Semantic Versioning</a>.</p>
|
||
<h2 id="unreleased"><a href="https://github.com/aeternity/aesophia/compare/v6.1.0...HEAD">Unreleased</a></h2>
|
||
<h3 id="added">Added</h3>
|
||
<ul>
|
||
<li>Added support for <code>EXIT</code> opcode via <code>exit : (string) => 'a</code> function (behaves same as <code>ABORT</code>, but consumes all gas).</li>
|
||
<li>Compiler warnings for the follwing: shadowing, negative spends, division by zero, unused functions, unused includes, unused stateful annotations, unused variables, unused parameters, unused user-defined type, dead return value.</li>
|
||
<li>The pipe operator |>
|
||
<div class="highlight"><pre><span></span><code>[1, 2, 3] |> List.first |> Option.is_some // Option.is_some(List.first([1, 2, 3]))
|
||
</code></pre></div></li>
|
||
<li>Allow binary operators to be used as lambdas
|
||
<div class="highlight"><pre><span></span><code>function sum(l : list(int)) : int = foldl((+), 0, l)
|
||
function logical_and(x, y) = (&&)(x, y)
|
||
</code></pre></div></li>
|
||
<li>Contract interfaces polymorphism</li>
|
||
</ul>
|
||
<h3 id="changed">Changed</h3>
|
||
<ul>
|
||
<li>Error messages have been restructured (less newlines) to provide more unified errors. Also <code>pp_oneline/1</code> has been added.</li>
|
||
<li>Ban empty record definitions (e.g. <code>record r = {}</code> would give an error).</li>
|
||
</ul>
|
||
<h3 id="removed">Removed</h3>
|
||
<ul>
|
||
<li>Support for AEVM has been entirely wiped</li>
|
||
</ul>
|
||
<h2 id="610-2021-10-20"><a href="https://github.com/aeternity/aesophia/compare/v6.0.2...v6.1.0">6.1.0</a> - 2021-10-20</h2>
|
||
<h3 id="added_1">Added</h3>
|
||
<ul>
|
||
<li><code>Bitwise</code> stdlib</li>
|
||
<li><code>Set</code> stdlib</li>
|
||
<li><code>Option.force_msg</code></li>
|
||
<li>Loading namespaces into the current scope (e.g. <code>using Pair</code>)</li>
|
||
<li>Assign patterns to variables (e.g. <code>let x::(t = y::_) = [1, 2, 3, 4]</code> where <code>t == [2, 3, 4]</code>)</li>
|
||
<li>Add builtin types (<code>AENS.name, AENS.pointee, Chain.ttl, Chain.base_tx, Chain.ga_meta_tx, Chain.paying_for_tx</code>) to
|
||
the calldata and result decoder</li>
|
||
<li>Patterns guards
|
||
<div class="highlight"><pre><span></span><code>switch(x)
|
||
a::[] | a > 10 => 1
|
||
_ => 2
|
||
</code></pre></div>
|
||
<div class="highlight"><pre><span></span><code>function
|
||
f(a::[]) | a > 10 = 1
|
||
f(_) = 2
|
||
</code></pre></div></li>
|
||
</ul>
|
||
<h3 id="changed_1">Changed</h3>
|
||
<ul>
|
||
<li>Fixed the ACI renderer, it shouldn't drop the <code>stateful</code> modifier</li>
|
||
</ul>
|
||
<h2 id="602-2021-07-05"><a href="https://github.com/aeternity/aesophia/compare/v6.0.1...v6.0.2">6.0.2</a> 2021-07-05</h2>
|
||
<h3 id="changed_2">Changed</h3>
|
||
<ul>
|
||
<li><code>List.from_to_step</code> now forbids non-positive step (this change does
|
||
<em>not</em> alter the behavior of the previously deployed contracts)</li>
|
||
<li>Fixed leaking state between contracts</li>
|
||
</ul>
|
||
<h2 id="601-2021-06-24"><a href="https://github.com/aeternity/aesophia/compare/v6.0.0...v6.0.1">6.0.1</a> 2021-06-24</h2>
|
||
<h3 id="changed_3">Changed</h3>
|
||
<ul>
|
||
<li>Fixed a bug in calldata encoding for contracts containing multiple contracts</li>
|
||
<li>Fixed a missing <code>include</code> in the <code>Frac</code> standard library</li>
|
||
</ul>
|
||
<h2 id="600-2021-05-26"><a href="https://github.com/aeternity/aesophia/compare/v5.0.0...v6.0.0">6.0.0</a> 2021-05-26</h2>
|
||
<h3 id="added_2">Added</h3>
|
||
<ul>
|
||
<li>Child contracts</li>
|
||
<li><code>Chain.clone</code></li>
|
||
<li><code>Chain.create</code></li>
|
||
<li><code>Chain.bytecode_hash</code></li>
|
||
<li>Minor support for variadic functions</li>
|
||
<li><code>void</code> type that represents an empty type</li>
|
||
<li><code>Call.fee</code> builtin</li>
|
||
</ul>
|
||
<h3 id="changed_4">Changed</h3>
|
||
<ul>
|
||
<li>Contract interfaces must be now invocated by <code>contract interface</code> keywords</li>
|
||
<li><code>main</code> keyword to indicate the main contract in case there are child contracts around</li>
|
||
<li><code>List.sum</code> and <code>List.product</code> no longer use <code>List.foldl</code></li>
|
||
</ul>
|
||
<h3 id="removed_1">Removed</h3>
|
||
<h2 id="500-2021-04-30"><a href="https://github.com/aeternity/aesophia/compare/v4.3.0...v5.0.0">5.0.0</a> 2021-04-30</h2>
|
||
<h3 id="added_3">Added</h3>
|
||
<ul>
|
||
<li>A new and improved <a href="https://github.com/aeternity/aesophia/blob/master/docs/sophia_stdlib.md#string"><code>String</code> standard library</a>
|
||
has been added. Use it by <code>include "String.aes"</code>. It includes functions for
|
||
turning strings into lists of characters for detailed manipulation. For
|
||
example:
|
||
<div class="highlight"><pre><span></span><code>include "String.aes"
|
||
contract C =
|
||
entrypoint filter_all_a(s: string) : string =
|
||
String.from_list(List.filter((c : char) => c != 'a', String.to_list(s)))
|
||
</code></pre></div>
|
||
will return a list with all <code>a</code>'s removed.</li>
|
||
</ul>
|
||
<p>There are also convenience functions <code>split</code>, <code>concat</code>, <code>to_upper</code>,
|
||
<code>to_lower</code>, etc.</p>
|
||
<p>All String functions in FATEv2 operate on unicode code points.
|
||
- Operations for pairing-based cryptography has been added the operations
|
||
are in the standard library <a href="https://github.com/aeternity/aesophia/blob/master/docs/sophia_stdlib.md#bls12_381">BLS12_381</a>.
|
||
With these operations it is possible to do Zero Knowledge-proofs, etc.
|
||
The operations are for the BLS12-381 curve (as the name suggests).
|
||
- Calls to functions in other contracts (i.e. <em>remote calls</em>) can now be
|
||
<a href="https://github.com/aeternity/aesophia/blob/master/docs/sophia.md#protected-contract-calls"><code>protected</code></a>.
|
||
If a contract call fails for any reason (for instance, the remote contract
|
||
crashes or runs out of gas, or the entrypoint doesn't exist or has the
|
||
wrong type) the parent call also fails. To make it possible to recover
|
||
from failures, contract calls takes a named argument <code>protected : bool</code>
|
||
(default <code>false</code>).</p>
|
||
<p>If <code>protected = true</code> the result of the contract call is wrapped in an
|
||
<code>option</code>, and <code>Some(value)</code> indicates a succesful execution and <code>None</code>
|
||
indicates that the contract call failed. Note: any gas consumed until
|
||
the failure is still charged, but all side effects in the remote
|
||
contract are rolled back on failure.
|
||
- A new chain operation <a href="https://github.com/aeternity/aesophia/blob/master/docs/sophia.md#aens-interface"><code>AENS.update</code></a>
|
||
is supported.
|
||
- New chain exploring operations <code>AENS.lookup</code> and <code>Oracle.expiry</code> to
|
||
look up an AENS record and the expiry of an Oracle respectively, are added.
|
||
- Transaction introspection (<code>Auth.tx</code>) has been added. When a Generalized
|
||
account is authorized, the authorization function needs access to the
|
||
transaction (and the transaction hash) for the wrapped transaction. The
|
||
transaction and the transaction hash is available <code>Auth.tx</code>, it is only
|
||
available during authentication if invoked by a normal contract call
|
||
it returns <code>None</code>. Example:
|
||
<div class="highlight"><pre><span></span><code>switch(Auth.tx)
|
||
None => abort("Not in Auth context")
|
||
Some(tx0) =>
|
||
switch(tx0.tx)
|
||
Chain.SpendTx(_, amount, _) => amount > 400
|
||
Chain.ContractCallTx(_, _) => true
|
||
_ => false
|
||
</code></pre></div>
|
||
- A debug mode is a added to the compiler. Right now its only use is to
|
||
turn off hermetization.</p>
|
||
<h3 id="changed_5">Changed</h3>
|
||
<ul>
|
||
<li>The function <code>Chain.block_hash(height)</code> is now (in FATEv2) defined for
|
||
the current height - this used to be an error.</li>
|
||
<li>Standard library: Sort is optimized to do <code>mergesort</code> and a <code>contains</code>
|
||
function is added.</li>
|
||
<li>Improved type errors and explicit errors for some syntax errors (empty code
|
||
blocks, etc.).</li>
|
||
<li>Compiler optimization: The ACI is generated alongside bytecode. This means
|
||
that multiple compiler passes can be avoided.</li>
|
||
<li>Compiler optimization: Improved parsing (less stack used when transpiled).</li>
|
||
<li>A bug where constraints were handled out of order fixed.</li>
|
||
<li>Fixed calldata decoding for singleton records.</li>
|
||
<li>Improved the documentation w.r.t. signatures, especially stressing the fact that
|
||
the network ID is a part of what is signed.</li>
|
||
</ul>
|
||
<h3 id="removed_2">Removed</h3>
|
||
<h2 id="430"><a href="https://github.com/aeternity/aesophia/compare/v4.2.0...v4.3.0">4.3.0</a></h2>
|
||
<h3 id="added_4">Added</h3>
|
||
<ul>
|
||
<li>Added documentation (moved from <code>protocol</code>)</li>
|
||
<li><code>Frac.aes</code> – library for rational numbers</li>
|
||
<li>Added some more meaningful error messages</li>
|
||
<li>Exported several parsing functionalities</li>
|
||
<li>With option <code>keep_included</code> it is possible to see which files were included during the parse</li>
|
||
<li>There is a function <code>run_parser</code> that be used to evaluate any parsing rule</li>
|
||
<li>Exported parsers: <code>body</code>, <code>type</code> and <code>decl</code></li>
|
||
</ul>
|
||
<h3 id="changed_6">Changed</h3>
|
||
<ul>
|
||
<li>Performance improvements in the standard library</li>
|
||
<li>Fixed ACI encoder to handle <code>-</code> unary operator</li>
|
||
<li>Fixed including by absolute path</li>
|
||
<li>Fixed variant type printing in the ACI error messages</li>
|
||
<li>Fixed pretty printing of combined function clauses</li>
|
||
</ul>
|
||
<h3 id="removed_3">Removed</h3>
|
||
<ul>
|
||
<li><code>let</code> definitions are no longer supported in the toplevel of the contract</li>
|
||
<li>type declarations are no longer supported</li>
|
||
</ul>
|
||
<h2 id="420-2020-01-15"><a href="https://github.com/aeternity/aesophia/compare/v4.1.0...v4.2.0">4.2.0</a> - 2020-01-15</h2>
|
||
<h3 id="added_5">Added</h3>
|
||
<ul>
|
||
<li>Allow separate entrypoint/function type signature and definition, and pattern
|
||
matching in left-hand sides:
|
||
<div class="highlight"><pre><span></span><code> function
|
||
length : list('a) => int
|
||
length([]) = 0
|
||
length(x :: xs) = 1 + length(xs)
|
||
</code></pre></div></li>
|
||
<li>Allow pattern matching in list comprehension generators (filtering out match
|
||
failures):
|
||
<div class="highlight"><pre><span></span><code> function somes(xs : list(option('a))) : list('a) =
|
||
[ x | Some(x) <- xs ]
|
||
</code></pre></div></li>
|
||
<li>Allow pattern matching in let-bindings (aborting on match failures):
|
||
<div class="highlight"><pre><span></span><code> function test(m : map(int, int)) =
|
||
let Some(x) = Map.lookup(m, 0)
|
||
x
|
||
</code></pre></div></li>
|
||
</ul>
|
||
<h3 id="changed_7">Changed</h3>
|
||
<ul>
|
||
<li>FATE code generator improvements.</li>
|
||
<li>Bug fix: Handle qualified constructors in patterns.</li>
|
||
<li>Bug fix: Allow switching also on negative numbers.</li>
|
||
</ul>
|
||
<h3 id="removed_4">Removed</h3>
|
||
<h2 id="410-2019-11-26"><a href="https://github.com/aeternity/aesophia/compare/v4.0.0...v4.1.0">4.1.0</a> - 2019-11-26</h2>
|
||
<h3 id="added_6">Added</h3>
|
||
<ul>
|
||
<li>Support encoding and decoding bit fields in call arguments and results.</li>
|
||
</ul>
|
||
<h3 id="changed_8">Changed</h3>
|
||
<ul>
|
||
<li>Various improvements to FATE code generator.</li>
|
||
</ul>
|
||
<h3 id="removed_5">Removed</h3>
|
||
<h2 id="400-2019-10-11"><a href="https://github.com/aeternity/aesophia/compare/v3.2.0...v4.0.0">4.0.0</a> - 2019-10-11</h2>
|
||
<h3 id="added_7">Added</h3>
|
||
<ul>
|
||
<li><code>Address.to_contract</code> - casts an address to a (any) contract type.</li>
|
||
<li>Pragma to check compiler version, e.g. <code>@compiler >= 4.0</code>.</li>
|
||
<li>Handle numeric escapes, i.e. <code>"\x19Ethereum Signed Message:\n"</code>, and similar strings.</li>
|
||
<li><code>Bytes.concat</code> and <code>Bytes.split</code> are added to be able to
|
||
(de-)construct byte arrays.</li>
|
||
<li><code>[a..b]</code> language construct, returning the list of numbers between
|
||
<code>a</code> and <code>b</code> (inclusive). Returns the empty list if <code>a</code> > <code>b</code>.</li>
|
||
<li><a href="https://github.com/aeternity/aesophia/blob/master/docs/sophia_stdlib.md">Standard libraries</a></li>
|
||
<li>Checks that <code>init</code> is not called from other functions.</li>
|
||
<li>FATE backend - the compiler is able to produce VM code for both <code>AEVM</code> and <code>FATE</code>. Many
|
||
of the APIs now take <code>{backend, aevm | fate}</code> to decide wich backend to produce artifacts
|
||
for.</li>
|
||
<li>New builtin functions <code>Crypto.ecrecover_secp256k1: (hash, bytes(65)) => option(bytes(20))</code>
|
||
and <code>Crypto.ecverify_secp256k1 : (hash, bytes(20), bytes(65)) => bool</code> for recovering
|
||
and verifying an Ethereum address for a message hash and a signature.</li>
|
||
<li>Sophia supports list comprehensions known from languages like Python, Haskell or Erlang.
|
||
Example syntax:
|
||
<div class="highlight"><pre><span></span><code>[x + y | x <- [1,2,3,4,5], let k = x*x, if (k > 5), y <- [k, k+1, k+2]]
|
||
// yields [12,13,14,20,21,22,30,31,32]
|
||
</code></pre></div></li>
|
||
<li>A new contract, and endpoint, modifier <code>payable</code> is introduced. Contracts, and enpoints,
|
||
that shall be able to receive funds should be marked as payable. <code>Address.is_payable(a)</code>
|
||
can be used to check if an (contract) address is payable or not.</li>
|
||
</ul>
|
||
<h3 id="changed_9">Changed</h3>
|
||
<ul>
|
||
<li>Nice type error if contract function is called as from a namespace.</li>
|
||
<li>Fail on function definitions in contracts other than the main contract.</li>
|
||
<li>Bug fix in variable optimization - don't discard writes to the store/state.</li>
|
||
<li>Bug fixes in error reporting.</li>
|
||
<li>Bug fix in variable liveness analysis for FATE.</li>
|
||
<li>Error messages are changed into a uniform format, and more helpful
|
||
messages have been added.</li>
|
||
<li><code>Crypto.<hash_fun></code> and <code>String.<hash_fun></code> for byte arrays now only
|
||
hash the actual byte array - not the internal ABI format.</li>
|
||
<li>More strict checks for polymorphic oracles and higher order oracles
|
||
and entrypoints.</li>
|
||
<li><code>AENS.claim</code> is updated with a <code>NameFee</code> field - to be able to do
|
||
name auctions within contracts.</li>
|
||
<li>Fixed a bug in <code>Bytes.to_str</code> for AEVM.</li>
|
||
<li>New syntax for tuple types. Now 0-tuple type is encoded as <code>unit</code> instead of <code>()</code> and
|
||
regular tuples are encoded by interspersing inner types with <code>*</code>, for instance <code>int * string</code>.
|
||
Parens are not necessary. Note it only affects the types, values remain as their were before,
|
||
so <code>(1, "a") : int * string</code></li>
|
||
<li>The <code>AENS.transfer</code> and <code>AENS.revoke</code> functions have been updated to take a name <code>string</code>
|
||
instead of a name <code>hash</code>.</li>
|
||
<li>Fixed a bug where the <code>AEVM</code> backend complained about a missing <code>init</code> function when
|
||
trying to generate calldata from an ACI-generated interface.</li>
|
||
<li>Compiler now returns the ABI-version in the compiler result map.</li>
|
||
<li>Renamed <code>Crypto.ecverify</code> and <code>Crypto.ecverify_secp256k1</code> into <code>Crypto.verify_sig</code> and
|
||
<code>Crypto.verify_sig_secp256k1</code> respectively.</li>
|
||
</ul>
|
||
<h3 id="removed_6">Removed</h3>
|
||
<h2 id="320-2019-06-28"><a href="https://github.com/aeternity/aesophia/compare/v3.1.0...v3.2.0">3.2.0</a> - 2019-06-28</h2>
|
||
<h3 id="added_8">Added</h3>
|
||
<ul>
|
||
<li>New builtin function <code>require : (bool, string) => ()</code>. Defined as
|
||
<div class="highlight"><pre><span></span><code>function require(b, err) = if(!b) abort(err)
|
||
</code></pre></div></li>
|
||
<li>New builtin functions
|
||
<div class="highlight"><pre><span></span><code>Bytes.to_str : bytes(_) => string
|
||
Bytes.to_int : bytes(_) => int
|
||
</code></pre></div>
|
||
for converting a byte array to a hex string and interpreting it as a
|
||
big-endian encoded integer respectively.</li>
|
||
</ul>
|
||
<h3 id="changed_10">Changed</h3>
|
||
<ul>
|
||
<li>Public contract functions must now be declared as <em>entrypoints</em>:
|
||
<div class="highlight"><pre><span></span><code>contract Example =
|
||
// Exported
|
||
entrypoint exported_fun(x) = local_fun(x)
|
||
// Not exported
|
||
function local_fun(x) = x
|
||
</code></pre></div>
|
||
Functions in namespaces still use <code>function</code> (and <code>private function</code> for
|
||
private functions).</li>
|
||
<li>The return type of <code>Chain.block_hash(height)</code> has changed, it used to
|
||
be <code>int</code>, where <code>0</code> denoted an incorrect height. New return type is
|
||
<code>option(hash)</code>, where <code>None</code> represents an incorrect height.</li>
|
||
<li>Event name hashes now use BLAKE2b instead of Keccak256.</li>
|
||
<li>Fixed bugs when defining record types in namespaces.</li>
|
||
<li>Fixed a bug in include path handling when passing options to the compiler.</li>
|
||
</ul>
|
||
<h3 id="removed_7">Removed</h3>
|
||
<h2 id="310-2019-06-03"><a href="https://github.com/aeternity/aesophia/compare/v3.0.0...v3.1.0">3.1.0</a> - 2019-06-03</h2>
|
||
<h3 id="added_9">Added</h3>
|
||
<h3 id="changed_11">Changed</h3>
|
||
<ul>
|
||
<li>Keyword <code>indexed</code> is now optional for word typed (<code>bool</code>, <code>int</code>, <code>address</code>,
|
||
...) event arguments.</li>
|
||
<li>State variable pretty printing now produce <code>'a, 'b, ...</code> instead of <code>'1, '2, ...</code>.</li>
|
||
<li>ACI is restructured and improved:<ul>
|
||
<li><code>state</code> and <code>event</code> types (if present) now appear at the top level.</li>
|
||
<li>Namespaces and remote interfaces are no longer ignored.</li>
|
||
<li>All type definitions are included in the interface rendering.</li>
|
||
<li>API functions are renamed, new functions are <code>contract_interface</code>
|
||
and <code>render_aci_json</code>.</li>
|
||
</ul>
|
||
</li>
|
||
<li>Fixed a bug in <code>create_calldata</code>/<code>to_sophia_value</code> - it can now handle negative
|
||
literals.</li>
|
||
</ul>
|
||
<h3 id="removed_8">Removed</h3>
|
||
<h2 id="300-2019-05-21"><a href="https://github.com/aeternity/aesophia/compare/v2.1.0...v3.0.0">3.0.0</a> - 2019-05-21</h2>
|
||
<h3 id="added_10">Added</h3>
|
||
<ul>
|
||
<li><code>stateful</code> annotations are now properly enforced. Functions must be marked stateful
|
||
in order to update the state or spend tokens.</li>
|
||
<li>Primitives <code>Contract.creator</code>, <code>Address.is_contract</code>, <code>Address.is_oracle</code>,
|
||
<code>Oracle.check</code> and <code>Oracle.check_query</code> has been added to Sophia.</li>
|
||
<li>A byte array type <code>bytes(N)</code> has been added to generalize <code>hash (== bytes(32))</code> and
|
||
<code>signature (== bytes(64))</code> and allow for byte arrays of arbitrary fixed length.</li>
|
||
<li><code>Crypto.ecverify_secp256k1</code> has been added.</li>
|
||
</ul>
|
||
<h3 id="changed_12">Changed</h3>
|
||
<ul>
|
||
<li>Address literals (+ Oracle, Oracle query and remote contracts) have been changed
|
||
from <code>#<hex></code> to address as <code>ak_<base58check></code>, oracle <code>ok_<base58check></code>,
|
||
oracle query <code>oq_<base58check></code> and remote contract <code>ct_<base58check></code>.</li>
|
||
<li>The compilation and typechecking of <code>letfun</code> (e.g. <code>let m(f, xs) = map(f, xs)</code>) was
|
||
not working properly and has been fixed.</li>
|
||
</ul>
|
||
<h3 id="removed_9">Removed</h3>
|
||
<ul>
|
||
<li><code>let rec</code> has been removed from the language, it has never worked.</li>
|
||
<li>The standalone CLI compiler is served in the repo <code>aeternity/aesophia_cli</code> and has
|
||
been completely removed from <code>aesophia</code>.</li>
|
||
</ul>
|
||
<h2 id="210-2019-04-11"><a href="https://github.com/aeternity/aesophia/compare/v2.0.0...v2.1.0">2.1.0</a> - 2019-04-11</h2>
|
||
<h3 id="added_11">Added</h3>
|
||
<ul>
|
||
<li>Stubs (not yet wired up) for compilation to FATE</li>
|
||
<li>Add functions specific for Calldata decoding</li>
|
||
<li>Support for <code>Auth.tx_hash</code>, not available in AEVM until Fortuna release</li>
|
||
</ul>
|
||
<h3 id="changed_13">Changed</h3>
|
||
<ul>
|
||
<li>Improvements to the ACI generator</li>
|
||
</ul>
|
||
<h2 id="200-2019-03-11"><a href="https://github.com/aeternity/aesophia/tag/v2.0.0">2.0.0</a> - 2019-03-11</h2>
|
||
<h3 id="added_12">Added</h3>
|
||
<ul>
|
||
<li>Add <code>Crypto.ecverify</code> to the compiler.</li>
|
||
<li>Add <code>Crypto.sha3</code>, <code>Crypto.blake2</code>, <code>Crypto.sha256</code>, <code>String.blake2</code> and
|
||
<code>String.sha256</code> to the compiler.</li>
|
||
<li>Add the <code>bits</code> type for working with bit fields in Sophia.</li>
|
||
<li>Add Namespaces to Sophia in order to simplify using library contracts, etc.</li>
|
||
<li>Add a missig type check on the <code>init</code> function - detects programmer errors earlier.</li>
|
||
<li>Add the ACI (Aeternity Contract Interface) generator.</li>
|
||
</ul>
|
||
<h3 id="changed_14">Changed</h3>
|
||
<ul>
|
||
<li>Use native bit shift operations in builtin functions, reducing gas cost.</li>
|
||
<li>Improve type checking of <code>record</code> fields - generates more understandable error messages.</li>
|
||
<li>Improved, more coherent, error messages.</li>
|
||
<li>Simplify calldata creation - instead of passing a compiled contract, simply
|
||
pass a (stubbed) contract string.</li>
|
||
</ul>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</article>
|
||
</div>
|
||
</div>
|
||
|
||
</main>
|
||
|
||
|
||
<footer class="md-footer">
|
||
|
||
<nav class="md-footer__inner md-grid" aria-label="Footer">
|
||
|
||
|
||
<a href="../sophia_examples/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Contract examples" rel="prev">
|
||
<div class="md-footer__button md-icon">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
||
</div>
|
||
<div class="md-footer__title">
|
||
<div class="md-ellipsis">
|
||
<span class="md-footer__direction">
|
||
Previous
|
||
</span>
|
||
Contract examples
|
||
</div>
|
||
</div>
|
||
</a>
|
||
|
||
|
||
</nav>
|
||
|
||
<div class="md-footer-meta md-typeset">
|
||
<div class="md-footer-meta__inner md-grid">
|
||
<div class="md-footer-copyright">
|
||
|
||
|
||
Made with
|
||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||
Material for MkDocs
|
||
</a>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
</div>
|
||
<div class="md-dialog" data-md-component="dialog">
|
||
<div class="md-dialog__inner md-typeset"></div>
|
||
</div>
|
||
<script id="__config" type="application/json">{"base": "..", "features": ["content.tabs.link", "search.highlight", "search.share", "search.suggest"], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "search": "../assets/javascripts/workers/search.fcfe8b6d.min.js", "version": {"provider": "mike"}}</script>
|
||
|
||
|
||
<script src="../assets/javascripts/bundle.b1047164.min.js"></script>
|
||
|
||
|
||
</body>
|
||
</html> |