Skip to content

Commit

Permalink
deploy: b9248e4
Browse files Browse the repository at this point in the history
  • Loading branch information
damirka committed Apr 25, 2024
1 parent 811702d commit 242e882
Show file tree
Hide file tree
Showing 31 changed files with 178 additions and 252 deletions.
7 changes: 3 additions & 4 deletions before-we-begin/ide-support.html
Original file line number Diff line number Diff line change
Expand Up @@ -182,14 +182,13 @@ <h1 id="set-up-your-ide"><a class="header" href="#set-up-your-ide">Set up your I
features. Whatever IDE you choose, you'll need to use the terminal to run the
<a href="./install-sui.html">Move CLI</a>.</p>
<blockquote>
<p><strong>IntelliJ Plugin does not support Move 2024 edition fully, some syntax won't get highlighted and
not supported.</strong></p>
<p><strong>IntelliJ Plugin does not support Move 2024 edition, some syntax won't get highlighted.</strong></p>
</blockquote>
<h2 id="vscode"><a class="header" href="#vscode">VSCode</a></h2>
<ul>
<li><a href="https://code.visualstudio.com/">VSCode</a> is a free and open source IDE from Microsoft.</li>
<li><a href="https://marketplace.visualstudio.com/items?itemName=move.move-analyzer">Move Analyzer</a> is a
language server extension for Move maintained by <a href="https://mystenlabs.com">MystenLabs</a>.</li>
<li><a href="https://marketplace.visualstudio.com/items?itemName=mysten.move">Move (Extension)</a> is a language
server extension for Move maintained by <a href="https://mystenlabs.com">MystenLabs</a>.</li>
<li><a href="https://marketplace.visualstudio.com/items?itemName=damirka.move-syntax">Move Syntax</a> a simple
syntax highlighting extension for Move by <a href="https://github.com/damirka/">Damir Shamanaev</a>.</li>
</ul>
Expand Down
2 changes: 1 addition & 1 deletion concepts/manifest.html
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ <h2 id="toml-styles"><a class="header" href="#toml-styles">TOML styles</a></h2>
</code></pre>
<h2 id="further-reading"><a class="header" href="#further-reading">Further Reading</a></h2>
<ul>
<li><a href="/reference/packages.html">Packages</a> in the Move Language Reference.</li>
<li><a href="/reference/packages.html">Packages</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion concepts/packages.html
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ <h2 id="links"><a class="header" href="#links">Links</a></h2>
<ul>
<li><a href="./manifest.html">Package Manifest</a></li>
<li><a href="./address.html">Address</a></li>
<li><a href="/reference/packages.html">Packages</a> in the Move Language Reference.</li>
<li><a href="/reference/packages.html">Packages</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
56 changes: 40 additions & 16 deletions foreword.html
Original file line number Diff line number Diff line change
Expand Up @@ -177,29 +177,53 @@ <h1 class="menu-title">The Move Book</h1>
<div id="content" class="content">
<main>
<h1 id="foreword"><a class="header" href="#foreword">Foreword</a></h1>
<p>This book is dedicated to Move, a smart contract language that captures the essence of safe programming with digital assets. Move is designed around the following values:</p>
<p>This book is dedicated to Move, a smart contract language that captures the essence of safe
programming with digital assets. Move is designed around the following values:</p>
<ol>
<li>Secure by default</li>
<li>
<p><strong>Secure by default:</strong> Insecure languages are a serious barrier both to accessible smart contract
development and to mainstream adoption of digital assets. The first duty of a smart contract
language is to prevent as many potential safety issues as possible (e.g. re-entrancy, missing
access control checks, arithmetic overflow, ...) by construction. Any changes to Move should
preserve or enhance its existing security guarantees.</p>
</li>
<li>
<p><strong>Expressive by nature:</strong> Move must enable programmers to write any smart contract they can
imagine. But we care as much about the way it <em>feels</em> to write Move as we do about what Move
allows you to do - the language should be rich enough that the features needed for a task are
available, and minimal enough that the choice is obvious. The Move toolchain should be a
productivity enhancer and a thought partner.</p>
</li>
<li>
<p><strong>Intuitive for all:</strong> Smart contracts are only one part of a useful application. Move should
understand the broader context of its usage and design with both the smart contract developer and
the application developer in mind. It should be easy for developers to learn how to read
Move-managed state, build Move powered transactions, and write new Move code.</p>
</li>
</ol>
<p>Insecure languages are a serious barrier both to accessible smart contract development and to mainstream adoption of digital assets. The first duty of a smart contract language is to prevent as many potential safety issues as possible (e.g. re-entrancy, missing access control checks, arithmetic overflow, ...) by construction. Any changes to Move should preserve or enhance its existing security guarantees.</p>
<ol start="2">
<li>Expressive by nature</li>
</ol>
<p>Move must enable programmers to write any smart contract they can imagine. But we care as much about the way it <em>feels</em> to write Move as we do about what Move allows you to do--the language should be rich enough that the features needed for a task are available, and minimal enough that the choice is obvious. The Move toolchain should be a productivity enhancer and a thought partner.</p>
<ol start="3">
<li>Intuitive for all</li>
</ol>
<p>Smart contracts are only one part of a useful application. Move should understand the broader context of its usage and design with both the smart contract developer and the application developer in mind. It should be easy for developers to learn how to read Move-managed state, build Move powered transactions, and write new Move code.</p>
<p>The core technical elements of Move are:</p>
<ul>
<li>Safe, familiar, and flexible abstractions for digital assets via programmable <em>objects</em>.</li>
<li>A rich <em>ability</em> system (inspired by linear types) that gives programmers extreme control of how values are created, destroyed, stored, copied, and transferred.</li>
<li>A <em>module</em> system with strong encapsulation features to enable code reuse while maintaining this control.</li>
<li>A rich <em>ability</em> system (inspired by linear types) that gives programmers extreme control of how
values are created, destroyed, stored, copied, and transferred.</li>
<li>A <em>module</em> system with strong encapsulation features to enable code reuse while maintaining this
control.</li>
<li><em>Dynamic fields</em> for creating hierarchical relationships between objects.</li>
<li><em>Programmable transaction blocks</em> (PTBs) to enable atomic client-side composition of Move-powered APIs.</li>
<li><em>Programmable transaction blocks</em> (PTBs) to enable atomic client-side composition of Move-powered
APIs.</li>
</ul>
<p>Move was born in 2018 as part of Facebook's Libra project. It was publicly revealed in 2019, the first Move-powered network launched in 2020. As of April 2024, there are numerous Move-powered chains in production with several more in the works. Move is an embedded language with a platform-agnostic core, which means it takes on a slightly different personality in each chain that uses it.</p>
<p>Creating a new programming language and bootstrapping a community around it is an ambitious, long term project. A language has to be an order of magnitude better than alternatives in relevant ways to have a chance, but even then the quality of the community matters more than the technical fundamentals. Move is a young language, but it's off to a good start in terms of both differentiation and community. A small, but fanatical group of smart contract programmers and core contributors united by the Move values are pushing the boundaries of what smart contracts can do, the applications they can enable, and who can (safely) write them. If that inspires you, read on!</p>
<p>Move was born in 2018 as part of Facebook's Libra project. It was publicly revealed in 2019, the
first Move-powered network launched in 2020. As of April 2024, there are numerous Move-powered
chains in production with several more in the works. Move is an embedded language with a
platform-agnostic core, which means it takes on a slightly different personality in each chain that
uses it.</p>
<p>Creating a new programming language and bootstrapping a community around it is an ambitious, long
term project. A language has to be an order of magnitude better than alternatives in relevant ways
to have a chance, but even then the quality of the community matters more than the technical
fundamentals. Move is a young language, but it's off to a good start in terms of both
differentiation and community. A small, but fanatical group of smart contract programmers and core
contributors united by the Move values are pushing the boundaries of what smart contracts can do,
the applications they can enable, and who can (safely) write them. If that inspires you, read on!</p>
<p>— Sam Blackshear, creator of Move</p>

