This document captures some important project practices that we employ. If you want to contribute to Matterhorn, for best results, please follow these practices.
Many of the practices described below are really about serving some overall concerns:
use std::fs; | |
use std::path::PathBuf; | |
fn show_sizes_vec(file_list: &Vec<PathBuf>) -> u64 { | |
let sizes = file_list | |
.iter() | |
.map(|e| fs::metadata(e).map(|m| m.len()).unwrap()) | |
.collect::<Vec<u64>>(); | |
let totsize : u64 = sizes.iter().sum(); |
-- Form1: Wrapper type class | |
withELF1 :: FilePath -> (E.SomeElf E.Elf -> IO ()) -> IO () | |
withELF1 fp k = do | |
bytes <- B.readFile fp | |
case E.parseElf bytes of | |
E.Elf32Res [] e32 -> k $ E.Elf32 e32 | |
E.Elf64Res [] e64 -> k $ E.Elf64 e64 | |
[ | |
Project("crucible"), | |
RepoPackage('crucible', team='GaloisInc', reponame='crucible', subpath='crucible', | |
#version='6e5330e' | |
), | |
RepoPackage('crucible-abc', team='GaloisInc', reponame='crucible', subpath='crucible-abc', | |
#version='6e5330e' | |
extraLibraries = [ 'abc' ], dontHaddock=True, | |
), | |
RepoPackage('crucible-blt', team='GaloisInc', reponame='crucible', subpath='crucible-blt', |
[ Project("matterhorn"), | |
RepoPackage("matterhorn", version="develop", team="matterhorn-chat"), | |
RepoPackage("mattermost-api", version="develop", team="matterhorn-chat", dontCheck=True), | |
#RepoPackage("mattermost-api", version="feature/apiv4", team="matterhorn-chat", dontCheck=True), | |
#LocalPackage("mattermost-api", "/home/kquick/work/Matterhorn/mattermost-api", dontCheck=True), | |
RepoPackage("mattermost-api-qc", version="develop", team="matterhorn-chat"), | |
#RepoPackage("mattermost-api-qc", version="feature/apiv4", team="matterhorn-chat"), | |
#LocalPackage("mattermost-api-qc", "/home/kquick/work/Matterhorn/mattermost-api-qc"), | |
Package("aeson", "1.2.3.0", dontCheck=True), | |
Package("asn1-encoding", "0.9.5"), |
{-# LANGUAGE AllowAmbiguousTypes #-} | |
{-# LANGUAGE TypeFamilies #-} | |
module Main where | |
class Foo f where | |
type Bar f :: * | |
-- Attept 1: cannot be used in testfun because Bar is non-injective and Bar f0 is not known to equal Bar f |
-----BEGIN PGP MESSAGE----- | |
jA0EBwMC9YZFe1sI2ajx0u0B14jVHc6IxCNmYsKycuSjd0H53tUF1kJMARCWGnZz | |
cO64VmSepxT30aaqLcI9AtgZ1Ck0/ZpDINC62qCkCzMZQCbnFRNeP4KWtYNCgL1W | |
jOBeRBOh2DN2kaz6u7MRn5Ml50LhTr/P38h6mKR11Gel8OI8YPAHMn8QusF8yoJK | |
iGV+IVmRjmTnmXlbOB7Lx0TsiR57at5xlwq+Hb4ugte6/7HA3zfsqgSxdwYv5l78 | |
IB4mn0TWq+XdWJlDj9SqbUKSKwWSzjWp2PJhmbdffRCr0+norU793KCoX5oOlEY+ | |
4KZlRrfVOvumdty4suXyA3H2C+LQq3X7+RDzWDVGISqo6y2ouDxFbHf/F8szB2cs | |
6E/W5rXxtc6BdaOdvXbybsHtOyHGYN5E+e0htNSvhRDd7DTxnTnUZ1Bf6thw382v | |
y9xLIVrKYQXnRnZ3qAweFeHZohBd9MbpkOBxkdTk+X54CF+g3sEkZDsLvgJYiSnV |
QlpoOTFBWSZTWVu0Z3sEQEj/////////////////////////////////////////////5dJfbucd | |
B3z4B0dBpy7jU3ZuHtsg1mtkASCtsrrSUXL4Mho0NAar6Dj7AXrl8QCgANwB5u3AA59433ovi4+H | |
16HUqqYj6fe9cN2GFb2O6zbru5bmpmmyBybpspTTRoQ9uFR7UXpgXN1d3T7l8M2fVUFbk6dufLS8 | |
5uAwbzruCpaGnRW7zer12KxabWY97ud7jm3ru7bdyOrF3ZY5DdicgKd9c49OmbKmQZu1Fds73nuq | |
2egOctgnJTWGqG93XDN4xYjuu+73dRPd28Eeew3cp2nYAAAAAATwPA7FdyDttmgF0sAAAAAcgBGR | |
lZ1pSWxDDWhTZTz1494okrKnezvaV1CAAautToEQrQuhGt5NHrr3t48nrz3jgyrd7nsGhJbABgIA | |
AAAAAABRQkNl7k0A9bZ5N203LL09pZF7dKUu1uzuLa1opiDQ94DQ8VNDQBo0CkgooYXRr2vtx8+1 | |
3AvsEgqy+8AAAPvgBYAspUBWA+zhHz59vvB8pUVAAAiAAFAAHdXsOkCgUBH1d499C75fAAAN2+Pq | |
5uAAAAAAFHAAAs8xeHvcqhKI+1jVNtRITbF2GXp6PjIN9husAAAD72ld8zcbPXUecAcil7GgSBfb | |
X2gtu1joBoAB69PQEi7qaSLWSzZaacxAUDIAAB6iEgAAGp4PkA88iXq6Z9eUPeygAAAdAAAAAAkL |
QlpoOTFBWSZTWVu0Z3sEQEj/////////////////////////////////////////////5dJfbucd | |
B3z4B0dBpy7jU3ZuHtsg1mtkASCtsrrSUXL4Mho0NAar6Dj7AXrl8QCgANwB5u3AA59433ovi4+H | |
16HUqqYj6fe9cN2GFb2O6zbru5bmpmmyBybpspTTRoQ9uFR7UXpgXN1d3T7l8M2fVUFbk6dufLS8 | |
5uAwbzruCpaGnRW7zer12KxabWY97ud7jm3ru7bdyOrF3ZY5DdicgKd9c49OmbKmQZu1Fds73nuq | |
2egOctgnJTWGqG93XDN4xYjuu+73dRPd28Eeew3cp2nYAAAAAATwPA7FdyDttmgF0sAAAAAcgBGR | |
lZ1pSWxDDWhTZTz1494okrKnezvaV1CAAautToEQrQuhGt5NHrr3t48nrz3jgyrd7nsGhJbABgIA | |
AAAAAABRQkNl7k0A9bZ5N203LL09pZF7dKUu1uzuLa1opiDQ94DQ8VNDQBo0CkgooYXRr2vtx8+1 | |
3AvsEgqy+8AAAPvgBYAspUBWA+zhHz59vvB8pUVAAAiAAFAAHdXsOkCgUBH1d499C75fAAAN2+Pq | |
5uAAAAAAFHAAAs8xeHvcqhKI+1jVNtRITbF2GXp6PjIN9husAAAD72ld8zcbPXUecAcil7GgSBfb | |
X2gtu1joBoAB69PQEi7qaSLWSzZaacxAUDIAAB6iEgAAGp4PkA88iXq6Z9eUPeygAAAdAAAAAAkL |
../sample-binaries/small/gcd.x86_64-exe: file format elf64-x86-64 | |
Disassembly of section .text: | |
0000000000400190 <main>: | |
400190: 53 push %rbx | |
400191: be 23 01 00 00 mov $0x123,%esi | |
400196: bf aa 03 00 00 mov $0x3aa,%edi |