Skip to content
Merged
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
3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# frozen_string_literal: true

source "https://rubygems.org"

gem "codetracer-ruby-recorder", path: "gems/native-tracer"
gem "codetracer_pure_ruby_recorder", path: "gems/pure-ruby-tracer"
2 changes: 1 addition & 1 deletion Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ bench name="heavy_work":
ruby test/benchmarks/run_benchmark.rb {{name}}

build-extension:
cargo build --release --manifest-path ext/native_tracer/Cargo.toml
cargo build --release --manifest-path gems/native-tracer/ext/native_tracer/Cargo.toml
6 changes: 3 additions & 3 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require 'rb_sys/extensiontask'

RbSys::ExtensionTask.new('codetracer_ruby_recorder') do |ext|
ext.ext_dir = 'ext/native_tracer'
ext.lib_dir = 'src'
ext.gem_spec = Gem::Specification.load('codetracer-ruby-recorder.gemspec')
ext.ext_dir = 'gems/native-tracer/ext/native_tracer'
ext.lib_dir = 'gems/native-tracer/lib'
ext.gem_spec = Gem::Specification.load('gems/native-tracer/codetracer-ruby-recorder.gemspec')
end
5 changes: 5 additions & 0 deletions gems/native-tracer/bin/codetracer-ruby-recorder
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/usr/bin/env ruby
require 'rbconfig'
script = File.expand_path('../lib/native_trace.rb', __dir__)
exec RbConfig.ruby, script, *ARGV

Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,12 @@ Gem::Specification.new do |spec|
spec.license = 'MIT'
spec.homepage = 'https://github.com/metacraft-labs/codetracer-ruby-recorder'

spec.files = Dir['src/**/*', 'ext/native_tracer/**/{Cargo.toml,*.rs}', 'ext/native_tracer/extconf.rb', 'README.md', 'LICENSE']
spec.require_paths = ['src']
spec.files = Dir['lib/**/*', 'ext/native_tracer/**/{Cargo.toml,*.rs}',
'ext/native_tracer/extconf.rb', '../../README.md', '../../LICENSE']
spec.require_paths = ['lib']
spec.extensions = ['ext/native_tracer/extconf.rb']
spec.bindir = 'bin'
spec.executables = ['codetracer-ruby-recorder']

spec.add_development_dependency 'rb_sys', '~> 0.9'
end
File renamed without changes.
2 changes: 1 addition & 1 deletion bin/codetracer-pure-ruby-recorder → ...-tracer/bin/codetracer-pure-ruby-recorder
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env ruby
require 'rbconfig'
script = File.expand_path('../src/trace.rb', __dir__)
script = File.expand_path('../lib/trace.rb', __dir__)
exec RbConfig.ruby, script, *ARGV
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
spec.license = 'MIT'
spec.homepage = 'https://github.com/metacraft-labs/codetracer-ruby-recorder'

spec.files = Dir['src/**/*', 'bin/*', 'README.md', 'LICENSE']
spec.require_paths = ['src']
spec.files = Dir['lib/**/*', 'bin/*', '../../README.md', '../../LICENSE']
spec.require_paths = ['lib']
spec.bindir = 'bin'
spec.executables = ['codetracer-pure-ruby-recorder']
end
34 changes: 34 additions & 0 deletions gems/pure-ruby-tracer/lib/native_trace.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#!/usr/bin/env ruby
# SPDX-License-Identifier: MIT
# Simple utility loading the native tracer extension and executing a program.

require 'optparse'

options = {}
parser = OptionParser.new do |opts|
opts.banner = "usage: ruby native_trace.rb [options] <program> [args]"
opts.on('-o DIR', '--out-dir DIR', 'Directory to write trace files') do |dir|
options[:out_dir] = dir
end
opts.on('-h', '--help', 'Print this help') do
puts opts
exit
end
end
parser.order!

if ARGV.empty?
$stderr.puts parser
exit 1
end

out_dir = options[:out_dir] || ENV['CODETRACER_RUBY_RECORDER_OUT_DIR'] || Dir.pwd
ENV['CODETRACER_RUBY_RECORDER_OUT_DIR'] = out_dir

# Path to the compiled native extension
ext_path = File.expand_path('../ext/native_tracer/target/release/libcodetracer_ruby_recorder', __dir__)
require ext_path

program = ARGV.shift
load program

File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion scripts/publish_gems.rb
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def run(cmd, env = {})
end

# Build and publish pure Ruby gem
run('gem build codetracer_pure_ruby_recorder.gemspec')
run('gem build gems/pure-ruby-tracer/codetracer_pure_ruby_recorder.gemspec')
pure_gem = Dir['codetracer_pure_ruby_recorder-*.gem'].max_by { |f| File.mtime(f) }
run("gem push #{pure_gem}")
FileUtils.rm_f(pure_gem)
2 changes: 1 addition & 1 deletion test/benchmarks/run_benchmark.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
raise 'reference trace hash mismatch' unless Digest::SHA256.file(FIXTURE).hexdigest == EXPECTED_HASH

elapsed = Benchmark.realtime do
system('ruby', File.expand_path('../../src/trace.rb', __dir__), '--out-dir', OUTPUT_DIR, PROGRAM)
system('ruby', File.expand_path('../../gems/pure-ruby-tracer/lib/trace.rb', __dir__), '--out-dir', OUTPUT_DIR, PROGRAM)
raise 'trace failed' unless $?.success?
end
puts "Benchmark runtime: #{(elapsed * 1000).round} ms"
Expand Down
2 changes: 1 addition & 1 deletion test/test_tracer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def run_trace(program_name)
program = File.join('test', 'programs', program_name)
out_dir = File.join('test', 'tmp', base)
FileUtils.mkdir_p(out_dir)
system('ruby', 'src/trace.rb', '--out-dir', out_dir, program)
system('ruby', 'gems/pure-ruby-tracer/lib/trace.rb', '--out-dir', out_dir, program)
raise "trace failed" unless $?.success?
JSON.parse(File.read(File.join(out_dir, 'trace.json')))
end
Expand Down