</main>
Expand Down
4 changes: 2 additions & 2 deletions guides/coding-conventions.html
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ <h3 id="module"><a class="header" href="#module">Module</a></h3>
<h3 id="constant"><a class="header" href="#constant">Constant</a></h3>
<ol>
<li>Constants should be in <code>SCREAMING_SNAKE_CASE</code>.</li>
<li>Error constants should be in <code>ECamelCase</code></li>
<li>Error constants should be in <code>EPascalCase</code></li>
</ol>
<pre><code class="language-move">const MAX_PRICE: u64 = 1000;
const EInvalidInput: u64 = 0;
Expand All @@ -204,7 +204,7 @@ <h3 id="function"><a class="header" href="#function">Function</a></h3>
</code></pre>
<h3 id="struct"><a class="header" href="#struct">Struct</a></h3>
<ol>
<li>Struct names should be in <code>CamelCase</code>.</li>
<li>Struct names should be in <code>PascalCase</code>.</li>
<li>Struct fields should be in <code>snake_case</code>.</li>
<li>Capabilities should be suffixed with <code>Cap</code>.</li>
</ol>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/abilities-introduction.html
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ <h2 id="no-abilities"><a class="header" href="#no-abilities">No abilities</a></h
<a href="./../programmability/hot-potato.html">Hot Potato</a> chapter.</p>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/type-abilities.html">Type Abilities</a> in the Move Language Reference.</li>
<li><a href="/reference/type-abilities.html">Type Abilities</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/address.html
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ <h2 id="conversion"><a class="header" href="#conversion">Conversion</a></h2>
</code></pre>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/primitive-types/address.html">Address</a> in the Move Language Reference.</li>
<li><a href="/reference/primitive-types/address.html">Address</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/assert-and-abort.html
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ <h2 id="error-constants"><a class="header" href="#error-constants">Error constan
</code></pre>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/abort-and-assert.html">Abort and Assert</a> in the Move Language Reference.</li>
<li><a href="/reference/abort-and-assert.html">Abort and Assert</a> in the Move Reference.</li>
<li>We suggest reading the <a href="./../guides/better-error-handling.html">Better Error Handling</a> guide to
learn about best practices for error handling in Move.</li>
</ul>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/constants.html
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ <h2 id="using-config-pattern"><a class="header" href="#using-config-pattern">Usi
upgrade.</p>
<h2 id="links"><a class="header" href="#links">Links</a></h2>
<ul>
<li><a href="/reference/constants.html">Constants</a> in the Move Language Reference</li>
<li><a href="/reference/constants.html">Constants</a> in the Move Reference</li>
<li><a href="./../guides/coding-conventions.html#constant">Coding conventions for constants</a></li>
</ul>

