Skip to content

Commit

Permalink
Merge pull request #11 from hacspec/archive-old-book
Browse files Browse the repository at this point in the history
Archive old book, replace with draft one
  • Loading branch information
franziskuskiefer authored Nov 1, 2023
2 parents d6ddaf9 + 1440178 commit 083720b
Show file tree
Hide file tree
Showing 45 changed files with 127 additions and 67 deletions.
1 change: 1 addition & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
use flake .#
2 changes: 1 addition & 1 deletion .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
with:
mdbook-version: 'latest'

- run: mdbook build
- run: mdbook build && mdbook build archive -d ../book/archive

- name: Deploy
uses: peaceiris/actions-gh-pages@v3
Expand Down
9 changes: 9 additions & 0 deletions archive/book.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[book]
authors = ["Franziskus Kiefer"]
language = "en"
multilingual = false
src = "src"
title = "hacspec"

[output.html]
mathjax-support = true
22 changes: 22 additions & 0 deletions archive/src/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Summary

- [Introduction](./readme.md)
- [The hacspec language](./language/readme.md)
- [Syntax](./language/syntax.md)
- [Core](./language/core.md)
- [Sequences and arrays](./language/seq.md)
- [Structs and enums](./language/enums.md)
- [Error handling](./language/errors.md)
- [The hacspec std library](./std/readme.md)
- [Arithmetic](./std/arithmetic.md)
- [Sequence and array operations](./std/seq.md)
- [Examples](./examples/readme.md)
- [Usage](./usage/readme.md)
- [Specifications](./usage/specifications.md)
- [Verification](./usage/verification.md)
- [Test Vectors](./usage/test_vectors.md)
- [For Developers](./developers/readme.md)
- [Working on the compiler](./developers/compiler.md)

---
[Contributors](misc/contributors.md)
File renamed without changes.
File renamed without changes
File renamed without changes.
13 changes: 13 additions & 0 deletions archive/src/examples/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Examples

The main [hacspec repository] contains a set of [example specifications].
In this section we pull out some interesting bits to demonstrate the hacspec
language.

There's also a provider that bundles the different cryptographic primitives
into a single library.
The provider implements the [RustCrypto traits] in order to facilitate interoperability.

[RustCrypto traits]: https://github.com/RustCrypto/traits
[hacspec repository]: https://github.com/hacspec/hacspec/
[example specifications]: https://github.com/hacspec/hacspec/tree/master/examples
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
15 changes: 15 additions & 0 deletions archive/src/misc/contributors.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Contributors

A list of contributors to the hacspec project.

- Franziskus Kiefer ([franziskuskiefer](https://github.com/franziskuskiefer/))
- Denis Merigoux ([denismerigoux](https://github.com/denismerigoux))
- Karthik Bhargavan
- Tomer Yavor ([TomerHawk](https://github.com/TomerHawk))
- Tanmay Garg ([tanmay2004](https://github.com/tanmay2004))
- Peter Schwabe ([cryptojedi](https://github.com/cryptojedi))
- Kaspar Schleiser ([kaspar030](https://github.com/kaspar030))
- [Kasserne](https://github.com/Kasserne)
- Tony Arcieri ([tarcieri](https://github.com/tarcieri))

If you feel you're missing from this list, feel free to add yourself in a PR.
25 changes: 25 additions & 0 deletions archive/src/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Introduction

hacspec is a specification language for crypto primitives, protocols, and more.
It is a subset of the [Rust] programming language, focused on functional
programming and it avoids the use of mutable state as much as possible.

This book gives an overview of:
* [The hacspec language](./language);
* The different parts of the project:
* [the standard library](./std),
* [examples of hacspec programs](./examples);
* How to use hacspec to write [specifications] for standards and [verification];
* How to use hacspec to generate [test vectors];
* [Work on the hacspec compiler and tooling itself](./developers).

For a quick introduction you can also check out these [slides] from April 2021.
An in-depth [technical report] is also available, and serves as a reference
for the language formalization.

[slides]: https://raw.githubusercontent.com/hacspec/hacspec/master/presentation_slides.pdf
[technical report]: https://hal.inria.fr/hal-03176482
[Rust]: https://www.rust-lang.org/
[specifications]: ./usage/specifications.md
[verification]: ./usage/verification.md
[test vectors]: ./usage/test_vectors.md
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion book.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ authors = ["Franziskus Kiefer"]
language = "en"
multilingual = false
src = "src"
title = "hacspec"
title = "hax"

[output.html]
mathjax-support = true
35 changes: 18 additions & 17 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
# Summary

- [Introduction](./readme.md)
- [The hacspec language](./language/readme.md)
- [Syntax](./language/syntax.md)
- [Core](./language/core.md)
- [Sequences and arrays](./language/seq.md)
- [Structs and enums](./language/enums.md)
- [Error handling](./language/errors.md)
- [The hacspec std library](./std/readme.md)
- [Arithmetic](./std/arithmetic.md)
- [Sequence and array operations](./std/seq.md)
- [Examples](./examples/readme.md)
- [Usage](./usage/readme.md)
- [Specifications](./usage/specifications.md)
- [Verification](./usage/verification.md)
- [Test Vectors](./usage/test_vectors.md)
- [For Developers](./developers/readme.md)
- [Working on the compiler](./developers/compiler.md)
- [Examples]()
- [Tutorial]()
- [Proofs]()
- [F*]()
- [Coq]()
- [`libcore`]()
- [Contributing]()
- [Structure]()
- [Hax Cargo subcommand]()
- [Frontend: the Rustc driver]()
- [Frontend: the exporter]()
- [Engine]()
- [Backends]()
- [Utilities]()
- [Libraries & Macros]()
- [`libcore`]()

---
[Contributors](misc/contributors.md)
[Contributors]()
[Archive](misc/archive.md)
Empty file added src/contributing/backends.md
Empty file.
Empty file added src/contributing/engine.md
Empty file.
Empty file added src/contributing/exporter.md
Empty file.
Empty file.
Empty file added src/contributing/libcore.md
Empty file.
Empty file.
Empty file added src/contributing/readme.md
Empty file.
Empty file.
Empty file added src/contributing/structure.md
Empty file.
Empty file added src/contributing/utilities.md
Empty file.
13 changes: 0 additions & 13 deletions src/examples/readme.md
Original file line number Diff line number Diff line change
@@ -1,13 +0,0 @@
# Examples

The main [hacspec repository] contains a set of [example specifications].
In this section we pull out some interesting bits to demonstrate the hacspec
language.

There's also a provider that bundles the different cryptographic primitives
into a single library.
The provider implements the [RustCrypto traits] in order to facilitate interoperability.

[RustCrypto traits]: https://github.com/RustCrypto/traits
[hacspec repository]: https://github.com/hacspec/hacspec/
[example specifications]: https://github.com/hacspec/hacspec/tree/master/examples
7 changes: 7 additions & 0 deletions src/misc/archive.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

# Warning: this book is currently being rewritten!

hax is the successor of hacspec. You can find the previous book
describing hacspec [here](../archive/index.html), but keep in mind most of the information
there is outdated.

15 changes: 0 additions & 15 deletions src/misc/contributors.md
Original file line number Diff line number Diff line change
@@ -1,15 +0,0 @@
# Contributors

A list of contributors to the hacspec project.

- Franziskus Kiefer ([franziskuskiefer](https://github.com/franziskuskiefer/))
- Denis Merigoux ([denismerigoux](https://github.com/denismerigoux))
- Karthik Bhargavan
- Tomer Yavor ([TomerHawk](https://github.com/TomerHawk))
- Tanmay Garg ([tanmay2004](https://github.com/tanmay2004))
- Peter Schwabe ([cryptojedi](https://github.com/cryptojedi))
- Kaspar Schleiser ([kaspar030](https://github.com/kaspar030))
- [Kasserne](https://github.com/Kasserne)
- Tony Arcieri ([tarcieri](https://github.com/tarcieri))

If you feel you're missing from this list, feel free to add yourself in a PR.
Empty file added src/proofs/coq.md
Empty file.
Empty file added src/proofs/fstar.md
Empty file.
Empty file added src/proofs/libcore.md
Empty file.
Empty file added src/proofs/readme.md
Empty file.
35 changes: 15 additions & 20 deletions src/readme.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,20 @@
# Introduction

hacspec is a specification language for crypto primitives, protocols, and more.
It is a subset of the [Rust] programming language, focused on functional
programming and it avoids the use of mutable state as much as possible.
hax is a tool for high assurance translations that translates a large subset of
Rust into formal languages such as [F\*](https://www.fstar-lang.org/) or [Coq](https://coq.inria.fr/).
This extends the scope of the hacspec project, which was previously a DSL embedded in Rust,
to a usable tool for verifying Rust programs.

This book gives an overview of:
* [The hacspec language](./language);
* The different parts of the project:
* [the standard library](./std),
* [examples of hacspec programs](./examples);
* How to use hacspec to write [specifications] for standards and [verification];
* How to use hacspec to generate [test vectors];
* [Work on the hacspec compiler and tooling itself](./developers).
> So what is **hacspec** now?
For a quick introduction you can also check out these [slides] from April 2021.
An in-depth [technical report] is also available, and serves as a reference
for the language formalization.
hacspec is the functional subset of Rust that can be used, together with a hacspec
standard library, to write succinct, executable, and verifiable specifications in
Rust.
These specifications can be translated into formal languages with hax.

# ⚠️ Warning: this book is currently being rewritten! ⚠️

hax is the successor of hacspec. You can find the previous book
describing hacspec [here](/archive), but keep in mind most of the information
there is outdated.

[slides]: https://raw.githubusercontent.com/hacspec/hacspec/master/presentation_slides.pdf
[technical report]: https://hal.inria.fr/hal-03176482
[Rust]: https://www.rust-lang.org/
[specifications]: ./usage/specifications.md
[verification]: ./usage/verification.md
[test vectors]: ./usage/test_vectors.md
Empty file added src/tutorial/readme.md
Empty file.

0 comments on commit 083720b

Please sign in to comment.