Browse Source

update nix to flake (#101)

* update nix to flake

* add nix sanity check cronjob
main
Alex Xiong 1 year ago
committed by GitHub
parent
commit
e15b079684
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 295 additions and 357 deletions
  1. +28
    -0
      .github/workflows/build_nix.yml
  2. +5
    -9
      arithmetic/Cargo.toml
  3. +148
    -0
      flake.lock
  4. +84
    -0
      flake.nix
  5. +6
    -11
      hyperplonk/Cargo.toml
  6. +0
    -28
      nix/grcov/default.nix
  7. +0
    -25
      nix/nightly.nix
  8. +0
    -4
      nix/nixpkgs.json
  9. +0
    -10
      nix/nixpkgs.nix
  10. +0
    -7
      nix/oxalica_rust_overlay.json
  11. +0
    -34
      nix/pre-commit.nix
  12. +0
    -27
      nix/update-nix
  13. +0
    -5
      nix/update-rust-overlay
  14. +0
    -2
      nix/vagrant/.gitignore
  15. +0
    -66
      nix/vagrant/README.md
  16. +0
    -36
      nix/vagrant/Vagrantfile
  17. +0
    -7
      nix/vagrant/shell.nix
  18. +0
    -20
      nix/vagrant/test-nix-shell-guest
  19. +13
    -45
      shell.nix
  20. +9
    -14
      subroutines/Cargo.toml
  21. +1
    -5
      transcript/Cargo.toml
  22. +1
    -2
      util/Cargo.toml

+ 28
- 0
.github/workflows/build_nix.yml

@ -0,0 +1,28 @@
name: Build with Nix Workflow
on:
schedule:
- cron: '0 0 * * 1'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 120
steps:
- uses: styfle/cancel-workflow-action@0.11.0
name: Cancel Outdated Builds
with:
all_but_latest: true
access_token: ${{ github.token }}
- name: Install Nix
uses: cachix/install-nix-action@v18
- name: Checkout Repository
uses: actions/checkout@v3
# sanity check that repository builds with nix
- name: Build
run: |
nix develop -c cargo build --all-targets --release --workspace

+ 5
- 9
arithmetic/Cargo.toml

@ -2,19 +2,16 @@
name = "arithmetic" name = "arithmetic"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
ark-bls12-381 = { version = "0.3.0", default-features = false, features = [ "curve" ] }
ark-ff = { version = "^0.3.0", default-features = false } ark-ff = { version = "^0.3.0", default-features = false }
ark-std = { version = "^0.3.0", default-features = false }
ark-poly = { version = "^0.3.0", default-features = false } ark-poly = { version = "^0.3.0", default-features = false }
ark-serialize = { version = "^0.3.0", default-features = false } ark-serialize = { version = "^0.3.0", default-features = false }
ark-bls12-381 = { version = "0.3.0", default-features = false, features = [ "curve" ] }
rand_chacha = { version = "0.3.0", default-features = false }
ark-std = { version = "^0.3.0", default-features = false }
displaydoc = { version = "0.2.3", default-features = false } displaydoc = { version = "0.2.3", default-features = false }
rand_chacha = { version = "0.3.0", default-features = false }
rayon = { version = "1.5.2", default-features = false, optional = true } rayon = { version = "1.5.2", default-features = false, optional = true }
[dev-dependencies] [dev-dependencies]
@ -23,7 +20,7 @@ criterion = "0.3.0"
[features] [features]
# default = [ "parallel", "print-trace" ] # default = [ "parallel", "print-trace" ]
default = [ "parallel" ]
default = ["parallel"]
parallel = [ parallel = [
"rayon", "rayon",
"ark-std/parallel", "ark-std/parallel",
@ -34,8 +31,7 @@ print-trace = [
"ark-std/print-trace" "ark-std/print-trace"
] ]
[[bench]] [[bench]]
name = "mle_eval" name = "mle_eval"
path = "benches/bench.rs" path = "benches/bench.rs"
harness = false
harness = false

+ 148
- 0
flake.lock

@ -0,0 +1,148 @@
{
"nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1668681692,
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1667077288,
"narHash": "sha256-bdC8sFNDpT0HK74u9fUkpbf1MEzVYJ+ka7NXCdgBoaA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "6ee9ebb6b1ee695d2cacc4faa053a7b9baa76817",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1668765800,
"narHash": "sha256-rC40+/W6Hio7b/RsY8SvQPKNx4WqNcTgfYv8cUMAvJk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "52b2ac8ae18bbad4374ff0dd5aeee0fdf1aea739",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1665296151,
"narHash": "sha256-uOB0oxqxN9K7XGF1hcnY+PQnlQJ+3bP2vCn/+Ru/bbc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "14ccaaedd95a488dd7ae142757884d8e125b3363",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1667992213,
"narHash": "sha256-8Ens8ozllvlaFMCZBxg6S7oUyynYx2v7yleC5M0jJsE=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "ebcbfe09d2bd6d15f68de3a0ebb1e4dcb5cd324b",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"pre-commit-hooks": "pre-commit-hooks",
"rust-overlay": "rust-overlay"
}
},
"rust-overlay": {
"inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1668825399,
"narHash": "sha256-F2ro05D6tGMwSaOYeIediJq6X0ATD7JgWEG2TgOs9Wo=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "a705fe51ef5cdf932ff1cb342f0fe9e5d66f1b71",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

+ 84
- 0
flake.nix

@ -0,0 +1,84 @@
{
description = "Hyperplonk dev env";
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils"; # for dedup
# allow shell.nix alongside flake.nix
inputs.flake-compat.url = "github:edolstra/flake-compat";
inputs.flake-compat.flake = false;
inputs.rust-overlay.url = "github:oxalica/rust-overlay";
inputs.pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
inputs.pre-commit-hooks.inputs.nixpkgs.follows = "nixpkgs";
outputs = { self, nixpkgs, flake-utils, flake-compat, rust-overlay, pre-commit-hooks, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
overlays = [ (import rust-overlay) ];
pkgs = import nixpkgs { inherit system overlays; };
nightlyToolchain = pkgs.rust-bin.selectLatestNightlyWith
(toolchain: toolchain.minimal.override { extensions = [ "rustfmt" ]; });
stableToolchain = pkgs.rust-bin.stable.latest.minimal.override {
extensions = [ "clippy" "llvm-tools-preview" "rust-src" ];
};
in with pkgs;
{
check = {
pre-commit-check = pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
check-format = {
enable = true;
files = "\\.rs$";
entry = "cargo fmt -- --check";
};
doctest = {
enable = true;
entry = "cargo test --doc";
files = "\\.rs$";
pass_filenames = false;
};
cargo-clippy = {
enable = true;
description = "Lint Rust code.";
entry = "cargo-clippy --workspace -- -D warnings";
files = "\\.rs$";
pass_filenames = false;
};
cargo-sort = {
enable = true;
description = "Ensure Cargo.toml are sorted";
entry = "cargo sort -w";
pass_filenames = false;
};
};
};
};
devShell = mkShell {
buildInputs = [
argbash
openssl
pkgconfig
git
stableToolchain
nightlyToolchain
cargo-sort
] ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
shellHook = ''
export RUST_BACKTRACE=full
export PATH="$PATH:$(pwd)/target/debug:$(pwd)/target/release"
# Ensure `cargo fmt` uses `rustfmt` from nightly.
export RUSTFMT="${nightlyToolchain}/bin/rustfmt"
''
# install pre-commit hooks
+ self.check.${system}.pre-commit-check.shellHook;
};
}
);
}

