Issue #14492 has been updated by sam.saffron (Sam Saffron).


In general bootsnap has had significantly more dev time. The actual technique it uses does not require and c extensions (though it uses one for the the on-disk structure) 

Agree we should have something like this built-in to Ruby, it would also allow us more flexibility around implementation. 

One idea would be for gem authors to be allowed to also ship a .cache folder with ISeqs if they wish. (generating on demand has some security problems, since gem runner may not have permission to gem location)

Longer term I would like to see a way of jitting as well so the .cache folder also contains a jitted copy of the ISEQs. In theory we could ship platform specific .so files that encompass all the .rb files a gem has. This has tremendous saving around multiple file access and so on (auto loading and partial loading withstanding) 


----------------------------------------
Feature #14492: iseq loading + caching should be in core
https://bugs.ruby-lang.org/issues/14492#change-70447

* Author: normalperson (Eric Wong)
* Status: Open
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* Target version: 
----------------------------------------
```
... And not in a RubyGem like yomikomu(*)

RubyGems itself is responsible for over 100ms of startup time on my system(**),
so it would be beneficial to make it part of core and speed up rubygems (and stdlib).
$ time ruby -e exit

real    0m0.160s
user    0m0.155s
sys     0m0.004s

$ time ruby --disable=gems -e exit

real    0m0.014s
user    0m0.013s
sys     0m0.000s

(*) git clone https://github.com/ko1/yomikomu.git

(**) I admit, I am intent on continuing use of Ruby on a laptop from 2005.
     That's roughly when I started using Ruby, so any hardware which Ruby
     worked well on back then should work equally well for current and future
     versions of Ruby.

     And maybe this summer I'll dig out a 600 MHz Duron from the early 2000s :D
```




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>