Skip to content

Commit

Permalink
Feat: Vm Profiling + migrate to docusuarus (#1789)
Browse files Browse the repository at this point in the history
Co-authored-by: Chris T. <[email protected]>
  • Loading branch information
nhtyy and ctian1 authored Dec 16, 2024
1 parent aa5d953 commit 3a26009
Show file tree
Hide file tree
Showing 124 changed files with 21,849 additions and 694 deletions.
119 changes: 24 additions & 95 deletions .github/workflows/book.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,121 +5,50 @@ name: book

on:
push:
branches: [main]
branches: [dev]
pull_request:
branches: [main]
branches: [dev]
paths:
- "book/**"
merge_group:

jobs:
# test:
# runs-on: ubuntu-latest
# name: test
# timeout-minutes: 60

# steps:
# - uses: actions/checkout@v4

# - name: Install mdbook
# run: |
# mkdir mdbook
# curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook
# echo $(pwd)/mdbook >> $GITHUB_PATH

# - name: Install mdbook-template
# run: |
# mkdir mdbook-template
# curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template
# echo $(pwd)/mdbook-template >> $GITHUB_PATH

# - name: Run tests
# run: mdbook test

lint:
runs-on: ubuntu-latest
name: lint
timeout-minutes: 60

steps:
- uses: actions/checkout@v4

- name: Install mdbook-linkcheck
run: |
mkdir mdbook-linkcheck
curl -sSL -o mdbook-linkcheck.zip https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/latest/download/mdbook-linkcheck.x86_64-unknown-linux-gnu.zip
unzip mdbook-linkcheck.zip -d ./mdbook-linkcheck
chmod +x $(pwd)/mdbook-linkcheck/mdbook-linkcheck
echo $(pwd)/mdbook-linkcheck >> $GITHUB_PATH
- name: Run linkcheck
run: mdbook-linkcheck --standalone
defaults:
run:
working-directory: book

jobs:
build:
name: Build Docusaurus
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- name: Install mdbook
run: |
mkdir mdbook
curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.14/mdbook-v0.4.14-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook
echo $(pwd)/mdbook >> $GITHUB_PATH
- name: Install mdbook-template
run: |
mkdir mdbook-template
curl -sSL https://github.com/sgoudham/mdbook-template/releases/latest/download/mdbook-template-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=./mdbook-template
echo $(pwd)/mdbook-template >> $GITHUB_PATH
- uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true

- name: Build book
run: mdbook build
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 18
cache: npm
cache-dependency-path: book/package-lock.json

# - name: Build docs
# run: cargo docs
# env:
# # Keep in sync with ./ci.yml:jobs.docs
# RUSTDOCFLAGS:
# --cfg docsrs --show-type-layout --generate-link-to-definition --enable-index-page
# -Zunstable-options
- name: Install dependencies
run: npm ci

# - name: Move docs to book folder
# run: |
# mv target/doc target/book/docs
- name: Create New Code Refrences
run: chmod +x gen-code-refs.sh && ./gen-code-refs.sh

- name: Archive artifact
shell: sh
run: |
chmod -c -R +rX "target/book" |
while read line; do
echo "::warning title=Invalid file permissions automatically fixed::$line"
done
tar \
--dereference --hard-dereference \
--directory "target/book" \
-cvf "$RUNNER_TEMP/artifact.tar" \
--exclude=.git \
--exclude=.github \
.
- name: Build website
run: npm run build

- name: Upload artifact
uses: actions/upload-artifact@v4
- name: Upload Build Artifact
uses: actions/upload-pages-artifact@v3
with:
name: github-pages
path: ${{ runner.temp }}/artifact.tar
retention-days: 1
if-no-files-found: error
path: book/build

deploy:
# Only deploy if a push to main
if: github.ref_name == 'main' && github.event_name == 'push'
if: github.ref_name == 'dev' && github.event_name == 'push'
runs-on: ubuntu-latest
needs: [lint, build]
needs: [build]

# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/test-book.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Test deployment

on:
pull_request:
branches: [dev]

defaults:
run:
working-directory: book

jobs:
test-deploy:
name: Test doc build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-node@v4
with:
node-version: 18
cache: npm
cache-dependency-path: book/package-lock.json

- name: Install dependencies
run: npm ci

- name: Test build website
run: npm run build
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ pgo-data.profdata
**/proof-with-io.bin
**/program.bin
**/stdin.bin
**/node_modules

# Example fibonacci groth16 / plonk proofs
examples/fibonacci/fibonacci-groth16.bin
Expand All @@ -39,5 +40,11 @@ crates/prover/semaphore-gnark-11
crates/prover/trusted-setup
crates/prover/vk

<<<<<<< Updated upstream
# Example legacy elf
examples/elf
examples/elf
=======
# Example fibonacci groth16 / plonk proofs
examples/fibonacci/fibonacci-groth16.bin
examples/fibonacci/fibonacci-plonk.bin
>>>>>>> Stashed changes
44 changes: 43 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 0 additions & 30 deletions book.toml

This file was deleted.

21 changes: 21 additions & 0 deletions book/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Dependencies
node_modules

# Production
/build
build/

# Generated files
.docusaurus
.cache-loader

# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
34 changes: 34 additions & 0 deletions book/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Website

This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.

### Installation

```
$ yarn
```

### Local Development

```
$ yarn start
```

This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.

### Build

```
$ yarn build
```

This command generates static content into the `build` directory and can be served using any static contents hosting service.

### Maintenance Notes

- Always run `npm build` locally first to ensure that the website builds correctly.
- When adding new pages, ensure that the sidebar is updated in `sidebars.ts`.
- Check you links, if you're pointing at an .mdx file, you need to omit the extension in the link.
- Code snippets from the repo are made through the [gen script](./gen-code-refs.sh).
- When adding new code snippets, ensure that the gen script is updated to include the new file.
- Check out the [Docusaurus documentation](https://docusaurus.io/docs/versioning) versioning information.
File renamed without changes.
File renamed without changes.
8 changes: 8 additions & 0 deletions book/docs/developers/rv32im-specification.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# RV32IM Specification

SP1 implements the RISC-V RV32IM instruction set with some implementation details that make it more suitable for proving.

- LW/SW memory access must be word aligned.
- LH/LHU/SH memory access must be half-word aligned.
- Memory access is only valid for addresses `0x20, 0x78000000`. Accessing addresses outside of this range will result in undefined behavior. The global heap allocator in `sp1_zkvm` will panic if memory exceeds this range.
- The ECALL instruction is used for system calls and precompiles. Only valid syscall IDs should be called, and only using the specific convention of loading the ID into register T0 and arguments into registers A0 and A1. If the arguments are addresses, they must be word-aligned. Failure to follow this convention can result in undefined behavior. Correct usages can be found in the `sp1_zkvm` and `sp1_lib` crates.
File renamed without changes.
Loading

0 comments on commit 3a26009

Please sign in to comment.