Expand Down
2 changes: 1 addition & 1 deletion move-basics/copy-ability.html
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ <h2 id="types-with-the-copy-ability"><a class="header" href="#types-with-the-cop
</ul>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/type-abilities.html">Type Abilities</a> in the Move Language Reference.</li>
<li><a href="/reference/type-abilities.html">Type Abilities</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/drop-ability.html
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ <h2 id="types-with-the-drop-ability"><a class="header" href="#types-with-the-dro
</ul>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/type-abilities.html">Type Abilities</a> in the Move Language Reference.</li>
<li><a href="/reference/type-abilities.html">Type Abilities</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/function.html
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ <h2 id="multiple-return-values"><a class="header" href="#multiple-return-values"
</code></pre>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/functions.html">Functions</a> in the Move Language Reference.</li>
<li><a href="/reference/functions.html">Functions</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/generics.html
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ <h2 id="constraints-on-type-parameters"><a class="header" href="#constraints-on-
</code></pre>
<h2 id="further-reading"><a class="header" href="#further-reading">Further Reading</a></h2>
<ul>
<li><a href="/reference/generics.html">Generics</a> in the Move Language Reference.</li>
<li><a href="/reference/generics.html">Generics</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/module.html
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ <h2 id="module-members"><a class="header" href="#module-members">Module members<
</code></pre>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/modules.html">Modules</a> in the Move Language Reference.</li>
<li><a href="/reference/modules.html">Modules</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/ownership-and-scope.html
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,7 @@ <h2 id="copyable-types"><a class="header" href="#copyable-types">Copyable Types<
from a function, or when they're <em>moved</em> to a scope and then accessed in their original scope.</p>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/variables.html">Local Variables and Scopes</a> in the Move Language Reference.</li>
<li><a href="/reference/variables.html">Local Variables and Scopes</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
4 changes: 2 additions & 2 deletions move-basics/primitive-types.html
Original file line number Diff line number Diff line change
Expand Up @@ -281,8 +281,8 @@ <h3 id="overflow"><a class="header" href="#overflow">Overflow</a></h3>
</code></pre>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/primitive-types/bool.html">Bool</a> in the Move Language Reference.</li>
<li><a href="/reference/primitive-types/integers.html">Integer</a> in the Move Language Reference.</li>
<li><a href="/reference/primitive-types/bool.html">Bool</a> in the Move Reference.</li>
<li><a href="/reference/primitive-types/integers.html">Integer</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/struct-methods.html
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ <h2 id="aliasing-an-external-modules-method"><a class="header" href="#aliasing-a
</code></pre>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/method-syntax.html">Method Syntax</a> in the Move Language Reference.</li>
<li><a href="/reference/method-syntax.html">Method Syntax</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/struct.html
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ <h2 id="unpacking-a-struct"><a class="header" href="#unpacking-a-struct">Unpacki
</code></pre>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/structs.html">Structs</a> in the Move Language Reference.</li>
<li><a href="/reference/structs.html">Structs</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/testing.html
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ <h2 id="utilities-with-test_only"><a class="header" href="#utilities-with-test_o
modules if their visibility is set so.</p>
<h2 id="further-reading"><a class="header" href="#further-reading">Further Reading</a></h2>
<ul>
<li><a href="https://move-book.com/reference/unit-testing.html">Unit Testing</a> in the Move Language Reference.</li>
<li><a href="https://move-book.com/reference/unit-testing.html">Unit Testing</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
2 changes: 1 addition & 1 deletion move-basics/vector.html
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ <h2 id="destroying-a-vector-of-non-droppable-types"><a class="header" href="#des
</code></pre>
<h2 id="further-reading"><a class="header" href="#further-reading">Further reading</a></h2>
<ul>
<li><a href="/reference/primitive-types/vector.html">Vector</a> in the Move Language Reference.</li>
<li><a href="/reference/primitive-types/vector.html">Vector</a> in the Move Reference.</li>
</ul>

</main>
Expand Down
Loading

0 comments on commit 242e882

Please sign in to comment.