You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: index.md
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ Val is a research programming language to explore the concepts of [mutable value
7
7
Val aims to be:
8
8
-**Fast**: Val is compiled AOT to machine code and relies on its type system to support in-place mutation and avoid unecessary memory allocations.
9
9
-**Safe**: Val is memory safe in both single-threaded and concurrent settings. It does so by adopting mutable value semantics, a programming discipline that bans shared mutable state to uphold local reasoning.
10
-
-**Simple**: Val borrows heavily from the [Swift programming language](https://swift.org) which has demonstrated a user-friendly approach to generic programming. Further, its user model emphasizes on value, leaving out the typical complexities associated with reference semantics (e.g., memory regions, lifetime annotations, etc.).
10
+
-**Simple**: Val borrows heavily from [Swift](https://swift.org) which has demonstrated a user-friendly approach to generic programming. Further, its user model emphasizes on value, leaving out the typical complexities associated with reference semantics (e.g., memory regions, lifetime annotations, etc.).
11
11
-**Interoperable with C++**: Programming languages rarely survive in vacuum. Val aims to take advantage of the vast software capital of C++ by supporting full interperability.
12
12
13
13
The [language tour](./language-tour.html) gives an overview of Val's most salient feature.
@@ -58,10 +58,10 @@ There's a slightly more subtle mechanism at play.
58
58
A C/C++ programmer may think of `longer_of` as a function that takes and returns pointers or mutable references.
59
59
But Val offers more safety.
60
60
First, it guarantees that the values of the arguments `a` and `b` may not overlap.
61
-
Second, it guarantees that the value of `z` may not be accessed via `x` or `y` (or any other means) until the projection is no longer used.
61
+
Second, it guarantees that the value of `z` may not be accessed via `x` or `y` (or any other means) until the projection ends.
62
62
63
63
A Rust programmer may think of `longer_of` as a function that borrows its arguments mutably and returns a mutable reference bound by the lifetime of those arguments.
64
-
What happens is very similar indeed, but note that `longer_of` has no lifetime annotations.
65
-
There are not elided, they simply do not exist in Val because the latter uses a simpler model devoid of references.
64
+
What happens is very similar, but notice that `longer_of` has no lifetime annotations.
65
+
There are not elided, they simply do not exist in Val because the it uses a simpler model, devoid of references.
66
66
67
67
Have a look at the section on subscripts in the [language tour](./language-tour.html) to get more information.
0 commit comments