diff --git a/src/page/Home.js b/src/page/Home.js index d91df6d..746ba96 100644 --- a/src/page/Home.js +++ b/src/page/Home.js @@ -1,4 +1,4 @@ -import React, {Component} from 'react'; +import React, { Component } from 'react'; import { Card, CardBody, @@ -55,8 +55,8 @@ class Home extends Component {

Flix is a principled functional, imperative, and logic programming language developed at Aarhus University, at the University of Waterloo, and by a community of open source contributors. + href="https://uwaterloo.ca/">University of Waterloo, and by a community of open source contributors.

Why Flix?

@@ -64,35 +64,35 @@ class Home extends Component {

Flix aims to offer a unique combination of features that no other programming language offers, including: algebraic + className="font-weight-bold">algebraic data types and pattern matching (like Haskell, OCaml), extensible records (like Elm), traits (type classes) (like Haskell, Rust), higher-kinded types (like Haskell), typematch (like Scala), type inference (like Haskell, OCaml), structured channel and process-based concurrency (like + className="font-weight-bold">extensible records (like Elm), traits (type classes) (like Haskell, Rust), higher-kinded types (like Haskell), typematch (like Scala), type inference (like Haskell, OCaml), structured channel and process-based concurrency (like Go), and compilation to JVM bytecode (like Scala). + className="font-weight-bold">compilation to JVM bytecode (like Scala).

Flix also supports several unique features, + className="font-weight-bold text-info">unique features, including: a polymorphic effect system, region-based local mutation, purity reflection, and first-class Datalog constraints. + className="font-weight-bold text-success">a polymorphic effect system, region-based local mutation, purity reflection, and first-class Datalog constraints.

- + -
+
@@ -136,7 +136,7 @@ def oneByOne(): {w = Int32, h = Int32} = {w = 1, h = 1} def twoByFour(): {w = Int32, h = Int32} = {w = 2, h = 4} def area(rect: {w = Int32, h = Int32 | r}): Int32 = - rect.w * rect.h + rect#w * rect#h def f(): Int32 = area({h = 1, color = "Blue", w = 2})`} @@ -400,8 +400,8 @@ def say(s: String, tx: Sender[String, r]): Unit \\ r =

Flix supports structured - concurrency. + href="https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/">structured + concurrency.

For example, the code on the left shows the creation of a fresh @@ -635,7 +635,7 @@ def conn(u: String, p: String): Validation[Err, Connection] = applicative forA expression that builds on the Applicative trait. The forA construct makes it simple to write error-handling code which uses the Validation[e, - t] data type. + t] data type.

@@ -701,7 +701,7 @@ def conn(u: String, p: String): Validation[Err, Connection] = sub-components. In other words, the problem is recursive.

-
+

Datalog constraints enriched with lattice semantics is one of the more @@ -748,7 +748,7 @@ let r = query p select (c, d) from ReadyDate(c; d) -


+
@@ -800,7 +800,7 @@ let r = query p select (c, d) from ReadyDate(c; d) -
+
@@ -808,7 +808,7 @@ let r = query p select (c, d) from ReadyDate(c; d)

Flix comes with a fully-featured Standard Library that offers access to more than 3,100+ functions. + className="text-success font-weight-bold">3,100+ functions.

@@ -818,7 +818,7 @@ let r = query p select (c, d) from ReadyDate(c; d)

The full library can be explored at: https://api.flix.dev/ + href="https://api.flix.dev/">https://api.flix.dev/

@@ -828,12 +828,12 @@ let r = query p select (c, d) from ReadyDate(c; d) - + -


+
@@ -841,9 +841,9 @@ let r = query p select (c, d) from ReadyDate(c; d)

Flix features a modern compiler architecture which is resilient, incremental, and parallel. + className="font-weight-bold text-success">resilient, incremental, and parallel.

@@ -862,11 +862,11 @@ let r = query p select (c, d) from ReadyDate(c; d)

- +
-
+
@@ -880,21 +880,21 @@ let r = query p select (c, d) from ReadyDate(c; d) - - - - - - - - + + + + + + + +
Throughput (entire compiler):41,700 lines/sec
Throughput (frontend only):93,000 lines/sec
Throughput (entire compiler):41,700 lines/sec
Throughput (frontend only):93,000 lines/sec

The above results can be reproduced by running the commands: java -jar flix.jar Xperf - --n 21 and java -jar flix.jar Xperf --frontend --n 21. + --n 21 and java -jar flix.jar Xperf --frontend --n 21.

@@ -911,7 +911,7 @@ let r = query p select (c, d) from ReadyDate(c; d) -


+
@@ -924,8 +924,8 @@ let r = query p select (c, d) from ReadyDate(c; d)

The VSCode extension uses the real Flix compiler hence there is a 1:1 correspondence between the extension + className="font-weight-bold text-success">real Flix compiler hence there is a 1:1 correspondence between the extension and the compiler.

@@ -1036,11 +1036,11 @@ let r = query p select (c, d) from ReadyDate(c; d)
+ className="ml-2 mr-2" />
-
+
@@ -1062,56 +1062,56 @@ let r = query p select (c, d) from ReadyDate(c; d) - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ToolFlixOCamlHaskell
ToolFlixOCamlHaskell
Compilerflixocamlghc
LSPflixocaml-lspHLS
REPLflixutopghci
Build Toolflixdunecabal, stack
Package Managerflixopamcabal
Package RepositoryGitHubopamHackage
Compilerflixocamlghc
LSPflixocaml-lspHLS
REPLflixutopghci
Build Toolflixdunecabal, stack
Package Managerflixopamcabal
Package RepositoryGitHubopamHackage
-
+
@@ -1119,11 +1119,11 @@ let r = query p select (c, d) from ReadyDate(c; d)

Flix is actively developed by programming language researchers from Aarhus University in Denmark in collaboration with researchers + href="https://cs.au.dk/">Aarhus University in Denmark in collaboration with researchers from the University - of Waterloo in Canada, the University of - Tubingen in Germany, and Copenhagen University in Denmark. + of Waterloo in Canada, the University of + Tubingen in Germany, and Copenhagen University in Denmark.

@@ -1140,32 +1140,32 @@ let r = query p select (c, d) from ReadyDate(c; d)

Project Statistics

- - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +
3,800+Merged Pull Requests (PRs)
2,500+Resolved Issues (Tickets)
60+Contributors
244,000+Lines in Compiler Codebase
3,800+Merged Pull Requests (PRs)
2,500+Resolved Issues (Tickets)
60+Contributors
244,000+Lines in Compiler Codebase
-
+
- +

Flix runs on Java

@@ -1195,7 +1195,7 @@ let r = query p select (c, d) from ReadyDate(c; d)
-
+
@@ -1222,7 +1222,7 @@ let r = query p select (c, d) from ReadyDate(c; d) -
+
@@ -1232,28 +1232,28 @@ let r = query p select (c, d) from ReadyDate(c; d) - + - + - + - + -
+
@@ -1263,32 +1263,32 @@ let r = query p select (c, d) from ReadyDate(c; d) - + - + - + -
+

We kindly thank EJ Technologies for providing us with JProfiler and JetBrains for providing us with IntelliJ IDEA. + href="https://www.ej-technologies.com/products/jprofiler/overview.html">JProfiler and JetBrains for providing us with IntelliJ IDEA.