+ 6
- 11
hyperplonk/Cargo.toml

@ -2,26 +2,21 @@
name = "hyperplonk" name = "hyperplonk"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
ark-std = { version = "^0.3.0", default-features = false }
arithmetic = { path = "../arithmetic" }
ark-ec = { version = "^0.3.0", default-features = false } ark-ec = { version = "^0.3.0", default-features = false }
ark-ff = { version = "^0.3.0", default-features = false } ark-ff = { version = "^0.3.0", default-features = false }
ark-poly = { version = "^0.3.0", default-features = false } ark-poly = { version = "^0.3.0", default-features = false }
ark-serialize = { version = "^0.3.0", default-features = false, features = [ "derive" ] } ark-serialize = { version = "^0.3.0", default-features = false, features = [ "derive" ] }
ark-std = { version = "^0.3.0", default-features = false }
displaydoc = { version = "0.2.3", default-features = false } displaydoc = { version = "0.2.3", default-features = false }
rayon = { version = "1.5.2", default-features = false, optional = true }
subroutines = { path = "../subroutines" } subroutines = { path = "../subroutines" }
transcript = { path = "../transcript" } transcript = { path = "../transcript" }
arithmetic = { path = "../arithmetic" }
util = { path = "../util" } util = { path = "../util" }
rayon = { version = "1.5.2", default-features = false, optional = true }
[dev-dependencies] [dev-dependencies]
ark-bls12-381 = { version = "0.3.0", default-features = false, features = [ "curve" ] } ark-bls12-381 = { version = "0.3.0", default-features = false, features = [ "curve" ] }
# Benchmarks # Benchmarks
@ -34,8 +29,8 @@ harness = false
# default = [ ] # default = [ ]
# default = [ "parallel" ] # default = [ "parallel" ]
# default = [ "parallel", "print-trace" ] # default = [ "parallel", "print-trace" ]
default = [ "parallel", "extensive_sanity_checks" ]
bench = [ "parallel" ]
default = ["parallel", "extensive_sanity_checks"]
bench = ["parallel"]
# extensive sanity checks that are useful for debugging # extensive sanity checks that are useful for debugging
extensive_sanity_checks = [ extensive_sanity_checks = [
"subroutines/extensive_sanity_checks", "subroutines/extensive_sanity_checks",
@ -55,4 +50,4 @@ print-trace = [
"ark-std/print-trace", "ark-std/print-trace",
"arithmetic/print-trace", "arithmetic/print-trace",
"subroutines/print-trace" "subroutines/print-trace"
]
]

+ 0
- 28
nix/grcov/default.nix

@ -1,28 +0,0 @@
{ lib, rustToolchain, rustPlatform, fetchFromGitHub }:
rustPlatform.buildRustPackage rec {
pname = "grcov";
version = "v0.8.2";
# See https://nixos.org/manual/nixpkgs/stable/#using-community-rust-overlays
nativeBuildInputs = [
rustToolchain
];
doCheck = false;
src = fetchFromGitHub {
owner = "mozilla";
repo = pname;
rev = version;
sha256 = "t1Gj5u4MmXPbQ5jmO9Sstn7aXJ6Ge+AnsmmG2GiAGKE=";
};
cargoSha256 = "DRAUeDzNUMg0AGrqU1TdrqBZJw4A2o3YJB0MdwwzefQ=";
meta = with lib; {
description = "grcov collects and aggregates code coverage information for multiple source files.";
homepage = "https://github.com/mozilla/grcov";
license = licenses.mpl20;
};
}

+ 0
- 25
nix/nightly.nix

@ -1,25 +0,0 @@
let
basePkgs = import ./nixpkgs.nix { };
rust_overlay = with basePkgs; import (fetchFromGitHub
(lib.importJSON ./oxalica_rust_overlay.json));
pkgs = import ./nixpkgs.nix { overlays = [ rust_overlay ]; };
nightlyToolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal);
grcov = with pkgs; callPackage ./grcov { rustToolchain = nightlyToolchain; };
in
with pkgs;
mkShell {
buildInputs = [
nightlyToolchain
grcov
] ++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Security
];
shellHook = ''
export RUST_BACKTRACE=full
'';
}

