memo_wise
bootsnap
Our great sponsors
memo_wise | bootsnap | |
---|---|---|
3 | 4 | |
539 | 2,639 | |
0.4% | 0.3% | |
6.4 | 8.0 | |
about 1 month ago | 25 days ago | |
Ruby | Ruby | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
memo_wise
-
Ruby memoization: what it is, when to use it, what the dangers are
memo_wise
-
Optimizing performance in MemoWise, a new memoization gem
MemoWise is benchmarked as the fastest Ruby memoization gem. This post describes how we made it so speedy.
-
Introducing: MemoWise
Asked for you: https://github.com/panorama-ed/memo_wise/issues/184
bootsnap
-
Abstract Methods and NotImplementedError in Ruby
Indeed, I did not mention Bootsnap so as to detract the core point.
> That's one of the things Bootsnap does to speedup boot time. And when you do that, there's no compilation at runtime.
Correct, if one does `bootsnap precompile`.
Bootsnap hooks itself on `Kernel#load` + `Kernel#require` and `RubyVM::InstructionSequence#load_iseq`:
https://github.com/Shopify/bootsnap/blob/f627992c52642394311...
https://github.com/Shopify/bootsnap/blob/f627992c52642394311...
https://github.com/Shopify/bootsnap/blob/f627992c52642394311...
https://github.com/Shopify/bootsnap/blob/f627992c52642394311...
Essentially this means that it makes LOAD_PATH lookup faster + intercepts iseq compilation to store to cache on a miss and return a cached version on a hit.
That does not change the load order.
> But that doesn't change anything about OP's suggestion, it's still impossible to know if an interface will ever be implemented.
Again correct, as even with `bootsnap precompile` it would only result in earlier ISeq generation (it is essentially cache priming instead of doing it "lazily" on demand), not the time at which these ISeq get loaded and effective, so even then an `abstract` keyword would be ineffective.
-
Long story short: I build a Ruby extension with Zig
I always had mixed feelings about writing native Ruby extensions. They surely are the way to make critical parts of the code run faster, but the developer experience around that was not great for a Ruby programmer like me. Sure, I know C. This was the second language I learned (after Pascal). I can write C, I can read C, and I even wrote some larger extensions in it, but I never felt comfortable with it.
- Acelerando o boot da sua aplicação Rails
-
Cut your Rails boot times on Heroku in half with a single command
To alleviate this problem, the engineers at Shopify created bootsnap, a gem which automatically detects and caches exact load paths to make those require calls fast (see Bootsnap: Optimizing Ruby App Boot Time for details).
What are some alternatives?
motion - Reactive frontend UI components for Rails in pure Ruby
heroku-buildpack-ruby - Heroku's buildpack for Ruby applications.
devise_masquerade - Extension for devise, enable login as functionality. Add link to the masquerade_path(resource) and use it.
wordmove - Multi-stage command line deploy/mirroring and task runner for Wordpress
chanCrawler - A simple gem that crawls chans and retrieves visual content
Coltrane - 🎹🎸A music theory library with a command-line interface
counter_culture - Turbo-charged counter caches for your Rails app.
zig-ruby
dry-core - A toolset of small support modules used throughout the @dry-rb & @rom-rb ecosystems
super_spreader - ActiveJob-based backfill orchestration library
Invokable - Objects are functions! Treat any Object or Class as a Proc (like Enumerable but for Procs).
snapcrawl - Crawl a website and take screenshots