Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
A #require_relative_with_tco that's like #require_relative but with tail call optimization
module Kernel
def require_relative_with_tco file
absolute_path = File.absolute_path file, __dir__
realpath = File.realpath "#{absolute_path.chomp '.rb'}.rb"
if $LOADED_FEATURES.include? realpath
false
else
RubyVM::InstructionSequence.compile_file(
realpath,
tailcall_optimization: true,
trace_instruction: false
).eval
$LOADED_FEATURES << realpath
true
end
rescue Errno::ENOTDIR, Errno::ENOENT
raise LoadError, "cannot load such file -- #{absolute_path}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.