+ 0
- 4
nix/nixpkgs.json

@ -1,4 +0,0 @@
{
"url": "https://github.com/nixos/nixpkgs/archive/db8ab32efd3a4ad59044848d889480954e458f25.tar.gz",
"sha256": "1i7ayivjm3rx62qq263jjj55m0nzhn4b99wax25kw6a8zhhwcwjb"
}

+ 0
- 10
nix/nixpkgs.nix

@ -1,10 +0,0 @@
# Behaves like `<nixpkgs>` but pinned. Like `<nixpkgs>`, requires attrset for opt overlays.
attrs:
let
hostpkgs = import <nixpkgs> {};
pinnedNixpkgs = hostpkgs.lib.importJSON ./nixpkgs.json;
nixpkgs = builtins.fetchTarball {
url = pinnedNixpkgs.url;
sha256 = pinnedNixpkgs.sha256;
};
in import nixpkgs attrs

+ 0
- 7
nix/oxalica_rust_overlay.json

@ -1,7 +0,0 @@
{
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "9d7c777625640b70a4d211f62711fa316bca7176",
"sha256": "025bw59nl12jqf4nrvbn0a8xn03aj9bz54nvf1rb25zl2l1nkrnd",
"fetchSubmodules": true
}

+ 0
- 34
nix/pre-commit.nix

