mirror of
https://github.com/Sunscreen-tech/Sunscreen.git
synced 2026-01-13 15:47:59 -05:00
* Misc doc fixes
* Fix sunscreen zkp exports
* Fix broken api doc reference
* Add starter zkp example
* Use ZkpRuntime::new in sudoku example
* Use ? over unwrap in zkp examples
* Refactor pattern matching
No functionality changes
* Disallow `mut` args in fhe/zkp programs
* Play around with allowing cipher|plain values
* Allow user-declared plain|cipher values
NOTE: Not fully implemented. Will not work on Rational types until we
factor out literal->plaintext into a proper trait.
This allows, e.g.
```rust
fn simple_sum(a: Cipher<Signed>, b: Cipher<Signed>) -> Cipher<Signed> {
let mut sum = fhe_var(0);
sum = sum + a;
sum = sum + b;
fhe_out(sum)
}
````
* Refactor array::output()
* More targeted compiler error messages on invalid return values
* Add option for var.into() rather than fhe_out(var)
* Fix incorrect macro invocation
* Add trait for inserting const as plaintext
* Impl all arithmetic operations for indeterminate nodes
* Offer an `fhe_var!` macro
* Offer a zkp_var! macro
* Offer a (safe) debug impl for zkp program nodes
* Fix tests
* Add test for fhe_var!
* Simplify tf out of sudoku
* Simplify fhe input() codegen
* Marginally better compiler error messages on invalid fhe program arg types
* Fix error for fhe program argument attributes
* Throw appropriate compiler error on generics
* Silence clippy warnings in generated code
These I think are typically ignored by default when consuming proc macros but might as well be explicit
* Fixup quote_spanned invocations
Unsure how important this is, but see here: https://docs.rs/quote/latest/quote/macro.quote_spanned.html#syntax
* Automatically call `.into()` on fhe prog return values
* Factor fhe_program_impl
* Further factor fhe_program_impl
So that token generation happens in helper methods, and the ultimate output() func is readable
* Fix doctests
* Fix clippy warnings
* Remove TODOs
* Add missing example runs to CI
* Oops: fix 232 > 64
* Allow arbitrary expressions in fhe_var!
* Use custom "into" to support impls on []
* Support explicit #[private] params
* Remove `backend = "bulletproofs"` attribute
* Address PR reveiw
116 lines
3.6 KiB
YAML
116 lines
3.6 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
pull_request:
|
|
branches: [ main, debugger ]
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'recursive'
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-build-${{ hashFiles('Cargo.lock') }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
mdBook/target
|
|
key: ${{ runner.os }}-cargo-mdBook-${{ hashFiles('mdBook/Cargo.lock') }}
|
|
# Checks are ordered from fastest to slowest so your build fails quickly on invalid PRs
|
|
# We do everything in release mode so tests run quickly and steps cache each other.
|
|
# Check the submitted change meets style guidelines
|
|
- name: Cargo Format
|
|
run: cargo fmt --check
|
|
# Build and run the tests
|
|
- name: Build and run tests
|
|
run: cargo test --verbose --release
|
|
# Run our non-interactive examples and assert the complete without error
|
|
- name: Verify examples (amm)
|
|
run: cargo run --release --bin amm
|
|
- name: Verify examples (bigint)
|
|
run: cargo run --release --bin bigint
|
|
- name: Verify examples (chi_sq)
|
|
run: cargo run --release --bin chi_sq
|
|
- name: Verify examples (dot_prod)
|
|
run: cargo run --release --bin dot_prod
|
|
- name: Verify examples (mean_variance)
|
|
run: cargo run --release --bin mean_variance
|
|
- name: Verify examples (ordering_zkp)
|
|
run: cargo run --release --bin ordering_zkp
|
|
- name: Verify examples (pir)
|
|
run: cargo run --release --bin pir
|
|
- name: Verify examples (simple_multiply)
|
|
run: cargo run --release --bin simple_multiply
|
|
- name: Verify examples (sudoku_zkp)
|
|
run: cargo run --release --bin sudoku_zkp
|
|
- name: Build sunscreen and bincode
|
|
run: cargo build --release --package sunscreen --package bincode
|
|
- name: Build mdBook
|
|
run: cargo build --release
|
|
working-directory: ./mdBook
|
|
- name: Test docs
|
|
run: ../mdBook/target/release/mdbook test -L dependency=../target/release/deps --extern sunscreen=../target/release/libsunscreen.rlib --extern bincode=../target/release/libbincode.rlib
|
|
working-directory: ./sunscreen_docs
|
|
|
|
lint:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'recursive'
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('Cargo.lock') }}
|
|
# Check the submitted change passes the clippy linter
|
|
- name: Cargo clippy
|
|
run: cargo clippy --release --all-targets -- --deny warnings
|
|
|
|
api_docs:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
submodules: 'recursive'
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-doc-${{ hashFiles('**/Cargo.lock') }}
|
|
# Cursory check to ensure your CL contains valid Rust code
|
|
- name: Cargo check
|
|
run: cargo check --release
|
|
# Check the documentation builds, links work, etc.
|
|
- name: Cargo doc
|
|
env:
|
|
RUSTDOCFLAGS: -D warnings
|
|
run: cargo doc --release --no-deps
|