Comments (7)
I've been working mostly with python and java these days and am pretty swamped ATM. The soonest I could get to this is probably the weekend, but I definitely want to support rubinius. All of my testing and use so far has been on MRI 1.8.{6,7}, 1.9.{1,2}, and various releases of jruby... with most of my real usage being in jruby (of course).
Supporting rubinius is probably going to be less complicated than macruby (and still support fsevent).
from fssm.
Evan kindly applied a patch to Rubinius that fixes that issue, but there's yet another recursion loop:
/home/jonathan/.rvm/gems/rbx-head/gems/haml-3.0.24/vendor/fssm/lib/fssm/pathname.rb:43:in `<<'
kernel/common/file.rb:628:in `join'
kernel/bootstrap/array.rb:71:in `each'
kernel/common/file.rb:606:in `join'
/home/jonathan/.rvm/gems/rbx-head/gems/haml-3.0.24/vendor/fssm/lib/fssm/pathname.rb:373:in `join'
/home/jonathan/.rvm/gems/rbx-head/gems/haml-3.0.24/vendor/fssm/lib/fssm/pathname.rb:405:in `join'
I think Rubinius' handling is actually very sensible, since it treats String and the other primitives simply as other Ruby objects, not special C entities. I'd be glad to try my hand at refactoring Pathname to something that doesn't rely on implementation-specific quirks, if you don't have the time to spare.
from fssm.
The entire purpose of the custom pathname library is that when I profiled FSSM ages ago, most of its' time was being spent there. No lie. So, at the time at least, there was a method to my madness.
The old results are still in the tree actually... go team crufty cruft.
Using pathname (27.9s): https://github.com/ttilley/fssm/blob/master/profile/prof-plain-pathname.html
Using FSSM's pathname (14.4s): https://github.com/ttilley/fssm/blob/master/profile/prof-fssm-pathname.html
That's pretty damn close to half. Those tests, however, haven't been run since early September 2009. And other than indentation, that code really hasn't been looked at since then either. For all I know, it might not make that much of a difference any more. It might also be the case that the implementation of pathname in rubinius performs better than what's in FSSM now.
I'd urge you to look into it and would gladly accept any contributions to the codebase that make it more accessible. ^_^
from fssm.
I've just forked FSSM and run the specs: "26 examples, 14 failures". I'll see what I can do to turn those fails into passes!
from fssm.
I have a fix that keeps the current class, but the fix is a bit... icky to say the least. I'd be interested to see how it performs versus using just Pathname on rubinius... or elsewhere, now that the change has been made.
from fssm.
using "-Xjit.sync=true -Xjit.call_til_compile=1 -Xprofile" FSSM::Pathname had a runtime of 4.9s, while Pathname had a runtime of 8.9s.
from fssm.
i'm going to increase the iterations and commit the script shortly.
from fssm.
Related Issues (20)
- Multiple monitors not executing all Ruby code HOT 3
- improve documentation around using FSSM inside an OO class HOT 2
- rb-fsevent backend doesn't work HOT 6
- crazy talk from FSSM on Ubuntu HOT 6
- rb-inotify breaks threads HOT 5
- Incorrect path segments for cygwin path HOT 1
- fssm 0.2.7 fails tests with rb-inotify 0.8.6 installed HOT 5
- "An optimized backend is available for this platform!" HOT 6
- FSSM Crashes for filename changes HOT 3
- Detecting modifications between 2 given times. HOT 3
- Do not alter $LOAD_PATH from library itself HOT 6
- fssm 0.2.8 builds native extension in wrong place HOT 2
- Fssm breaks with jruby HOT 12
- Callback for all changes HOT 1
- Suppress undesired recommendation
- FSSM is essentially dead HOT 1
- License missing from gemspec
- notification instead of polling on windows
- Can FSSM use regular expression to match string not containing a word?
- Please teach me how to monitoring unit test
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fssm.