@ -1,34 +0,0 @@
{ pkgs, ... }:
let
nix-pre-commit-hooks = import (pkgs.fetchFromGitHub {
owner = "cachix";
repo = "pre-commit-hooks.nix";
rev = "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746";
sha256 = "jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=";
});
in
nix-pre-commit-hooks.run {
src = ./.;
hooks = {
check-format = {
enable = true;
files = "\\.rs$";
entry = "cargo fmt -- --check";
};
doctest = {
enable = true;
entry = "cargo test --doc";
files = "\\.rs$";
pass_filenames = false;
};
# The hook "clippy" that ships with nix-precommit-hooks is outdated.
cargo-clippy = {
enable = true;
description = "Lint Rust code.";
entry = "cargo-clippy";
files = "\\.rs$";
pass_filenames = false;
};
};
}

+ 0
- 27
nix/update-nix

@ -1,27 +0,0 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p curl jq nix
#
# Updates nixpkgs.json to the latest or chosen nixpkgs revision
#
# Usage: ./update-nix
# ./update-nix $rev
# ./update-nix $owner $rev
#
# Arguments default to owner=nixos and rev=master and refer
# to the github owner of a nixpkgs fork and a git revision.
#
set -exo pipefail
owner="nixos"
if [ ! -z "$2" ]; then
owner="$1"
rev="$2"
else
rev="${1:-master}"
fi
resolved_rev=$(curl "https://api.github.com/repos/${owner}/nixpkgs/commits?sha=${rev}" | jq -r 'first.sha')
url="https://github.com/${owner}/nixpkgs/archive/${resolved_rev}.tar.gz"
digest=$(nix-prefetch-url --unpack "$url")
echo "{\"url\": \"${url}\", \"sha256\": \"${digest}\"}" | jq '.' > nix/nixpkgs.json

+ 0
- 5
nix/update-rust-overlay

@ -1,5 +0,0 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p nix-prefetch-github
set -exo pipefail
nix-prefetch-github oxalica rust-overlay | tee nix/oxalica_rust_overlay.json

+ 0
- 2
nix/vagrant/.gitignore

@ -1,2 +0,0 @@
hyperplonk/
.vagrant

+ 0
- 66
nix/vagrant/README.md

@ -1,66 +0,0 @@
# Test nix-shell in vagrant VMs
Set up a vagrant guest VM, and test the dev environment inside the guest.
- Only tested on nixos host with _libvirt_ virtualization provider.
- Assumes that the host has an SSH agent. The agent is used for SSH auth inside
the guest.
- Upon creation (`vagrant up`) a copy of this local repo is rsynced to the
`/hyperplonk` directory in the guest. The tests are run against these files. To
see changes made to the code on the host run `vagrant reload` to re-sync the
source code from host to guest.
## Available vagrant boxes
The following boxes are available:
- `ubuntu`: `ubuntu20.04` + `nix`
- `ubuntu_rustup`: `ubuntu20.04` + `nix` + `rustup`
More OSes/VMs can be added in the `Vagrantfile`.
Append name of box after vagrant command to apply to a single box only
vagrant up ubuntu_rustup
vagrant ssh ubuntu_rustup
## Usage
Enable `libvrtd` on your host:
[ubuntu](https://ubuntu.com/server/docs/virtualization-libvirt),
[nixos](https://nixos.wiki/wiki/Libvirt).
Make sure we are in the `libvirtd` group.
Install `libvirt` vagrant plugin (not needed on nixos):
vagrant plugin install vagrant-libvirt
Activate nix-shell in this directory (or ensure vagrant is installed):
nix-shell
Start vm:
vagrant up ubuntu
There is a password prompt to add the insecure vagrant key to the agent. One can
supply an empty password once or cancel the prompt each time one runs `vagrant
ssh`.
Run formatter, linter, tests inside a nix-shell environment inside the `ubuntu`
guest:
vagrant ssh ubuntu -- -t /vagrant/test-nix-shell-guest
This runs the `test-nix-shell-guest` script in this directory inside the vagrant
guest.
Clean up with
vagrant destroy ubuntu
## Notes
- After editing the Vagrantfile, `vagrant reload` will apply the changes.
- When making substantial changes or changing names of vagrant boxes I usually
have more luck with running `vagrant destroy` with the previous `Vagrantfile`
and then `vagrant up` again with the new `Vagrantfile`.

+ 0
- 36
nix/vagrant/Vagrantfile

@ -1,36 +0,0 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "ubuntu" do |ubuntu|
ubuntu.vm.box = "generic/ubuntu2004"
$script = <<~SCRIPT
set -euxo pipefail
curl -L https://nixos.org/nix/install | sh
SCRIPT
ubuntu.vm.provision "shell", inline: $script, privileged: false
end
config.vm.define "ubuntu_rustup" do |ubuntu|
ubuntu.vm.box = "generic/ubuntu2004"
$script = <<~SCRIPT
set -euxo pipefail
curl -L https://nixos.org/nix/install | sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
rustup default stable-2021-06-17
SCRIPT
ubuntu.vm.provision "shell", inline: $script, privileged: false
end
config.ssh.forward_agent = true
config.vm.synced_folder ".", "/vagrant", disabled: false
config.vm.synced_folder "../..", "/hyperplonk", disabled: false, rsync__exclude: [".git/", "target"]
config.vm.provider "libvirt" do |v|
v.cpus = 4
end
end

+ 0
- 7
nix/vagrant/shell.nix

@ -1,7 +0,0 @@
with import ../nixpkgs.nix { };
mkShell {
buildInputs = [
vagrant
];
}

+ 0
- 20
nix/vagrant/test-nix-shell-guest

@ -1,20 +0,0 @@
#!/usr/bin/env bash
set -euxo pipefail
# vagrant "ssh + command" does not source, adding -- -t does not help
. $HOME/.nix-profile/etc/profile.d/nix.sh
if [ -f $HOME/.carg/env ]; then
source $HOME/.cargo/env
fi
ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
ssh -T git@gitlab.com
cd /hyperplonk
nix-shell --run "cargo-clippy"
nix-shell --run "cargo fmt -- --check"
nix-shell --run "cargo test --doc"
nix-shell --run "cargo test --release"
echo "Ok!"

+ 13
- 45
shell.nix

@ -1,45 +1,13 @@
let
basePkgs = import ./nix/nixpkgs.nix { };
rust_overlay = with basePkgs; import (fetchFromGitHub
(lib.importJSON ./nix/oxalica_rust_overlay.json));
pkgs = import ./nix/nixpkgs.nix { overlays = [ rust_overlay ]; };
nightlyToolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: toolchain.minimal.override {
extensions = [ "rustfmt" ];
});
stableToolchain = pkgs.rust-bin.stable."1.56.1".minimal.override {
extensions = [ "clippy" "llvm-tools-preview" "rust-src" ];
};
pre-commit-check = pkgs.callPackage ./nix/pre-commit.nix { };
in
with pkgs;
mkShell {
buildInputs = [
argbash
openssl
pkgconfig
git
stableToolchain
nightlyToolchain
] ++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Security
];
shellHook = ''
export RUST_BACKTRACE=full
export PATH="$PATH:$(pwd)/target/debug:$(pwd)/target/release"
# Ensure `cargo fmt` uses `rustfmt` from nightly.
export RUSTFMT="${nightlyToolchain}/bin/rustfmt"
# install pre-commit hooks
${pre-commit-check.shellHook}
'';
}
(import
(
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in
fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}
)
{
src = ./.;
}).shellNix

