Skip to content

Commit

Permalink
feat(community)
Browse files Browse the repository at this point in the history
  • Loading branch information
emil14 committed Mar 2, 2024
1 parent 34af3e8 commit 902c44c
Show file tree
Hide file tree
Showing 9 changed files with 62 additions and 13 deletions.
2 changes: 2 additions & 0 deletions content/community/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ title: Community
weight: 4
---

Nevalang is a promising language with a unique set of characteristics that give it the potential to become a mature and powerful tool in the programming world. We are actively seeking contributors and users to join our community. Whether you're interested in using Nevalang or contributing to its development, there's a place for you here. Don't hesitate to join us and discover how you can make the most of Nevalang today. Who knows? Maybe in the future, we'll see job opportunities in Nevalang. We look forward to welcoming you to our community!

- [Discord](https://discord.gg/8fhETxQR)
- [Reddit](https://www.reddit.com/r/nevalang/)
- [Telegram group](https://t.me/+H1kRClL8ppI1MWJi)
Expand Down
3 changes: 2 additions & 1 deletion public/community/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@
<main>

<h1 class="text-center">Community</h1>
<ul>
<p>Nevalang is a promising language with a unique set of characteristics that give it the potential to become a mature and powerful tool in the programming world. We are actively seeking contributors and users to join our community. Whether you&rsquo;re interested in using Nevalang or contributing to its development, there&rsquo;s a place for you here. Don&rsquo;t hesitate to join us and discover how you can make the most of Nevalang today. Who knows? Maybe in the future, we&rsquo;ll see job opportunities in Nevalang. We look forward to welcoming you to our community!</p>
<ul>
<li><a href="https://discord.gg/8fhETxQR">Discord</a></li>
<li><a href="https://www.reddit.com/r/nevalang/">Reddit</a></li>
<li><a href="https://t.me/+H1kRClL8ppI1MWJi">Telegram group</a></li>
Expand Down
2 changes: 1 addition & 1 deletion public/docs/spec/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
</li>

<li>
<a href="/docs/spec/type-system/"> Type System</a>
<a href="/docs/spec/type-system/"> Type System (WIP)</a>
</li>

<li>
Expand Down
4 changes: 2 additions & 2 deletions public/docs/spec/index.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
<description>This section provides an overview of Nevalang, focusing on its user and compiler perspectives, excluding the type-system which is covered separately. It doesn&amp;rsquo;t delve into the execution details of Nevalang programs, but rather explores the abstractions present in the source code and their governing principles.&#xA;Build Build is set of Nevalang modules. Every module has unique module reference. One of the modules is entry module.&#xA;Module Module is a set of packages.</description>
</item>
<item>
<title>Type System</title>
<title>Type System (WIP)</title>
<link>https://nevalang.org/docs/spec/type-system/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://nevalang.org/docs/spec/type-system/</guid>
<description>WIP</description>
<description>Nevalang has strong static structural type-system&#xA;Strong means that there&amp;rsquo;s no implicit type convertions Static means that semantic analysis for type-safety happens at compile time, not run-time Structural means that types are compatible if their structure is compatible. Unlike nominative sub-typing, names of the types does not matter. This also means that type can carry more information than needed and still be compatible. Base Types These are types that doesn&amp;rsquo;t have definition in neva source code.</description>
</item>
<item>
<title>Runtime</title>
Expand Down
2 changes: 1 addition & 1 deletion public/docs/spec/runtime/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
</li>

<li>
<a href="/docs/spec/type-system/">Type System</a>
<a href="/docs/spec/type-system/">Type System (WIP)</a>
</li>

<li>
Expand Down
2 changes: 1 addition & 1 deletion public/docs/spec/source-code/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
</li>

<li>
<a href="/docs/spec/type-system/">Type System</a>
<a href="/docs/spec/type-system/">Type System (WIP)</a>
</li>

<li>
Expand Down
54 changes: 50 additions & 4 deletions public/docs/spec/type-system/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<meta name="viewport" content="width=device-width">
<title>

Type System | Neva Programming Language
Type System (WIP) | Neva Programming Language

</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
Expand Down Expand Up @@ -51,7 +51,7 @@
</li>

<li>
<a href="/docs/spec/type-system/">Type System</a>
<a href="/docs/spec/type-system/">Type System (WIP)</a>
</li>

<li>
Expand All @@ -61,8 +61,54 @@
</ul>
</aside>
<div class="col-8">
<h1>Type System</h1>
<p><p>WIP</p>
<h1>Type System (WIP)</h1>
<p><p>Nevalang has strong static structural type-system</p>
<ul>
<li><strong>Strong</strong> means that there&rsquo;s no implicit type convertions</li>
<li><strong>Static</strong> means that semantic analysis for type-safety happens at compile time, not run-time</li>
<li><strong>Structural</strong> means that types are compatible if their structure is compatible. Unlike nominative sub-typing, names of the types does not matter. This also means that type can carry more information than needed and still be compatible.</li>
</ul>
<h2 id="base-types">Base Types</h2>
<p>These are types that doesn&rsquo;t have definition in neva source code. Instead compiler is aware of them and knows how to handle them:</p>
<ul>
<li><em>any</em></li>
<li><em>maybe</em></li>
<li><em>boolean</em></li>
<li><em>integer</em></li>
<li><em>float</em></li>
<li><em>string</em></li>
<li><em>map</em></li>
<li><em>list</em></li>
<li><em>enum</em></li>
<li><em>union</em></li>
<li><em>structure</em></li>
</ul>
<h2 id="any-top-type">Any (Top-Type)</h2>
<p><code>any</code> is a <em>top-type</em>. It means that any other type is a <em>sub-type</em> of any. That means you can pass any type everywhere <code>any</code> is expected. However, since <code>any</code> doesn&rsquo;t tell anything about the type, you cannot pass message of type <code>any</code> anywhere where more concrete type is expected. You need to either rewrite your code without using any or explicitly cast <code>any</code> to concrete type.</p>
<h2 id="maybe">Maybe</h2>
<p>Maybe represents value that maybe do not exist. One must unwrap maybe before using the actual value.</p>
<h2 id="boolean">Boolean</h2>
<p>Boolean type has only two possible values <code>true</code> and <code>false</code></p>
<h2 id="integer">Integer</h2>
<p>Integer is 64 bit integer number</p>
<h2 id="float">Float</h2>
<p>Integer is 64 bit floating point number</p>
<h2 id="strings">Strings</h2>
<p>Strings are immutable utf encoded byte arrays</p>
<h2 id="maps">Maps</h2>
<p>Maps are unordered key-value pairs with dynamic set of keys. All values must have the same type</p>
<h2 id="list">List</h2>
<p>List is a dynamic array that grows as needed. All values in the list must have the same type.</p>
<h2 id="enums">Enums</h2>
<p>Enums are set fixed set of values (members) each with its own name. They are represented in memory like integer numbers.</p>
<h2 id="union">Union</h2>
<p>Union is a <em>sum type</em>. It defines set of possible types.</p>
<h2 id="struct">Struct</h2>
<p>Structures are product types (records) - compile-time known set of fields with possibly different types.</p>
<h2 id="custom-types">Custom Types</h2>
<p>User is allowed to create custom types based on base-types.</p>
<hr>
<p>Further section needs some work. This is WIP document.</p>
</p>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@
<h2 id="features">Features</h2>
<h3 id="flow-based-programming">Flow-Based Programming</h3>
<p>Nevalang operates on a flow-based programming model, where components are connected through inputs and outputs. This eliminates the need for low-level instructions like &ldquo;call/return&rdquo; and state manipulations, empowering you to reason about programs in a more natural way.</p>
<h3 id="effortless-concurrency">Effortless Concurrency</h3>
<h3 id="implicit-parallelism">Implicit Parallelism</h3>
<p>FBP allows messages to flow concurrently across connections. This fundamental shift from synchronous to asynchronous operations by default enables seamless parallel computation, without the complexities of mutexes, channels, or promises, and avoids common pitfalls like deadlocks and race conditions. First-class support for streaming data processing allows the system to operate at maximum speed.</p>
<h3 id="static-type-system">Static Type System</h3>
<p>With static typing, Nevalang catches a significant number of bugs at compile time, enhancing code safety and reliability. Structural sub-typing further refines this approach by allowing components to receive more detailed data than required, intelligently ignoring unnecessary information. This reduces the need for boilerplate adapter code, streamlining the development process.</p>
Expand Down
4 changes: 2 additions & 2 deletions public/index.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@
<description>Install Nevalang and create your first project in one minute!&#xA;Installing Nevalang To begin, download the Nevalang installation script using the following command:&#xA;curl -sSL https://raw.githubusercontent.com/nevalang/neva/main/scripts/install.sh | bash If everything is ok you should be able to execute&#xA;neva version And see output like this (version could differ):&#xA;0.8.0 Creating Your First Project Let&amp;rsquo;s create a new project named test. Execute the following commands to set up your project:&#xA;neva new test This command will create test directory with neva.</description>
</item>
<item>
<title>Type System</title>
<title>Type System (WIP)</title>
<link>https://nevalang.org/docs/spec/type-system/</link>
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
<guid>https://nevalang.org/docs/spec/type-system/</guid>
<description>WIP</description>
<description>Nevalang has strong static structural type-system&#xA;Strong means that there&amp;rsquo;s no implicit type convertions Static means that semantic analysis for type-safety happens at compile time, not run-time Structural means that types are compatible if their structure is compatible. Unlike nominative sub-typing, names of the types does not matter. This also means that type can carry more information than needed and still be compatible. Base Types These are types that doesn&amp;rsquo;t have definition in neva source code.</description>
</item>
<item>
<title>Hello World</title>
Expand Down

0 comments on commit 902c44c

Please sign in to comment.