Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ gem 'helix-rails'
gem "cash_flow_c", path: "./cash_flow_c/"
gem 'cash_flow_rust_helix', path: 'crates/cash_flow_rust_helix'
gem 'cash_flow_rust_rutie', path: 'crates/cash_flow_rust_rutie'
gem 'cash_flow_rust_magnus', path: 'crates/cash_flow_rust_magnus'

gem 'ffi' # for cash_flow_rust_ffi
gem 'fiddle' # for cash_flow_rust_ruru
Expand Down
7 changes: 7 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ PATH
cash_flow_rust_helix (1.0.0)
helix_runtime (~> 0.7.5)

PATH
remote: crates/cash_flow_rust_magnus
specs:
cash_flow_rust_magnus (0.1.0)
rake (> 1)

PATH
remote: crates/cash_flow_rust_rutie
specs:
Expand Down Expand Up @@ -149,6 +155,7 @@ DEPENDENCIES
benchmark-ips
cash_flow_c!
cash_flow_rust_helix!
cash_flow_rust_magnus!
cash_flow_rust_rutie!
ffi
fiddle
Expand Down
7 changes: 7 additions & 0 deletions benchmark.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,13 @@ def cash_flow(cash_in, cash_out, reinvest_rate, term, year)

x.report("rust rutie class") { RustRutie.cash_flow(10000.0, 800.0, 50.0, 30, 5) }

# ========================================
# Rust using magnus class method
# ========================================
require 'cash_flow_rust_magnus'
raise 'rust magnus class method fail' unless cash_flow(10000, 800, 50, 30, 5) == RustMagnus.cash_flow(10000, 800, 50, 30, 5)

x.report("rust magnus class") { RustMagnus.cash_flow(10000, 800, 50, 30, 5) }

# ====================================
# C using standard Ruby extension
Expand Down
4 changes: 4 additions & 0 deletions build-libs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,7 @@ bundle install --quiet
cd $base_dir
cd crates/cash_flow_rust_rutie
bin/setup

cd $base_dir
cd crates/cash_flow_rust_magnus
rake install
11 changes: 11 additions & 0 deletions crates/cash_flow_rust_magnus/Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# frozen_string_literal: true

require "rake/testtask"
load File.expand_path("./ext/cash_flow_rust_magnus/Rakefile", __dir__)

task default: :test

Rake::TestTask.new do |t|
t.deps << :dev << :install
t.test_files = FileList[File.expand_path("test/*_test.rb", __dir__)]
end
15 changes: 15 additions & 0 deletions crates/cash_flow_rust_magnus/cash_flow_rust_magnus.gemspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# frozen_string_literal: true

Gem::Specification.new do |spec|
spec.name = "cash_flow_rust_magnus"
spec.version = "0.1.0"
spec.summary = "-"
spec.files = Dir["lib/**/*.rb"].concat(Dir["ext/cash_flow_rust_magnus/src/**/*.rs"]) << "ext/cash_flow_rust_magnus/Cargo.toml" << "ext/cash_flow_rust_magnus/Cargo.lock" << "ext/cash_flow_rust_magnus/Rakefile"
spec.extensions = ["ext/cash_flow_rust_magnus/Rakefile"]
spec.authors = ["Mat Sadler"]
spec.license = "MIT"

spec.requirements = ["Rust >= 1.51.0"]

spec.add_runtime_dependency "rake", "> 1"
end
Loading