+ 9
- 14
subroutines/Cargo.toml

@ -2,28 +2,23 @@
name = "subroutines" name = "subroutines"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
ark-ff = { version = "^0.3.0", default-features = false }
ark-std = { version = "^0.3.0", default-features = false }
arithmetic = { path = "../arithmetic" }
ark-bls12-381 = { version = "0.3.0", default-features = false, features = [ "curve" ] }
ark-ec = { version = "^0.3.0", default-features = false } ark-ec = { version = "^0.3.0", default-features = false }
ark-ff = { version = "^0.3.0", default-features = false }
ark-poly = { version = "^0.3.0", default-features = false } ark-poly = { version = "^0.3.0", default-features = false }
ark-serialize = { version = "^0.3.0", default-features = false } ark-serialize = { version = "^0.3.0", default-features = false }
ark-bls12-381 = { version = "0.3.0", default-features = false, features = [ "curve" ] }
rand_chacha = { version = "0.3.0", default-features = false }
displaydoc = { version = "0.2.3", default-features = false }
rayon = { version = "1.5.2", default-features = false, optional = true }
ark-std = { version = "^0.3.0", default-features = false }
derivative = { version = "2", features = ["use_core"] } derivative = { version = "2", features = ["use_core"] }
displaydoc = { version = "0.2.3", default-features = false }
itertools = { version = "0.10.4", optional = true } itertools = { version = "0.10.4", optional = true }
rand_chacha = { version = "0.3.0", default-features = false }
rayon = { version = "1.5.2", default-features = false, optional = true }
transcript = { path = "../transcript" } transcript = { path = "../transcript" }
arithmetic = { path = "../arithmetic" }
util = { path = "../util" } util = { path = "../util" }
# # Benchmarks # # Benchmarks
# [[bench]] # [[bench]]
# name = "poly-iop-benches" # name = "poly-iop-benches"
@ -38,7 +33,7 @@ harness = false
[features] [features]
# default = [ "parallel", "print-trace" ] # default = [ "parallel", "print-trace" ]
default = [ "parallel" ]
default = ["parallel"]
# extensive sanity checks that are useful for debugging # extensive sanity checks that are useful for debugging
extensive_sanity_checks = [ ] extensive_sanity_checks = [ ]
parallel = [ parallel = [
@ -54,4 +49,4 @@ parallel = [
print-trace = [ print-trace = [
"arithmetic/print-trace", "arithmetic/print-trace",
"ark-std/print-trace", "ark-std/print-trace",
]
]

+ 1
- 5
transcript/Cargo.toml

@ -2,16 +2,12 @@
name = "transcript" name = "transcript"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
merlin = { version = "3.0.0", default-features = false }
ark-ff = { version = "^0.3.0", default-features = false } ark-ff = { version = "^0.3.0", default-features = false }
ark-serialize = { version = "^0.3.0", default-features = false } ark-serialize = { version = "^0.3.0", default-features = false }
ark-std = { version = "^0.3.0", default-features = false } ark-std = { version = "^0.3.0", default-features = false }
displaydoc = { version = "0.2.3", default-features = false } displaydoc = { version = "0.2.3", default-features = false }
merlin = { version = "3.0.0", default-features = false }

+ 1
- 2
util/Cargo.toml

@ -2,7 +2,6 @@
name = "util" name = "util"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
@ -10,4 +9,4 @@ rayon = { version = "1.5.0", optional = true }
[features] [features]
default = [] default = []
parallel = [ "rayon" ]
parallel = ["rayon"]

Loading…
Cancel
Save