Skip to content

Instantly share code, notes, and snippets.

@CGMossa
Last active August 18, 2020 09:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CGMossa/dbdd887a7ace8552bb7d68cb5d26aeef to your computer and use it in GitHub Desktop.
Save CGMossa/dbdd887a7ace8552bb7d68cb5d26aeef to your computer and use it in GitHub Desktop.
Rama cont model implemented in Rust
[package]
name = "agent_based_trading_julia"
version = "0.1.0"
authors = ["cgmossa <cgmossa@gmail.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rand = {version = "0.7.3", features = ["small_rng"]}
rand_distr = "0.2.2"
[dev-dependencies]
criterion = "0.3"
[[bench]]
name = "cont_run"
harness = false
// resides in benches/cont_run.rs
//
use agent_based_trading_julia::agent_simulation::cont_run;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
pub fn criterion_benchmark(c: &mut Criterion) {
c.bench_function("cont_run default", |b| {
b.iter(|| {
black_box(cont_run(
black_box(10_000),
black_box(10_000),
black_box(0.05),
black_box(0.1),
))
})
});
}
criterion_group!(benches, criterion_benchmark);
criterion_main!(benches);
using Random
using StatsBase
function cont_run(time=10000, n=10000, λ=0.05, q=0.1)
r = zeros(time)
θ = zeros(n)
pchange = zeros(n)
for t = 1:time
ε = randn()
if ε > 0
r[t] = sum(<(ε), θ) / (λ * n)
else
r[t] = -sum(<(-ε), θ) / (λ * n)
end
θ .= ifelse.(rand!(pchange) .< q, abs(r[t]), θ)
end
return kurtosis(r)
end
// resides in src/lib.rs
use rand::prelude::SmallRng;
use rand::{thread_rng, Rng, SeedableRng};
pub fn cont_run(time: usize, n: usize, lambda: f64, q: f64) -> f64 {
let mut theta = vec![0.; n];
let n = n as f64;
let mut eps_sampler = SmallRng::from_rng(thread_rng())
.unwrap()
.sample_iter(rand_distr::StandardNormal);
let mut pchange_sampler = SmallRng::from_rng(thread_rng())
.unwrap()
.sample_iter(rand::distributions::Uniform::new_inclusive(0., 1.));
let r = std::iter::repeat_with(move || {
let eps: f64 = eps_sampler.next().unwrap();
let r_t = if eps > 0. {
theta.iter().filter(|&&x| eps > x).count() as f64 / (lambda * n)
} else {
-(theta.iter().filter(|&&x| -eps > x).count() as f64) / (lambda * n)
};
theta
.iter_mut()
.filter(|_| pchange_sampler.next().unwrap() < q)
.for_each(|x| {
*x = r_t.abs();
});
r_t
});
let r = r.take(time).collect::<Vec<_>>();
kurtosis(r)
}
fn kurtosis(x: Vec<f64>) -> f64 {
let n = x.len() as f64;
let mean_x = x.iter().sum::<f64>() / n;
let x = x.iter().copied().map(|x| x - mean_x);
let r: f64 = n * x.clone().map(|x| x.clone().powi(4)).sum::<f64>()
/ (x.map(|x| x.powi(2)).sum::<f64>().powi(2));
r * (1. - 1. / n).powi(2) - 3.
}
@CGMossa
Copy link
Author

CGMossa commented Jul 15, 2020

This gist is a way to compile the contribution to this article.

Both benchmarking of the julia and the rust code happened on the same machine, on the same day.

Press Enter to start Julia. 
Starting Julia...
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.4.2 (2020-05-23)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> @time cont_run()
  0.094211 seconds (6 allocations: 234.609 KiB)
0.3733084300438283

julia> @time cont_run()
  0.097211 seconds (6 allocations: 234.609 KiB)
0.360872077766603

julia> @time cont_run()
  0.095980 seconds (6 allocations: 234.609 KiB)
0.44315359144660516

julia> using BenchmarkTools

julia> @benchmark cont_run
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     0.001 ns (0.00% GC)
  median time:      0.001 ns (0.00% GC)
  mean time:        0.022 ns (0.00% GC)
  maximum time:     1.024 ns (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     1000

julia> @benchmark cont_run()
BenchmarkTools.Trial:
  memory estimate:  234.61 KiB
  allocs estimate:  6
  --------------
  minimum time:     91.742 ms (0.00% GC)
  median time:      93.311 ms (0.00% GC)
  mean time:        93.432 ms (0.00% GC)
  maximum time:     95.979 ms (0.00% GC)
  --------------
  samples:          54
  evals/sample:     1

Benchmarking results from the Rust implementation:

C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia> cargo bench
   Compiling agent_based_trading_julia v0.1.0 (C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia)

    Finished bench [optimized] target(s) in 3.90s
     Running target\release\deps\agent_based_trading_julia-a4c1b49844cefef2.exe

     Running target\release\deps\cont_run-72ec943be57858c9.exe
Benchmarking cont_run default: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 36.8s, or reduce sample count to 10.
cont_run default        time:   [363.89 ms 365.08 ms 366.49 ms]
                        change: [-0.3864% +0.1700% +0.7076%] (p = 0.55 > 0.05)
                        No change in performance detected.
Found 5 outliers among 100 measurements (5.00%)
  2 (2.00%) high mild
  3 (3.00%) high severe

This is an output from the default case made via the Rust implementation:

    #[test]
    fn test_cont_run() {
        for _ in 0..10 {
            println!("{}", cont_run(10_000, 10_000, 0.05, 0.1));
            // println!("{}", cont_run(10, 10, 0.05, 0.1));
        }
    }

has the output:

Testing started at 11:20 AM ...
0.30422799426396363
0.29127184759672886
0.42087529094082043
0.3478784476062091
0.44689928529714384
0.3704234344031141
0.31203829573951447
0.2911395127328791
0.34074966286173636
0.30038560775170575

I've had many suggestions coming in order to rectify the gap between the Rust implementation and the Julia one.
It is beyond me why Julia beats the Rust implementation by 4x.

  • bkamins asked explicitly to only aim for the best single-threaded performance.
  • Tried to memic the implementation using ndarray directly, and ended up with an implementation that
    was severely worse than this.
  • Using .repeat_with and .copied was suggestions by @stephaneyfx over at the official rust discord.
  • Using small_rng-feature for rand was necessary, as that's where the most of the time was spent when
    microbenchmarking initial implementations. This benchmark shows the difference for going from small_rng to regular/default rand::thread_rng():
Benchmarking cont_run default: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 84.1s, or reduce sample count to 10.
cont_run default        time:   [836.84 ms 837.95 ms 839.19 ms]
                        change: [+128.58% +129.52% +130.35%] (p = 0.00 < 0.05)
                        Performance has regressed.
Found 7 outliers among 100 measurements (7.00%)
  2 (2.00%) low mild
  1 (1.00%) high mild
  4 (4.00%) high severe
  • The use of iterators everywhere is to ensure/aid the optimiser in auto-vectorizing. I don't know if this is ensured here, but nevertheless.
  • There are "cheap" tricks, and those are:
[profile.release]
lto = "fat"
codegen-units = 1
panic = "abort"

in the Cargo.toml file. They make the compilation-time way longer. From 3.90 sec to 2 min 7 sec and garner the performance impact of:

cont_run default        time:   [322.93 ms 326.76 ms 332.83 ms]
                        change: [-16.502% -13.776% -11.231%] (p = 0.00 < 0.05)
                        Performance has improved.
Found 12 outliers among 100 measurements (12.00%)
  4 (4.00%) high mild
  8 (8.00%) high severe

This advantage is not really that enticing.

  • Unfortunately, after using the .repeat_with-pattern, I was unable to use Superluminal Performance to microbenchmark the lines within the closure. Note, this benchmarker only works with msvc toolchain.

The last thing I could think of, is deallocation. Rust has to clean-up after itself, while Julia doesn't have to do that. Or something. I am open for more suggestions.

@ambiso
Copy link

ambiso commented Jul 16, 2020

Have you tried using RUSTFLAGS="-C target-cpu=native" cargo bench?

@CGMossa
Copy link
Author

CGMossa commented Jul 16, 2020 via email

@CGMossa
Copy link
Author

CGMossa commented Jul 16, 2020

RUSTFLAGS="-C target-cpu=native" cargo bench

Here's the accompanying benchmark (using nushell):

C:\Users\[redacted]\agent_based_trading_julia> with-env [RUSTFLAGS "-C target-cpu=native"] { cargo bench }
    Finished bench [optimized] target(s) in 39.40s
     Running target\release\deps\agent_based_trading_julia-a4c1b49844cefef2.exe
[redacted]
running 1 test
test agent_simulation::tests::test_cont_run ... ignored

test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out

     Running target\release\deps\agent_based_trading_julia-a68c807d183998fa.exe

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

     Running target\release\deps\cont_run-72ec943be57858c9.exe
Benchmarking cont_run default: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 36.0s, or reduce sample count to 10.
cont_run default        time:   [358.24 ms 358.82 ms 359.43 ms]
                        change: [-1.5658% -1.1606% -0.7637%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild

@ambiso
Copy link

ambiso commented Jul 16, 2020

Okay, I've found a few differences between the Julia and Rust version and have evened them out (see comments for changes).
This version should be about twice as fast as the previous Rust version:

pub fn cont_run(time: usize, n: usize, lambda: f64, q: f64) -> f64 {
    let mut eps_sampler = SmallRng::from_rng(thread_rng())
        .unwrap()
        .sample_iter(rand_distr::StandardNormal);
    let mut pchange_sampler = SmallRng::from_rng(thread_rng())
        .unwrap()
        .sample_iter(rand::distributions::Uniform::new_inclusive(0., 1.));

    let mut pchange = vec![0.0; n];
    let mut r = vec![0.0; time]; // preallocating r, since the collect didn't seem to use the size_hint from the iterator (didn't analyze this further)
    let mut theta = vec![0.; n];

    let n = n as f64;
    for t in 0..time {
        let eps: f64 = eps_sampler.next().unwrap();
        let r_t = if eps > 0. {
                theta.iter().map(|&x| (eps > x) as i32).sum::<i32>() as f64 / (lambda * n) // not using filtering, but summing the booleans (as in the julia version)
            } else {
                -(theta.iter().map(|&x| (-eps > x) as i32).sum::<i32>() as f64) / (lambda * n)
            };
        pchange.iter_mut()
            .for_each(|x| *x = pchange_sampler.next().unwrap()); // sampling and then comparing seems to perform better (maybe better cache locality?)
        theta
            .iter_mut()
            .zip(pchange.iter())
            .for_each(|(x, pc)| {
                *x = if *pc < q { r_t.abs() } else { *x }; // not using filtering, since that may be harder to compile into branchless code (but I haven't analyzed what it compiles to)
            });
        r[t] = r_t;
    }
    kurtosis(r)
}

Disclaimer: I haven't actually tested whether the program still behaves the same as before.
According to the benchmark it's still about 2x slower than the Julia version, but I'm not sure where the difference comes from.
I tried looking at what the Julia version compiles to but it doesn't print the entire assembly for me:

julia> @code_native cont_run()
	.text
; ┌ @ julia_impl.jl:5 within `cont_run'
	pushq	%rax
	movabsq	$139739913367408, %rcx  # imm = 0x7F17BBE5AF70
	movabsq	$139739913367416, %rdx  # imm = 0x7F17BBE5AF78
	movabsq	$julia_cont_run_17231, %rax
	movl	$10000, %edi            # imm = 0x2710
	movl	$10000, %esi            # imm = 0x2710
	vmovsd	(%rcx), %xmm0           # xmm0 = mem[0],zero
	vmovsd	(%rdx), %xmm1           # xmm1 = mem[0],zero
	callq	*%rax
	popq	%rax
	retq
	nopw	%cs:(%rax,%rax)
; └

@CGMossa
Copy link
Author

CGMossa commented Jul 17, 2020

The version provided by @amisbo has these benchmarks:

Benchmarking cont_run default: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 20.3s, or reduce sample count to 20.
cont_run default        time:   [200.81 ms 206.21 ms 212.71 ms]
Found 11 outliers among 100 measurements (11.00%)
  1 (1.00%) high mild
  10 (10.00%) high severe

Clearly, we are getting there.

@CGMossa
Copy link
Author

CGMossa commented Jul 17, 2020

I have tried to mimic a branchless ifelse by replacing

        // sampling and then comparing seems to perform better (maybe better cache locality?)
        pchange
            .iter_mut()
            .for_each(|x| *x = pchange_sampler.next().unwrap());

        // not using filtering, since that may be harder to compile into branchless code (but I haven't analyzed what it compiles to)
        theta.iter_mut().zip(pchange.iter()).for_each(|(x, pc)| {
            *x = if *pc < q { r_t.abs() } else { *x };
        });

with

        theta.iter_mut().for_each(|x| {
            let change_flag: f64 = (pchange_sampler.next().unwrap() < q) as i32 as _;
            *x = r_t.abs() * change_flag + (1. - change_flag) * (*x);
        });

And the results were (bad):

Benchmarking cont_run default: Warming up for 3.0000 s
Warning: Unable to complete 100 samples in 5.0s. You may wish to increase target time to 24.1s, or reduce sample count to 20.
cont_run default        time:   [239.50 ms 245.73 ms 253.67 ms]
                        change: [+0.9554% +3.6651% +6.5053%] (p = 0.00 < 0.05)
                        Change within noise threshold.
Found 10 outliers among 100 measurements (10.00%)
  4 (4.00%) high mild
  6 (6.00%) high severe

Which are 45 ms slower than ambiso-implementation. (Latest ambiso run gave me 190 ms average compute time).

@ambiso
Copy link

ambiso commented Jul 17, 2020

I think the RNG can account for a lot.

The following benchmark takes 30 microseconds in Rust:

    let mut v = vec![0.0; 10_000];
    let mut uni = SmallRng::from_rng(thread_rng())
        .unwrap()
        .sample_iter(rand::distributions::Uniform::new_inclusive(0., 1.));
    c.bench_function("random_numbers", |b| {
        b.iter(|| {
            v.iter_mut()
                .for_each(|x| *x = uni.next().unwrap());
        })
    });
     Running target/release/deps/cont_run-98e1b1adccd42679
random_numbers          time:   [30.441 us 30.599 us 30.769 us]
                        change: [-1.9791% -0.7198% +0.5062%] (p = 0.27 > 0.05)
                        No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
  2 (2.00%) high mild
  1 (1.00%) high severe

It takes less than 25% of the time in Julia:

julia> using Random

julia> using BenchmarkTools

julia> v = zeros(10_000);

julia> @benchmark rand!(v)
BenchmarkTools.Trial:
  memory estimate:  0 bytes
  allocs estimate:  0
  --------------
  minimum time:     5.959 μs (0.00% GC)
  median time:      6.374 μs (0.00% GC)
  mean time:        6.436 μs (0.00% GC)
  maximum time:     11.732 μs (0.00% GC)
  --------------
  samples:          10000
  evals/sample:     6

I've tried replacing the SmallRng with one I've written myself but I couldn't come up with one (so far) that's faster AND doesn't have an extremely short period.

@CGMossa
Copy link
Author

CGMossa commented Jul 17, 2020

I'm able to use my benchmarking profiler on your version. Here's a screenshot:
image

So yeah, must of the time is really spent on the random number generator.

I was trying to take another route, in which I would use jlrs to run the julia prng for the Rust implementation. It is looking like a huge hassle, as the StatsBase package is making jlrs crash for some reason. I am exploring it, but I don't think it would end anywhere.

@ambiso
Copy link

ambiso commented Jul 17, 2020

Which plugin is that? I've been struggling with perf annotate.

@ambiso
Copy link

ambiso commented Jul 17, 2020

Given these 75% take around 75ms (but the Julia version only takes a quarter of that time =18.75ms) the theoretical Rust speed could be 18.75ms + 100ms * 0.25 = 43.75ms
That would be about twice as fast as the Julia version. But I can't seem to get the performance of the rng up.

@CGMossa
Copy link
Author

CGMossa commented Jul 17, 2020

This is Superluminal Performance. I mentioned it in of these posts.
Short: It works on the msvc-toolchain, i.e. only on Windows. It is very, very good.
But it has some limitations, for instance if things gets inlined, then I cannot see further than that point.
Also it requires the thing to be a command-line thing -- but I guess that's fine.

Finally, to use it, you must drop a

[profile.release]
debug = true

in the Cargo.toml. If you use it, or want it to be used, contact me, and I can help with that.

I really appreciate this in-depth investigation.

@ambiso
Copy link

ambiso commented Jul 17, 2020

I've started linking with dSFMT which is the SSE2 backed Mersenne Twister library that Julia uses.
It's about 3 times faster than SmallRng for doubles between 0 and 1.

The integration is very likely faulty, the C API isn't easy to use correctly and I don't know how to represent the struct in Rust correctly:
https://github.com/ambiso/agent_based_trading_julia/blob/dev/src/lib.rs#L34-L37

You can view it here:
https://github.com/ambiso/agent_based_trading_julia

and benchmark it like this (if you want use cross language LTO):

RUSTFLAGS="-C target-cpu=native -Clinker-plugin-lto -Clinker=clang -Clink-arg=-fuse-ld=lld" cargo bench --bench cont_run

Unfortunately I can only shave off around 60ms this way, not the expected 160ms.

Edit: ran it again and I'm down to 101ms which is slightly faster than the Julia version.
Thermals are quite unstable on this system.

@CGMossa
Copy link
Author

CGMossa commented Jul 17, 2020

Thanks. I tried to just cargo build this repository of yours and it didn't work at all.
I am as usual having an absolute terrible time linking with a C-library.
I have cygwin toolchain as being dominant, but I cannot seem to figure out how to install clang or lld-linker or whatever is needed
for this on Cygwin. Googling it is not yielding the right instructions.

I've included my terminal outputs. Maybe you can spot what is going on here. I'm beyond angry that
linking to C is just such a terrible experience.

As a side, I found this dsfmt-rs it is a rust port of the prng you said is Julias.
I'm sure the C-library you linked to is definitely faster, it being SIMD and SSE2.

C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)> with-env [RUSTFLAGS "-C target-cpu=native -Clinker-pluerror: with-env requires the block to run once the variable is set parameterun}
  ┌─ shell:1:1

1 │ with-env [RUSTFLAGS "-C target-cpu=native -Clinker-plugin-lto -Clinker=clang -Clink-arg=-fuse-ld=lld"]{ cargo bench --bench cont_run}
  │ ^^^^^^^^ requires the block to run once the variable is set parameter

C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)> with-env [RUSTFLAGS "-C target-cpu=native -Clinker-plugin-lto -Clinker=clang -Clink-arg=-fuse-ld=lld"] {cargo bench --bench cont_run}
   Compiling autocfg v1.0.0
   Compiling getrandom v0.1.14
   Compiling cfg-if v0.1.10
   Compiling libc v0.2.72
   Compiling lazy_static v1.4.0
   Compiling winapi-x86_64-pc-windows-gnu v0.4.0
   Compiling maybe-uninit v2.0.0
   Compiling serde v1.0.114
error: linking with `clang` failed: exit code: 1
  |
  = note: "clang" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-m64" "-nostartfiles" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained\\crt2.o" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-Wl,-plugin-opt=O3" "-Wl,-plugin-opt=mcpu=skylake" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\winapi-x86_64-pc-windows-gnu-329a922918786afd\\build_script_build-329a922918786afd.build_script_build.ewy1n52d-cgu.0.rcgu.o" "-o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\winapi-x86_64-pc-windows-gnu-329a922918786afd\\build_script_build-329a922918786afd.exe" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\winapi-x86_64-pc-windows-gnu-329a922918786afd\\build_script_build-329a922918786afd.2wgox3bl2y6l1tj6.rcgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,--start-group" "-Wl,-Bstatic" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-f6ddc2b51f56e49d.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-c8c699cf7a2259fe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-804b6e34a5071c77.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-5ee70c2d51217fc3.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace-d36beb702f78e641.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace_sys-63445e64b2a0bebe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-d389febb313758d8.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-fcd1e50248d40ede.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-84fc53a314348433.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-1ad3f59fd06393e6.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-c50bc6448b31dcad.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-3d83751a0e1d450f.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-da31dbc665bd5a5d.rlib" "-Wl,--end-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-f50ccdc02ac3f2e7.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-lws2_32" "-luserenv" "-fuse-ld=lld" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lmsvcrt" "-luser32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lgcc" "-lmsvcrt" "-lkernel32" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: lld-link: warning: ignoring unknown argument '--nxcompat', did you mean '-nxcompat'
          lld-link: warning: ignoring unknown argument '-plugin-opt=O3'
          lld-link: warning: ignoring unknown argument '-plugin-opt=mcpu=skylake'
          lld-link: warning: ignoring unknown argument '--gc-sections'
          lld-link: warning: ignoring unknown argument '--start-group'
          lld-link: warning: ignoring unknown argument '-Bstatic'
          lld-link: warning: ignoring unknown argument '--end-group'
          lld-link: warning: ignoring unknown argument '-Bdynamic'
          lld-link: error: could not open 'mingwex.lib': no such file or directory
          lld-link: error: could not open 'mingw32.lib': no such file or directory
          lld-link: error: could not open 'gcc_eh.lib': no such file or directory
          lld-link: error: could not open ':libpthread.a.lib': no such file or directory
          lld-link: error: could not open 'gcc.lib': no such file or directory
          clang: error: linker command failed with exit code 1 (use -v to see invocation)


error: linking with `clang` failed: exit code: 1
  |
  = note: "clang" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-m64" "-nostartfiles" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained\\crt2.o" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-Wl,-plugin-opt=O3" "-Wl,-plugin-opt=mcpu=skylake" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\getrandom-b25af47b6dcb658c\\build_script_build-b25af47b6dcb658c.build_script_build.6xphws3v-cgu.0.rcgu.o" "-o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\getrandom-b25af47b6dcb658c\\build_script_build-b25af47b6dcb658c.exe" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\getrandom-b25af47b6dcb658c\\build_script_build-b25af47b6dcb658c.5gn51u3bqm3yh9rq.rcgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,--start-group" "-Wl,-Bstatic" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-f6ddc2b51f56e49d.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-c8c699cf7a2259fe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-804b6e34a5071c77.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-5ee70c2d51217fc3.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace-d36beb702f78e641.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace_sys-63445e64b2a0bebe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-d389febb313758d8.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-fcd1e50248d40ede.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-84fc53a314348433.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-1ad3f59fd06393e6.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-c50bc6448b31dcad.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-3d83751a0e1d450f.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-da31dbc665bd5a5d.rlib" "-Wl,--end-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-f50ccdc02ac3f2e7.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-lws2_32" "-luserenv" "-fuse-ld=lld" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lmsvcrt" "-luser32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lgcc" "-lmsvcrt" "-lkernel32" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: lld-link: warning: ignoring unknown argument '--nxcompat', did you mean '-nxcompat'
          lld-link: warning: ignoring unknown argument '-plugin-opt=O3'
          lld-link: warning: ignoring unknown argument '-plugin-opt=mcpu=skylake'
          lld-link: warning: ignoring unknown argument '--gc-sections'
          lld-link: warning: ignoring unknown argument '--start-group'
          lld-link: warning: ignoring unknown argument '-Bstatic'
          lld-link: warning: ignoring unknown argument '--end-group'
          lld-link: warning: ignoring unknown argument '-Bdynamic'
          lld-link: error: could not open 'mingwex.lib': no such file or directory
          lld-link: error: could not open 'mingw32.lib': no such file or directory
          lld-link: error: could not open 'gcc_eh.lib': no such file or directory
          lld-link: error: could not open ':libpthread.a.lib': no such file or directory
          lld-link: error: could not open 'gcc.lib': no such file or directory
          clang: error: linker command failed with exit code 1 (use -v to see invocation)


error: linking with `clang` failed: exit code: 1
  |
  = note: "clang" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-m64" "-nostartfiles" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained\\crt2.o" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-Wl,-plugin-opt=O3" "-Wl,-plugin-opt=mcpu=skylake" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\libc-ecd8077698df3908\\build_script_build-ecd8077698df3908.build_script_build.4rxkh3uq-cgu.0.rcgu.o" "-o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\libc-ecd8077698df3908\\build_script_build-ecd8077698df3908.exe" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\libc-ecd8077698df3908\\build_script_build-ecd8077698df3908.132mo5k1u5uxgtrb.rcgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,--start-group" "-Wl,-Bstatic" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-f6ddc2b51f56e49d.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-c8c699cf7a2259fe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-804b6e34a5071c77.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-5ee70c2d51217fc3.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace-d36beb702f78e641.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace_sys-63445e64b2a0bebe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-d389febb313758d8.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-fcd1e50248d40ede.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-84fc53a314348433.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-1ad3f59fd06393e6.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-c50bc6448b31dcad.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-3d83751a0e1d450f.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-da31dbc665bd5a5d.rlib" "-Wl,--end-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-f50ccdc02ac3f2e7.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-lws2_32" "-luserenv" "-fuse-ld=lld" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lmsvcrt" "-luser32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lgcc" "-lmsvcrt" "-lkernel32" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: lld-link: warning: ignoring unknown argument '--nxcompat', did you mean '-nxcompat'
          lld-link: warning: ignoring unknown argument '-plugin-opt=O3'
          lld-link: warning: ignoring unknown argument '-plugin-opt=mcpu=skylake'
          lld-link: warning: ignoring unknown argument '--gc-sections'
          lld-link: warning: ignoring unknown argument '--start-group'
          lld-link: warning: ignoring unknown argument '-Bstatic'
          lld-link: warning: ignoring unknown argument '--end-group'
          lld-link: warning: ignoring unknown argument '-Bdynamic'
          lld-link: error: could not open 'mingwex.lib': no such file or directory
          lld-link: error: could not open 'mingw32.lib': no such file or directory
          lld-link: error: could not open 'gcc_eh.lib': no such file or directory
          lld-link: error: could not open ':libpthread.a.lib': no such file or directory
          lld-link: error: could not open 'gcc.lib': no such file or directory
          clang: error: linker command failed with exit code 1 (use -v to see invocation)


error: aborting due to previous error

error: aborting due to previous error

error: aborting due to previous error

error: could not compile `getrandom`.

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: linking with `clang` failed: exit code: 1
  |
  = note: "clang" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-m64" "-nostartfiles" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained\\crt2.o" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-Wl,-plugin-opt=O3" "-Wl,-plugin-opt=mcpu=skylake" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\maybe-uninit-bba1a7a8011dad67\\build_script_build-bba1a7a8011dad67.build_script_build.568t1tx3-cgu.0.rcgu.o" "-o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\maybe-uninit-bba1a7a8011dad67\\build_script_build-bba1a7a8011dad67.exe" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\maybe-uninit-bba1a7a8011dad67\\build_script_build-bba1a7a8011dad67.24otgyv0bnfmzkd.rcgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,--start-group" "-Wl,-Bstatic" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-f6ddc2b51f56e49d.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-c8c699cf7a2259fe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-804b6e34a5071c77.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-5ee70c2d51217fc3.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace-d36beb702f78e641.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace_sys-63445e64b2a0bebe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-d389febb313758d8.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-fcd1e50248d40ede.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-84fc53a314348433.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-1ad3f59fd06393e6.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-c50bc6448b31dcad.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-3d83751a0e1d450f.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-da31dbc665bd5a5d.rlib" "-Wl,--end-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-f50ccdc02ac3f2e7.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-lws2_32" "-luserenv" "-fuse-ld=lld" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lmsvcrt" "-luser32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lgcc" "-lmsvcrt" "-lkernel32" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: lld-link: warning: ignoring unknown argument '--nxcompat', did you mean '-nxcompat'
          lld-link: warning: ignoring unknown argument '-plugin-opt=O3'
          lld-link: warning: ignoring unknown argument '-plugin-opt=mcpu=skylake'
          lld-link: warning: ignoring unknown argument '--gc-sections'
          lld-link: warning: ignoring unknown argument '--start-group'
          lld-link: warning: ignoring unknown argument '-Bstatic'
          lld-link: warning: ignoring unknown argument '--end-group'
          lld-link: warning: ignoring unknown argument '-Bdynamic'
          lld-link: error: could not open 'mingwex.lib': no such file or directory
          lld-link: error: could not open 'mingw32.lib': no such file or directory
          lld-link: error: could not open 'gcc_eh.lib': no such file or directory
          lld-link: error: could not open ':libpthread.a.lib': no such file or directory
          lld-link: error: could not open 'gcc.lib': no such file or directory
          clang: error: linker command failed with exit code 1 (use -v to see invocation)


error: aborting due to previous error

error: linking with `clang` failed: exit code: 1
  |
  = note: "clang" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-m64" "-nostartfiles" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained\\crt2.o" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-Wl,-plugin-opt=O3" "-Wl,-plugin-opt=mcpu=skylake" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\serde-def47282002b7809\\build_script_build-def47282002b7809.build_script_build.4u0y7q44-cgu.0.rcgu.o" "-o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\serde-def47282002b7809\\build_script_build-def47282002b7809.exe" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\serde-def47282002b7809\\build_script_build-def47282002b7809.49c2y0gy1fro7bwi.rcgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,--start-group" "-Wl,-Bstatic" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-f6ddc2b51f56e49d.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-c8c699cf7a2259fe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-804b6e34a5071c77.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-5ee70c2d51217fc3.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace-d36beb702f78e641.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace_sys-63445e64b2a0bebe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-d389febb313758d8.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-fcd1e50248d40ede.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-84fc53a314348433.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-1ad3f59fd06393e6.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-c50bc6448b31dcad.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-3d83751a0e1d450f.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-da31dbc665bd5a5d.rlib" "-Wl,--end-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-f50ccdc02ac3f2e7.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-lws2_32" "-luserenv" "-fuse-ld=lld" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lmsvcrt" "-luser32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lgcc" "-lmsvcrt" "-lkernel32" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: lld-link: warning: ignoring unknown argument '--nxcompat', did you mean '-nxcompat'
          lld-link: warning: ignoring unknown argument '-plugin-opt=O3'
          lld-link: warning: ignoring unknown argument '-plugin-opt=mcpu=skylake'
          lld-link: warning: ignoring unknown argument '--gc-sections'
          lld-link: warning: ignoring unknown argument '--start-group'
          lld-link: warning: ignoring unknown argument '-Bstatic'
          lld-link: warning: ignoring unknown argument '--end-group'
          lld-link: warning: ignoring unknown argument '-Bdynamic'
          lld-link: error: could not open 'mingwex.lib': no such file or directory
          lld-link: error: could not open 'mingw32.lib': no such file or directory
          lld-link: error: could not open 'gcc_eh.lib': no such file or directory
          lld-link: error: could not open ':libpthread.a.lib': no such file or directory
          lld-link: error: could not open 'gcc.lib': no such file or directory
          clang: error: linker command failed with exit code 1 (use -v to see invocation)


error: aborting due to previous error

error: build failed
C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)> cargo bench --bench cont_run
   Compiling autocfg v1.0.0
   Compiling getrandom v0.1.14
   Compiling cfg-if v0.1.10
   Compiling libc v0.2.72
   Compiling lazy_static v1.4.0
   Compiling winapi-x86_64-pc-windows-gnu v0.4.0
   Compiling serde v1.0.114
   Compiling maybe-uninit v2.0.0
   Compiling winapi v0.3.9
   Compiling semver-parser v0.7.0
   Compiling memchr v2.3.3
   Compiling ryu v1.0.5
   Compiling byteorder v1.3.4
   Compiling proc-macro2 v1.0.18
   Compiling cc v1.0.58
   Compiling scopeguard v1.1.0
   Compiling rayon-core v1.7.1
   Compiling ppv-lite86 v0.2.8
   Compiling unicode-xid v0.2.1
   Compiling either v1.5.3
   Compiling itoa v0.4.6
   Compiling syn v1.0.34
   Compiling bitflags v1.2.1
   Compiling serde_json v1.0.56
   Compiling serde_derive v1.0.114
   Compiling unicode-width v0.1.8
   Compiling half v1.6.0
   Compiling regex-syntax v0.6.18
   Compiling oorandom v11.1.2
   Compiling crossbeam-utils v0.7.2
   Compiling memoffset v0.5.5
   Compiling crossbeam-epoch v0.8.2
   Compiling num-traits v0.2.12
   Compiling rayon v1.3.1
   Compiling semver v0.9.0
   Compiling itertools v0.9.0
   Compiling textwrap v0.11.0
   Compiling rand_core v0.5.1
   Compiling rustc_version v0.2.3
   Compiling num_cpus v1.13.0
   Compiling csv-core v0.1.10
   Compiling regex-automata v0.1.9
   Compiling clap v2.33.1
   Compiling rand_pcg v0.2.1
   Compiling rand_chacha v0.2.2
   Compiling agent_based_trading_julia v0.1.0 (C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2)
   Compiling cast v0.2.3
   Compiling quote v1.0.7
   Compiling crossbeam-queue v0.2.3
   Compiling bstr v0.2.13
   Compiling serde_cbor v0.11.1
   Compiling regex v1.3.9
   Compiling plotters v0.2.15
   Compiling rand v0.7.3
   Compiling winapi-util v0.1.5
   Compiling atty v0.2.14
   Compiling crossbeam-deque v0.7.3
   Compiling csv v1.1.3
   Compiling tinytemplate v1.1.0
   Compiling rand_distr v0.2.2
   Compiling same-file v1.0.6
   Compiling criterion-plot v0.4.3
   Compiling walkdir v2.3.1
warning: In file included from vendor/MT/dSFMT-params.h:4,
warning:                  from vendor/MT/dSFMT.c:17:
warning: vendor/MT/dSFMT.h:46:4: warning: #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937." [-Wcpp]
warning:    46 |   #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937."
warning:       |    ^~~~~~~
warning: /usr/bin/ar: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\build\agent_based_trading_julia-c1d41dcaf9eb64b3\out\vendor/MT/dSFMT.o: plugin needed to handle lto object
warning: unused imports: `Duration`, `Instant`
 --> src\lib.rs:4:17
  |
4 | use std::time::{Duration, Instant};
  |                 ^^^^^^^^  ^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: 1 warning emitted

warning: unused imports: `Duration`, `Instant`
 --> src\lib.rs:4:17
  |
4 | use std::time::{Duration, Instant};
  |                 ^^^^^^^^  ^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: 1 warning emitted

warning: unused imports: `FRNG`, `dSFMT`
 --> src\main.rs:1:43
  |
1 | use agent_based_trading_julia::{cont_run, FRNG, dSFMT};
  |                                           ^^^^  ^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1
  |
  = note: "x86_64-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-m64" "-nostartfiles" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained\\crt2.o" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.agent_based_trading_julia-11ba40c1ad7e42c1.agent_based_trading_julia.7vqtulll-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.agent_based_trading_julia.9ljpoiz2-cgu.0.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.alloc-c50bc6448b31dcad.alloc.1utll8sy-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.backtrace-d36beb702f78e641.backtrace.e7apnlc7-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.backtrace_sys-63445e64b2a0bebe.backtrace_sys.dcci9q8u-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.cfg_if-24f36a685f9e75c7.cfg_if.5qp9vxq5-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.cfg_if-84fc53a314348433.cfg_if.44o9i9t0-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.core-da31dbc665bd5a5d.core.e3v0s7q9-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.getrandom-5b4767b9568e5eae.getrandom.f02rfax0-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.hashbrown-804b6e34a5071c77.hashbrown.8byt5pax-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.libc-1ad3f59fd06393e6.libc.2t5eke9a-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.libc-59a51f89abd2689b.libc.7dprwx50-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.panic_abort-c8302c1b3b739e22.panic_abort.12nubbff-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.ppv_lite86-8c6e667628c3f227.ppv_lite86.3stzo69y-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rand-cb04f6e99f1a99fe.rand.8sfr3i6n-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rand_chacha-e6c66207078622ac.rand_chacha.d8z9mf33-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rand_core-ab4922ea0352f31d.rand_core.2j02y8zi-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rand_distr-0804efdc8fc37b81.rand_distr.aq5mlksg-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rand_pcg-6e8b6d8f8290d8a7.rand_pcg.177bwclj-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rustc_demangle-d389febb313758d8.rustc_demangle.73vqpawc-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rustc_std_workspace_alloc-5ee70c2d51217fc3.rustc_std_workspace_alloc.25rivnnb-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rustc_std_workspace_core-3d83751a0e1d450f.rustc_std_workspace_core.azg8rcbc-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.std-f6ddc2b51f56e49d.std.bhzgpfb1-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.unwind-fcd1e50248d40ede.unwind.n0lj41ok-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.wr94we8n35wgmyt.rcgu.o" "-o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.exe" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\agent_based_trading_julia-c1d41dcaf9eb64b3\\out" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,-Bstatic" "C:\\Users\\tpb398\\AppData\\Local\\Temp\\rustc4lkUsw\\libagent_based_trading_julia-11ba40c1ad7e42c1.rlib" "-Wl,--start-group" "C:\\Users\\tpb398\\AppData\\Local\\Temp\\rustc4lkUsw\\libbacktrace_sys-63445e64b2a0bebe.rlib" "-Wl,--end-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-f50ccdc02ac3f2e7.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-ladvapi32" "-lws2_32" "-luserenv" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lmsvcrt" "-luser32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lgcc" "-lmsvcrt" "-lkernel32" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\agent_based_trading_julia-a79965b3a9b14ebd.agent_based_trading_julia-11ba40c1ad7e42c1.agent_based_trading_julia.7vqtulll-cgu.0.rcgu.o.rcgu.o:agent_based_tradin:(.text+0x28c): undefined reference to `dsfmt_init_gen_rand'
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\agent_based_trading_julia-a79965b3a9b14ebd.agent_based_trading_julia-11ba40c1ad7e42c1.agent_based_trading_julia.7vqtulll-cgu.0.rcgu.o.rcgu.o:agent_based_tradin:(.text+0xaec): undefined reference to `dsfmt_fill_array_open_close'


error: aborting due to previous error; 1 warning emitted

The following warnings were emitted during compilation:

warning: In file included from vendor/MT/dSFMT-params.h:4,
warning:                  from vendor/MT/dSFMT.c:17:
warning: vendor/MT/dSFMT.h:46:4: warning: #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937." [-Wcpp]
warning:    46 |   #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937."
warning:       |    ^~~~~~~
warning: /usr/bin/ar: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\build\agent_based_trading_julia-c1d41dcaf9eb64b3\out\vendor/MT/dSFMT.o: plugin needed to handle lto object

error: could not compile `agent_based_trading_julia`.

To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed
C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)>
C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)> cargo bench --bench cont_run --verbose
       Fresh autocfg v1.0.0
       Fresh lazy_static v1.4.0
       Fresh cfg-if v0.1.10
       Fresh semver-parser v0.7.0
       Fresh scopeguard v1.1.0
       Fresh cc v1.0.58
       Fresh unicode-xid v0.2.1
       Fresh ppv-lite86 v0.2.8
       Fresh itoa v0.4.6
       Fresh either v1.5.3
       Fresh unicode-width v0.1.8
       Fresh regex-syntax v0.6.18
       Fresh half v1.6.0
       Fresh oorandom v11.1.2
       Fresh semver v0.9.0
       Fresh textwrap v0.11.0
       Fresh itertools v0.9.0
       Fresh regex v1.3.9
       Fresh getrandom v0.1.14
       Fresh libc v0.2.72
       Fresh maybe-uninit v2.0.0
       Fresh serde v1.0.114
       Fresh winapi-x86_64-pc-windows-gnu v0.4.0
       Fresh rustc_version v0.2.3
       Fresh memchr v2.3.3
       Fresh ryu v1.0.5
       Fresh proc-macro2 v1.0.18
       Fresh byteorder v1.3.4
       Fresh bitflags v1.2.1
       Fresh crossbeam-utils v0.7.2
warning: In file included from vendor/MT/dSFMT-params.h:4,
warning:                  from vendor/MT/dSFMT.c:17:
warning: vendor/MT/dSFMT.h:46:4: warning: #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937." [-Wcpp]
warning:    46 |   #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937."
warning:       |    ^~~~~~~
warning: /usr/bin/ar: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\build\agent_based_trading_julia-c1d41dcaf9eb64b3\out\vendor/MT/dSFMT.o: plugin needed to handle lto object
       Fresh rand_core v0.5.1
       Fresh num_cpus v1.13.0
       Fresh memoffset v0.5.5
       Fresh num-traits v0.2.12
       Fresh serde_cbor v0.11.1
       Fresh winapi v0.3.9
       Fresh quote v1.0.7
       Fresh serde_json v1.0.56
       Fresh csv-core v0.1.10
       Fresh regex-automata v0.1.9
       Fresh clap v2.33.1
       Fresh crossbeam-epoch v0.8.2
       Fresh rand_pcg v0.2.1
       Fresh crossbeam-queue v0.2.3
       Fresh rand_chacha v0.2.2
       Fresh plotters v0.2.15
       Fresh winapi-util v0.1.5
       Fresh syn v1.0.34
       Fresh atty v0.2.14
       Fresh tinytemplate v1.1.0
       Fresh bstr v0.2.13
       Fresh crossbeam-deque v0.7.3
       Fresh rand v0.7.3
       Fresh cast v0.2.3
       Fresh same-file v1.0.6
       Fresh serde_derive v1.0.114
       Fresh rayon-core v1.7.1
       Fresh csv v1.1.3
       Fresh rand_distr v0.2.2
       Fresh walkdir v2.3.1
       Fresh criterion-plot v0.4.3
       Fresh rayon v1.3.1
warning: unused imports: `Duration`, `Instant`
 --> src\lib.rs:4:17
  |
4 | use std::time::{Duration, Instant};
  |                 ^^^^^^^^  ^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: 1 warning emitted

   Compiling agent_based_trading_julia v0.1.0 (C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2)
warning: unused imports: `Duration`, `Instant`
 --> src\lib.rs:4:17
  |
4 | use std::time::{Duration, Instant};
  |                 ^^^^^^^^  ^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: 1 warning emitted

   Compiling criterion v0.3.3
     Running `C:\Users\tpb398\.cargo\bin\sccache rustc --crate-name agent_based_trading_julia --edition=2018 src\main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -C panic=abort -C lto=thin -C codegen-units=1 -C metadata=a79965b3a9b14ebd -C extra-filename=-a79965b3a9b14ebd --out-dir C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps -L dependency=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps --extern agent_based_trading_julia=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libagent_based_trading_julia-11ba40c1ad7e42c1.rlib --extern libc=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\liblibc-59a51f89abd2689b.rlib --extern rand=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\librand-cb04f6e99f1a99fe.rlib --extern rand_distr=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\librand_distr-0804efdc8fc37b81.rlib -Ctarget-cpu=native -L native=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\build\agent_based_trading_julia-c1d41dcaf9eb64b3\out`
     Running `C:\Users\tpb398\.cargo\bin\sccache rustc --crate-name criterion --edition=2018 C:\Users\tpb398\.cargo\registry\src\github.com-1ecc6299db9ec823\criterion-0.3.3\src\lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -Cembed-bitcode=no -C codegen-units=1 --cfg "feature=\"default\"" -C metadata=e63313c4da433ba4 -C extra-filename=-e63313c4da433ba4 --out-dir C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps -L dependency=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps --extern atty=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libatty-354edc848e6673f0.rmeta --extern cast=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libcast-f20e66d43354430e.rmeta --extern clap=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libclap-d0e014ffdb16b7f4.rmeta --extern criterion_plot=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libcriterion_plot-3287b1b3763a2cd2.rmeta --extern csv=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libcsv-83e62ef763180835.rmeta --extern itertools=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libitertools-40c075a458f33de8.rmeta --extern lazy_static=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\liblazy_static-429296a19bfbfc70.rmeta --extern num_traits=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libnum_traits-975fd3ed50905b91.rmeta --extern oorandom=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\liboorandom-4d92649a17787323.rmeta --extern plotters=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libplotters-c341c783479b3a59.rmeta --extern rayon=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\librayon-0cf55d3b91f695c4.rmeta --extern regex=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libregex-3aafce1530780c9c.rmeta --extern serde=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libserde-1c69515b38514fa5.rmeta --extern serde_cbor=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libserde_cbor-f4e3eec68e9d4585.rmeta --extern serde_derive=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\serde_derive-305e2d9df7528bf3.dll --extern serde_json=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libserde_json-a826ed87191f1b7e.rmeta --extern tinytemplate=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libtinytemplate-8889efa780a4f3b1.rmeta --extern walkdir=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libwalkdir-93b68d717b27a196.rmeta --cap-lints allow -Ctarget-cpu=native -L native=C:\Users\tpb398\.cargo\registry\src\github.com-1ecc6299db9ec823\winapi-x86_64-pc-windows-gnu-0.4.0\lib`
warning: unused imports: `FRNG`, `dSFMT`
 --> src\main.rs:1:43
  |
1 | use agent_based_trading_julia::{cont_run, FRNG, dSFMT};
  |                                           ^^^^  ^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1
  |
  = note: "x86_64-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-m64" "-nostartfiles" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained\\crt2.o" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.agent_based_trading_julia-11ba40c1ad7e42c1.agent_based_trading_julia.7vqtulll-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.agent_based_trading_julia.9ljpoiz2-cgu.0.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.alloc-c50bc6448b31dcad.alloc.1utll8sy-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.backtrace-d36beb702f78e641.backtrace.e7apnlc7-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.backtrace_sys-63445e64b2a0bebe.backtrace_sys.dcci9q8u-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.cfg_if-24f36a685f9e75c7.cfg_if.5qp9vxq5-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.cfg_if-84fc53a314348433.cfg_if.44o9i9t0-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.core-da31dbc665bd5a5d.core.e3v0s7q9-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.getrandom-5b4767b9568e5eae.getrandom.f02rfax0-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.hashbrown-804b6e34a5071c77.hashbrown.8byt5pax-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.libc-1ad3f59fd06393e6.libc.2t5eke9a-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.libc-59a51f89abd2689b.libc.7dprwx50-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.panic_abort-c8302c1b3b739e22.panic_abort.12nubbff-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.ppv_lite86-8c6e667628c3f227.ppv_lite86.3stzo69y-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rand-cb04f6e99f1a99fe.rand.8sfr3i6n-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rand_chacha-e6c66207078622ac.rand_chacha.d8z9mf33-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rand_core-ab4922ea0352f31d.rand_core.2j02y8zi-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rand_distr-0804efdc8fc37b81.rand_distr.aq5mlksg-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rand_pcg-6e8b6d8f8290d8a7.rand_pcg.177bwclj-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rustc_demangle-d389febb313758d8.rustc_demangle.73vqpawc-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rustc_std_workspace_alloc-5ee70c2d51217fc3.rustc_std_workspace_alloc.25rivnnb-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.rustc_std_workspace_core-3d83751a0e1d450f.rustc_std_workspace_core.azg8rcbc-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.std-f6ddc2b51f56e49d.std.bhzgpfb1-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.unwind-fcd1e50248d40ede.unwind.n0lj41ok-cgu.0.rcgu.o.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.wr94we8n35wgmyt.rcgu.o" "-o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps\\agent_based_trading_julia-a79965b3a9b14ebd.exe" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\deps" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\release\\build\\agent_based_trading_julia-c1d41dcaf9eb64b3\\out" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,-Bstatic" "C:\\Users\\tpb398\\AppData\\Local\\Temp\\rustckONgDh\\libagent_based_trading_julia-11ba40c1ad7e42c1.rlib" "-Wl,--start-group" "C:\\Users\\tpb398\\AppData\\Local\\Temp\\rustckONgDh\\libbacktrace_sys-63445e64b2a0bebe.rlib" "-Wl,--end-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-f50ccdc02ac3f2e7.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-ladvapi32" "-lws2_32" "-luserenv" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lmsvcrt" "-luser32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lgcc" "-lmsvcrt" "-lkernel32" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\agent_based_trading_julia-a79965b3a9b14ebd.agent_based_trading_julia-11ba40c1ad7e42c1.agent_based_trading_julia.7vqtulll-cgu.0.rcgu.o.rcgu.o:agent_based_tradin:(.text+0x28c): undefined reference to `dsfmt_init_gen_rand'
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\agent_based_trading_julia-a79965b3a9b14ebd.agent_based_trading_julia-11ba40c1ad7e42c1.agent_based_trading_julia.7vqtulll-cgu.0.rcgu.o.rcgu.o:agent_based_tradin:(.text+0xaec): undefined reference to `dsfmt_fill_array_open_close'


error: aborting due to previous error; 1 warning emitted

The following warnings were emitted during compilation:

warning: In file included from vendor/MT/dSFMT-params.h:4,
warning:                  from vendor/MT/dSFMT.c:17:
warning: vendor/MT/dSFMT.h:46:4: warning: #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937." [-Wcpp]
warning:    46 |   #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937."
warning:       |    ^~~~~~~
warning: /usr/bin/ar: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\build\agent_based_trading_julia-c1d41dcaf9eb64b3\out\vendor/MT/dSFMT.o: plugin needed to handle lto object

error: could not compile `agent_based_trading_julia`.

Caused by:
  process didn't exit successfully: `C:\Users\tpb398\.cargo\bin\sccache rustc --crate-name agent_based_trading_julia --edition=2018 src\main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -C panic=abort -C lto=thin -C codegen-units=1 -C metadata=a79965b3a9b14ebd -C extra-filename=-a79965b3a9b14ebd --out-dir C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps -L dependency=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps --extern agent_based_trading_julia=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\libagent_based_trading_julia-11ba40c1ad7e42c1.rlib --extern libc=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\liblibc-59a51f89abd2689b.rlib --extern rand=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\librand-cb04f6e99f1a99fe.rlib --extern rand_distr=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\deps\librand_distr-0804efdc8fc37b81.rlib -Ctarget-cpu=native -L native=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\release\build\agent_based_trading_julia-c1d41dcaf9eb64b3\out` (exit code: 1)
warning: build failed, waiting for other jobs to finish...
error: build failed
C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)> cargo build
   Compiling getrandom v0.1.14
   Compiling cfg-if v0.1.10
   Compiling ppv-lite86 v0.2.8
   Compiling libc v0.2.72
   Compiling cc v1.0.58
   Compiling agent_based_trading_julia v0.1.0 (C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2)
   Compiling rand_core v0.5.1
   Compiling rand_chacha v0.2.2
   Compiling rand_pcg v0.2.1
   Compiling rand v0.7.3
   Compiling rand_distr v0.2.2
warning: In file included from vendor/MT/dSFMT-params.h:4,
warning:                  from vendor/MT/dSFMT.c:17:
warning: vendor/MT/dSFMT.h:46:4: warning: #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937." [-Wcpp]
warning:    46 |   #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937."
warning:       |    ^~~~~~~
warning: /usr/bin/ar: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\build\agent_based_trading_julia-c7c971513a966800\out\vendor/MT/dSFMT.o: plugin needed to handle lto object
warning: unused imports: `Duration`, `Instant`
 --> src\lib.rs:4:17
  |
4 | use std::time::{Duration, Instant};
  |                 ^^^^^^^^  ^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: 1 warning emitted

warning: unused imports: `FRNG`, `dSFMT`
 --> src\main.rs:1:43
  |
1 | use agent_based_trading_julia::{cont_run, FRNG, dSFMT};
  |                                           ^^^^  ^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1
  |
  = note: "x86_64-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-m64" "-nostartfiles" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained\\crt2.o" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.1fhn0f8379rtuf93.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.1hr3x72fi4y3hrmi.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.1mrtrtt13tbmv7qj.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.1qx4qwpkbl8zo7c9.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.2l04o6kn3n2c2xcw.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.30ybxrxakdtd7w6h.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.3jijctav0323fsj.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.4294pw7a652f267e.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.4c32cn7e8rj5g0dh.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.4uw3vc4rni68tbri.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.5daz62fuq78zg3h5.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.6rg2qy3aacdu79n.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.g9giux19sjuh4lh.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.l5r579ea6y3znu1.rcgu.o" "-o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.exe" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.3vlt8946o914zmb6.rcgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\build\\agent_based_trading_julia-c7c971513a966800\\out" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,-Bstatic" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libagent_based_trading_julia-48e6937695352531.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_distr-4a08c73acf9ee9d5.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\liblibc-8cca0ffda9606217.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand-81d3010c7c7d34aa.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_pcg-d1e7bcf4ad3b9213.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_chacha-8d4392c2b228585b.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libppv_lite86-58a373ff605a367d.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_core-18ddcc3398aab439.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libgetrandom-93e2be4a18850530.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libcfg_if-99f774c48669d5d6.rlib" "-Wl,--start-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-f6ddc2b51f56e49d.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-c8c699cf7a2259fe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-804b6e34a5071c77.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-5ee70c2d51217fc3.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace-d36beb702f78e641.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace_sys-63445e64b2a0bebe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-d389febb313758d8.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-fcd1e50248d40ede.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-84fc53a314348433.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-1ad3f59fd06393e6.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-c50bc6448b31dcad.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-3d83751a0e1d450f.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-da31dbc665bd5a5d.rlib" "-Wl,--end-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-f50ccdc02ac3f2e7.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-ladvapi32" "-lws2_32" "-luserenv" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lmsvcrt" "-luser32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lgcc" "-lmsvcrt" "-lkernel32" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\libagent_based_trading_julia-48e6937695352531.rlib(agent_based_trading_julia-48e6937695352531.4dh1dx7wd07m7fmk.rcgu.o): In function `agent_based_trading_julia::dSFMT::new::hec55ed4cec675ffc':
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2/src/lib.rs:49: undefined reference to `dsfmt_init_gen_rand'
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\libagent_based_trading_julia-48e6937695352531.rlib(agent_based_trading_julia-48e6937695352531.4dh1dx7wd07m7fmk.rcgu.o): In function `agent_based_trading_julia::dSFMT::fill::h7daccc70c83c448c':
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2/src/lib.rs:56: undefined reference to `dsfmt_fill_array_open_close'


error: aborting due to previous error; 1 warning emitted

The following warnings were emitted during compilation:

warning: In file included from vendor/MT/dSFMT-params.h:4,
warning:                  from vendor/MT/dSFMT.c:17:
warning: vendor/MT/dSFMT.h:46:4: warning: #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937." [-Wcpp]
warning:    46 |   #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937."
warning:       |    ^~~~~~~
warning: /usr/bin/ar: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\build\agent_based_trading_julia-c7c971513a966800\out\vendor/MT/dSFMT.o: plugin needed to handle lto object

error: could not compile `agent_based_trading_julia`.

To learn more, run the command again with --verbose.
C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)> cargo build --v
error: Found argument '--v' which wasn't expected, or isn't valid in this context

USAGE:
    cargo.exe build [OPTIONS]

For more information try --help
C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)> cargo build --help
cargo.exe-build
Compile a local package and all of its dependencies

USAGE:
    cargo.exe build [OPTIONS]

OPTIONS:
    -q, --quiet                                      No output printed to stdout
    -p, --package <SPEC>...                          Package to build (see `cargo help pkgid`)
        --all                                        Alias for --workspace (deprecated)
        --workspace                                  Build all packages in the workspace
        --exclude <SPEC>...                          Exclude packages from the build
    -j, --jobs <N>                                   Number of parallel jobs, defaults to # of CPUs
        --lib                                        Build only this package's library
        --bin <NAME>...                              Build only the specified binary
        --bins                                       Build all binaries
        --example <NAME>...                          Build only the specified example
        --examples                                   Build all examples
        --test <NAME>...                             Build only the specified test target
        --tests                                      Build all tests
        --bench <NAME>...                            Build only the specified bench target
        --benches                                    Build all benches
        --all-targets                                Build all targets
        --release                                    Build artifacts in release mode, with optimizations
        --profile <PROFILE-NAME>                     Build artifacts with the specified profile
        --features <FEATURES>...                     Space or comma separated list of features to activate
        --all-features                               Activate all available features
        --no-default-features                        Do not activate the `default` feature
        --target <Build for the target triple>...    TRIPLE
        --target-dir <DIRECTORY>                     Directory for all generated artifacts
        --out-dir <PATH>                             Copy final artifacts to this directory (unstable)
        --manifest-path <PATH>                       Path to Cargo.toml
        --message-format <FMT>...                    Error format
        --build-plan                                 Output the build plan in JSON (unstable)
    -v, --verbose                                    Use verbose output (-vv very verbose/build.rs output)
        --color <WHEN>                               Coloring: auto, always, never
        --frozen                                     Require Cargo.lock and cache are up to date
        --locked                                     Require Cargo.lock is up to date
        --offline                                    Run without accessing the network
    -Z <FLAG>...
            Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for details

    -h, --help                                       Prints help information

All packages in the workspace are built if the `--workspace` flag is supplied. The
`--workspace` flag is automatically assumed for a virtual manifest.
Note that `--exclude` has to be specified in conjunction with the `--workspace` flag.

Compilation can be configured via the use of profiles which are configured in
the manifest. The default profile for this command is `dev`, but passing
the --release flag will use the `release` profile instead.
C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)> cargo build -vv
       Fresh cfg-if v0.1.10
       Fresh ppv-lite86 v0.2.8
       Fresh cc v1.0.58
       Fresh getrandom v0.1.14
       Fresh libc v0.2.72
       Fresh rand_core v0.5.1
warning: In file included from vendor/MT/dSFMT-params.h:4,
warning:                  from vendor/MT/dSFMT.c:17:
warning: vendor/MT/dSFMT.h:46:4: warning: #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937." [-Wcpp]
warning:    46 |   #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937."
warning:       |    ^~~~~~~
warning: /usr/bin/ar: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\build\agent_based_trading_julia-c7c971513a966800\out\vendor/MT/dSFMT.o: plugin needed to handle lto object
       Fresh rand_chacha v0.2.2
       Fresh rand_pcg v0.2.1
       Fresh rand v0.7.3
       Fresh rand_distr v0.2.2
warning: unused imports: `Duration`, `Instant`
 --> src\lib.rs:4:17
  |
4 | use std::time::{Duration, Instant};
  |                 ^^^^^^^^  ^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: 1 warning emitted

   Compiling agent_based_trading_julia v0.1.0 (C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2)
     Running `set CARGO=\\?\C:\Users\tpb398\.rustup\toolchains\nightly-x86_64-pc-windows-gnu\bin\cargo.exe&& set CARGO_BIN_NAME=agent_based_trading_julia&& set CARGO_CRATE_NAME=agent_based_trading_julia&& set CARGO_MANIFEST_DIR=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2&& set CARGO_PKG_AUTHORS="cgmossa <cgmossa@gmail.com>"&& set CARGO_PKG_DESCRIPTION=&& set CARGO_PKG_HOMEPAGE=&& set CARGO_PKG_LICENSE=&& set CARGO_PKG_LICENSE_FILE=&& set CARGO_PKG_NAME=agent_based_trading_julia&& set CARGO_PKG_REPOSITORY=&& set CARGO_PKG_VERSION=0.1.0&& set CARGO_PKG_VERSION_MAJOR=0&& set CARGO_PKG_VERSION_MINOR=1&& set CARGO_PKG_VERSION_PATCH=0&& set CARGO_PKG_VERSION_PRE=&& set OUT_DIR=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\build\agent_based_trading_julia-c7c971513a966800\out&& set PATH="C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps;C:\Users\tpb398\.rustup\toolchains\nightly-x86_64-pc-windows-gnu\bin;C:\Users\tpb398\.cargo\bin;C:\Users\tpb398\.rustup\toolchains\nightly-x86_64-pc-windows-gnu\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Users\tpb398\AppData\Local\JuliaPro-1.4.2-1\Julia-1.4.2\bin;C:\Users\tpb398\Downloads\cygwin64\bin;C:\Program Files\ImageMagick-7.0.9-Q16;C:\tools\miniconda3;C:\tools\miniconda3\Library\mingw-w64\bin;C:\tools\miniconda3\Library\usr\bin;C:\tools\miniconda3\Library\bin;C:\tools\miniconda3\Scripts;C:\Perl64\site\bin;C:\Perl64\bin;C:\Rtools\bin;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;C:\ProgramData\chocolatey\bin;C:\Program Files (x86)\PDFtk\bin\;C:\Program Files\SourceGear\Common\DiffMerge\;C:\Program Files\LLVM\bin;C:\Program Files\TortoiseHg\;C:\Program Files\CMake\bin;C:\Program Files\nodejs\;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Program Files (x86)\Yarn\bin\;C:\HashiCorp\Vagrant\bin;C:\Program Files\Java\jre7\bin;C:\Program Files\gnuplot\bin;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files (x86)\Microsoft Office\Office16;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Git\cmd;C:\Users\tpb398\AppData\Local\JuliaPro-1.4.2-1\Julia-1.4.2\bin;C:\Users\tpb398\Downloads\cygwin64\bin;C:\Users\tpb398\scoop\shims;C:\Users\tpb398\.cargo\bin;C:\Users\tpb398\AppData\Local\Microsoft\WindowsApps;C:\Users\tpb398\AppData\Local\Programs\Microsoft VS Code\bin;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1.3\bin;C:\tools\msys64;C:\Users\tpb398\AppData\Local\GitHubDesktop\bin;C:\Program Files\Mercurial\;C:\Users\tpb398\AppData\Roaming\npm;C:\Users\tpb398\AppData\Local\Yarn\bin;C:\Program Files\Oracle\VirtualBox;C:\bin\scala-2.11.4\bin;C:\Program Files\JetBrains\CLion 2019.3.3\bin;;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.2\bin;;C:\Users\tpb398\AppData\Roaming\cabal\bin;C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.8.2\bin;C:\Users\tpb398\AppData\Roaming\local\bin;C:\Program Files\GIMP 2\bin;C:\Program Files (x86)\Microsoft Office\Office16;C:\Users\tpb398\AppData\Local\Pandoc\;"&& C:\Users\tpb398\.cargo\bin\sccache rustc --crate-name agent_based_trading_julia --edition=2018 src\main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -Cembed-bitcode=no -C debuginfo=2 -C metadata=45e6f354fab7cdca -C extra-filename=-45e6f354fab7cdca --out-dir C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps -C incremental=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\incremental -L dependency=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps --extern agent_based_trading_julia=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\libagent_based_trading_julia-48e6937695352531.rlib --extern libc=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\liblibc-8cca0ffda9606217.rlib --extern rand=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\librand-81d3010c7c7d34aa.rlib --extern rand_distr=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\librand_distr-4a08c73acf9ee9d5.rlib -Ctarget-cpu=native -L native=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\build\agent_based_trading_julia-c7c971513a966800\out`
warning: unused imports: `FRNG`, `dSFMT`
 --> src\main.rs:1:43
  |
1 | use agent_based_trading_julia::{cont_run, FRNG, dSFMT};
  |                                           ^^^^  ^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1
  |
  = note: "x86_64-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-m64" "-nostartfiles" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained\\crt2.o" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\self-contained" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.1fhn0f8379rtuf93.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.1hr3x72fi4y3hrmi.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.1mrtrtt13tbmv7qj.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.1qx4qwpkbl8zo7c9.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.2l04o6kn3n2c2xcw.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.30ybxrxakdtd7w6h.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.3jijctav0323fsj.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.4294pw7a652f267e.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.4c32cn7e8rj5g0dh.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.4uw3vc4rni68tbri.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.5daz62fuq78zg3h5.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.6rg2qy3aacdu79n.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.g9giux19sjuh4lh.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.l5r579ea6y3znu1.rcgu.o" "-o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.exe" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-45e6f354fab7cdca.3vlt8946o914zmb6.rcgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\build\\agent_based_trading_julia-c7c971513a966800\\out" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,-Bstatic" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libagent_based_trading_julia-48e6937695352531.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_distr-4a08c73acf9ee9d5.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\liblibc-8cca0ffda9606217.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand-81d3010c7c7d34aa.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_pcg-d1e7bcf4ad3b9213.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_chacha-8d4392c2b228585b.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libppv_lite86-58a373ff605a367d.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_core-18ddcc3398aab439.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libgetrandom-93e2be4a18850530.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libcfg_if-99f774c48669d5d6.rlib" "-Wl,--start-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-f6ddc2b51f56e49d.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-c8c699cf7a2259fe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-804b6e34a5071c77.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-5ee70c2d51217fc3.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace-d36beb702f78e641.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace_sys-63445e64b2a0bebe.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-d389febb313758d8.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-fcd1e50248d40ede.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-84fc53a314348433.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-1ad3f59fd06393e6.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-c50bc6448b31dcad.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-3d83751a0e1d450f.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-da31dbc665bd5a5d.rlib" "-Wl,--end-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-f50ccdc02ac3f2e7.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-ladvapi32" "-lws2_32" "-luserenv" "-lmsvcrt" "-lmingwex" "-lmingw32" "-lmsvcrt" "-luser32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lgcc" "-lmsvcrt" "-lkernel32" "C:\\Users\\tpb398\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\libagent_based_trading_julia-48e6937695352531.rlib(agent_based_trading_julia-48e6937695352531.4dh1dx7wd07m7fmk.rcgu.o): In function `agent_based_trading_julia::dSFMT::new::hec55ed4cec675ffc':
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2/src/lib.rs:49: undefined reference to `dsfmt_init_gen_rand'
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\libagent_based_trading_julia-48e6937695352531.rlib(agent_based_trading_julia-48e6937695352531.4dh1dx7wd07m7fmk.rcgu.o): In function `agent_based_trading_julia::dSFMT::fill::h7daccc70c83c448c':
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2/src/lib.rs:56: undefined reference to `dsfmt_fill_array_open_close'


error: aborting due to previous error; 1 warning emitted

The following warnings were emitted during compilation:

warning: In file included from vendor/MT/dSFMT-params.h:4,
warning:                  from vendor/MT/dSFMT.c:17:
warning: vendor/MT/dSFMT.h:46:4: warning: #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937." [-Wcpp]
warning:    46 |   #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937."
warning:       |    ^~~~~~~
warning: /usr/bin/ar: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\build\agent_based_trading_julia-c7c971513a966800\out\vendor/MT/dSFMT.o: plugin needed to handle lto object

error: could not compile `agent_based_trading_julia`.

Caused by:
  process didn't exit successfully: `set CARGO=\\?\C:\Users\tpb398\.rustup\toolchains\nightly-x86_64-pc-windows-gnu\bin\cargo.exe&& set CARGO_BIN_NAME=agent_based_trading_julia&& set CARGO_CRATE_NAME=agent_based_trading_julia&& set CARGO_MANIFEST_DIR=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2&& set CARGO_PKG_AUTHORS="cgmossa <cgmossa@gmail.com>"&& set CARGO_PKG_DESCRIPTION=&& set CARGO_PKG_HOMEPAGE=&& set CARGO_PKG_LICENSE=&& set CARGO_PKG_LICENSE_FILE=&& set CARGO_PKG_NAME=agent_based_trading_julia&& set CARGO_PKG_REPOSITORY=&& set CARGO_PKG_VERSION=0.1.0&& set CARGO_PKG_VERSION_MAJOR=0&& set CARGO_PKG_VERSION_MINOR=1&& set CARGO_PKG_VERSION_PATCH=0&& set CARGO_PKG_VERSION_PRE=&& set OUT_DIR=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\build\agent_based_trading_julia-c7c971513a966800\out&& set PATH="C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps;C:\Users\tpb398\.rustup\toolchains\nightly-x86_64-pc-windows-gnu\bin;C:\Users\tpb398\.cargo\bin;C:\Users\tpb398\.rustup\toolchains\nightly-x86_64-pc-windows-gnu\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Users\tpb398\AppData\Local\JuliaPro-1.4.2-1\Julia-1.4.2\bin;C:\Users\tpb398\Downloads\cygwin64\bin;C:\Program Files\ImageMagick-7.0.9-Q16;C:\tools\miniconda3;C:\tools\miniconda3\Library\mingw-w64\bin;C:\tools\miniconda3\Library\usr\bin;C:\tools\miniconda3\Library\bin;C:\tools\miniconda3\Scripts;C:\Perl64\site\bin;C:\Perl64\bin;C:\Rtools\bin;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;C:\ProgramData\chocolatey\bin;C:\Program Files (x86)\PDFtk\bin\;C:\Program Files\SourceGear\Common\DiffMerge\;C:\Program Files\LLVM\bin;C:\Program Files\TortoiseHg\;C:\Program Files\CMake\bin;C:\Program Files\nodejs\;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Program Files (x86)\Yarn\bin\;C:\HashiCorp\Vagrant\bin;C:\Program Files\Java\jre7\bin;C:\Program Files\gnuplot\bin;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files (x86)\Microsoft Office\Office16;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Git\cmd;C:\Users\tpb398\AppData\Local\JuliaPro-1.4.2-1\Julia-1.4.2\bin;C:\Users\tpb398\Downloads\cygwin64\bin;C:\Users\tpb398\scoop\shims;C:\Users\tpb398\.cargo\bin;C:\Users\tpb398\AppData\Local\Microsoft\WindowsApps;C:\Users\tpb398\AppData\Local\Programs\Microsoft VS Code\bin;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1.3\bin;C:\tools\msys64;C:\Users\tpb398\AppData\Local\GitHubDesktop\bin;C:\Program Files\Mercurial\;C:\Users\tpb398\AppData\Roaming\npm;C:\Users\tpb398\AppData\Local\Yarn\bin;C:\Program Files\Oracle\VirtualBox;C:\bin\scala-2.11.4\bin;C:\Program Files\JetBrains\CLion 2019.3.3\bin;;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.2\bin;;C:\Users\tpb398\AppData\Roaming\cabal\bin;C:\ProgramData\chocolatey\lib\ghc\tools\ghc-8.8.2\bin;C:\Users\tpb398\AppData\Roaming\local\bin;C:\Program Files\GIMP 2\bin;C:\Program Files (x86)\Microsoft Office\Office16;C:\Users\tpb398\AppData\Local\Pandoc\;"&& C:\Users\tpb398\.cargo\bin\sccache rustc --crate-name agent_based_trading_julia --edition=2018 src\main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -Cembed-bitcode=no -C debuginfo=2 -C metadata=45e6f354fab7cdca -C extra-filename=-45e6f354fab7cdca --out-dir C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps -C incremental=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\incremental -L dependency=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps --extern agent_based_trading_julia=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\libagent_based_trading_julia-48e6937695352531.rlib --extern libc=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\liblibc-8cca0ffda9606217.rlib --extern rand=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\librand-81d3010c7c7d34aa.rlib --extern rand_distr=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\librand_distr-4a08c73acf9ee9d5.rlib -Ctarget-cpu=native -L native=C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\build\agent_based_trading_julia-c7c971513a966800\out` (exit code: 1)
C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)>  error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1error: linking with `x86_64-w64-mingw32-gcc` failed: e
xit code: 1
error: Command not found
  ┌─ shell:1:2

1 │  error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1
  │  ^^^^^^ command not found

C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)> rustup run stable-gnu cargo build
   Compiling getrandom v0.1.14
   Compiling cfg-if v0.1.10
   Compiling ppv-lite86 v0.2.8
   Compiling cc v1.0.58
   Compiling libc v0.2.72
   Compiling agent_based_trading_julia v0.1.0 (C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2)
   Compiling rand_core v0.5.1
   Compiling rand_pcg v0.2.1
   Compiling rand_chacha v0.2.2
   Compiling rand v0.7.3
   Compiling rand_distr v0.2.2
warning: In file included from vendor/MT/dSFMT-params.h:4,
warning:                  from vendor/MT/dSFMT.c:17:
warning: vendor/MT/dSFMT.h:46:4: warning: #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937." [-Wcpp]
warning:    46 |   #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937."
warning:       |    ^~~~~~~
warning: /usr/bin/ar: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\build\agent_based_trading_julia-0dc50abaf747717d\out\vendor/MT/dSFMT.o: plugin needed to handle lto object
warning: unused imports: `Duration`, `Instant`
 --> src\lib.rs:4:17
  |
4 | use std::time::{Duration, Instant};
  |                 ^^^^^^^^  ^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: 1 warning emitted

warning: unused imports: `FRNG`, `dSFMT`
 --> src\main.rs:1:43
  |
1 | use agent_based_trading_julia::{cont_run, FRNG, dSFMT};
  |                                           ^^^^  ^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error: linking with `x86_64-w64-mingw32-gcc` failed: exit code: 1
  |
  = note: "x86_64-w64-mingw32-gcc" "-fno-use-linker-plugin" "-Wl,--nxcompat" "-nostdlib" "-m64" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\crt2.o" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsbegin.o" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.175m6ihkq3gfevnx.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.1776o4kng1xiy0dt.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.216lbjh6tuzfnmyp.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.2ms86ku8ezo4begf.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.35lcknnz3ifcvaev.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.38jf58rfhrt4fn64.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.3a1p0dkgzk4i59j4.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.3na984f3s3p1fs2e.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.40s6xbdjm4k9o6w8.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.4mpxzdnza52c7kg4.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.4xal4yv32bdlfuql.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.4xfyf67uitihr8we.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.4yv6ukosv4c0g6t3.rcgu.o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.53fbgl31lbaeuhr4.rcgu.o" "-o" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.exe" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\agent_based_trading_julia-58b686f9830fae85.1o45x62fu6hgx5nu.rcgu.o" "-Wl,--gc-sections" "-nodefaultlibs" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps" "-L" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\build\\agent_based_trading_julia-0dc50abaf747717d\\out" "-L" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib" "-Wl,-Bstatic" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libagent_based_trading_julia-51e128e03c9524c0.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_distr-3286da8b499fd79b.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\liblibc-820ea27bd4e4d22e.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand-f7595e6dbd0a7e51.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_pcg-a25f57c8a3c92b75.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_chacha-0619462aab8ab8cf.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libppv_lite86-dc7a8f001990536b.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\librand_core-29c3a2129db92df7.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libgetrandom-60ce90fab31a9998.rlib" "C:\\Users\\tpb398\\Documents\\GitHub\\agent_based_trading_julia2\\target\\debug\\deps\\libcfg_if-cf58d0d3cd0e6fed.rlib" "-Wl,--start-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libstd-447f0e6919e87703.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libpanic_unwind-6691a7d28fd5ead6.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libhashbrown-ee4714732ebaf9a3.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_alloc-e062de0dbb254b6a.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace-2bc81dc380687e4b.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libbacktrace_sys-53b5dac028b62d7c.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_demangle-cb491f3ffc25ac52.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libunwind-9499c77410f0cb84.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcfg_if-cb2a1962c04b6646.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liblibc-c582a1654a681be9.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\liballoc-2285fe2f7f9a72ec.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\librustc_std_workspace_core-1a51942af531248c.rlib" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcore-d7ecf429ccc8dc70.rlib" "-Wl,--end-group" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\libcompiler_builtins-4fc9e886634acec6.rlib" "-Wl,-Bdynamic" "-ladvapi32" "-ladvapi32" "-lws2_32" "-luserenv" "-lmingwex" "-lmingw32" "-lmsvcrt" "-lmsvcrt" "-luser32" "-lkernel32" "-lgcc_eh" "-l:libpthread.a" "-lgcc" "-lmsvcrt" "-lkernel32" "C:\\Users\\tpb398\\.rustup\\toolchains\\stable-x86_64-pc-windows-gnu\\lib\\rustlib\\x86_64-pc-windows-gnu\\lib\\rsend.o"
  = note: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\libagent_based_trading_julia-51e128e03c9524c0.rlib(agent_based_trading_julia-51e128e03c9524c0.glo77gdco5by8gf.rcgu.o): In function `agent_based_trading_julia::dSFMT::new::h5cbf04ef52d8e1b8':
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2/src/lib.rs:49: undefined reference to `dsfmt_init_gen_rand'
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\deps\libagent_based_trading_julia-51e128e03c9524c0.rlib(agent_based_trading_julia-51e128e03c9524c0.glo77gdco5by8gf.rcgu.o): In function `agent_based_trading_julia::dSFMT::fill::hd058431a20e4cf00':
          C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2/src/lib.rs:56: undefined reference to `dsfmt_fill_array_open_close'


error: aborting due to previous error; 1 warning emitted

The following warnings were emitted during compilation:

warning: In file included from vendor/MT/dSFMT-params.h:4,
warning:                  from vendor/MT/dSFMT.c:17:
warning: vendor/MT/dSFMT.h:46:4: warning: #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937." [-Wcpp]
warning:    46 |   #warning "DSFMT_MEXP is not defined. I assume DSFMT_MEXP is 19937."
warning:       |    ^~~~~~~
warning: /usr/bin/ar: C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2\target\debug\build\agent_based_trading_julia-0dc50abaf747717d\out\vendor/MT/dSFMT.o: plugin needed to handle lto object

error: could not compile `agent_based_trading_julia`.

To learn more, run the command again with --verbose.
C:\Users\tpb398\Documents\GitHub\agent_based_trading_julia2(dev)>

@ambiso
Copy link

ambiso commented Jul 19, 2020

Unfortunately I can't use msvc or have a windows system available, I guess I'll stick with perf annotate and flamegraphs.

I've tried using the XorShift generator, which is supposedly a lot faster than MT, but to no avail. It seems the optimized implementation is just really good.
The https://docs.rs/xorshift/0.1.3/xorshift/ is really old and uses a really old version of the rand crate but seems fairly solid otherwise.

I also found out that there's also experimental SIMD support in the rand crate gated behind the simd_support feature.
Here's a really interesting discussion regarding SIMD PRNGs and SIMD distributions.
rust-random/rand#377
However it seems non-trivial to use, since you have to explicitly use the packed_simd types.

Here is a list of SIMD PRNGs: https://github.com/TheIronBorn/simd_prngs (linked in the discussion).
I've made an absolutely horrible implementation using this in-development crate and it comes in at 15us for 10k random f64.
While 2x faster than the previous Rust only implementation, this is 2.4x slower than dSFMT.

@ambiso
Copy link

ambiso commented Jul 19, 2020

I've added you to the repo in case you'd like to make any further changes.

I think from here it would be neat if SIMD RNGs could proceed in rust to a state where it's easy to use (and hard to misuse) them.
For example, I don't think there is a convenience function to generate an array of f64s while making use of SIMD.
This is non-trivial when the number of elements in the array aren't divisible by the number of elements in the SIMD array or the array isn't aligned properly.

Additionally, there's still a performance gap to fill with the RNG.
In fact, it should run faster than the Mersenne Twister, since it's a lot simpler.

@ambiso
Copy link

ambiso commented Jul 19, 2020

Now talking about alignment, I noticed that my use of the SIMD RNG wasn't correct - I was using the write_aligned function but the allocation wasn't aligned the way it needed to be.
We're now down to 10.9us for Rust only when using write_to_slice_unaligned.
This probably can be optimized by writing the first few f64s using a scalar implementation and then using SIMD on the aligned regions.

@CGMossa
Copy link
Author

CGMossa commented Jul 19, 2020

I figured out that writing .compiler("clang") in the build.rs will force me to use clang, which is the c-compiler I suspect you used. The specific flag -flto is not defined for gcc or cl (msvc c-compiler). But somehow cl had no problem.

I am running the benchmarks now. Just FYI, the rand-crate has xorshift implemented. I'll try to get it in and see.

Are there any known deficiencies with mersienne twister?

@ambiso
Copy link

ambiso commented Jul 19, 2020

Right, I always set CC=clang, sorry I didn't communicate that.

That sounds better, but I don't think it has SIMD support?

Mersenne Twister typically comes with a very large state size, and still has some statistical deficiencies. There's a paper summarizing a few arguments against it https://arxiv.org/pdf/1910.06437.

@CGMossa
Copy link
Author

CGMossa commented Aug 18, 2020

Just for completion sake: Julia 1.5v didn't improve the benchmark results at all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment