GithubHelp home page GithubHelp logo

Don't autoload? about rack-protection HOT 11 CLOSED

sinatra avatar sinatra commented on June 9, 2024
Don't autoload?

from rack-protection.

Comments (11)

rkh avatar rkh commented on June 9, 2024

Development on Ruby 3.0 has not yet started. Matz is quick at changing his opinion (see Module#prepend).

I don't see a threading issue, tbh, as the autoloads should be triggered at load time.

from rack-protection.

charlie avatar charlie commented on June 9, 2024

I'm not sure what "should be triggered at load time" means. The docs about Kernel#autoload say:

Registers filename to be loaded (using Kernel::require) the first time that module (which may be a String or a symbol) is accessed.

Last I heard, Kernel#require was not threadsafe. Has that changed? If not, I still question whether deferred non-threadsafe lazy-loading is correct for a core library like rack-protection, whether or not development on Ruby 3.0 has started.

from rack-protection.

rkh avatar rkh commented on June 9, 2024

But you won't lazy load anywhere but the main thread.

from rack-protection.

charlie avatar charlie commented on June 9, 2024

I guess I don't understand something about autoload/require. There is some guarantee that 2 threads can't/won't call require at the same time?

from rack-protection.

rkh avatar rkh commented on June 9, 2024

No. But that does not have anything to do with autoload.

from rack-protection.

rkh avatar rkh commented on June 9, 2024

JRuby and Ruby 2.0 autoload is thread-safe and Rubinius autoload is going to be.

from rack-protection.

joshjordan avatar joshjordan commented on June 9, 2024

@rkh can you cite a source for that (particularly Ruby 2)? I've been trying to chase this answer down and don't see evidence for that, especially given what Matz said in the post that started this thread.

from rack-protection.

kriansa avatar kriansa commented on June 9, 2024

I'm also curious about it. Since I started coding with ruby, I see people talking about the autoload not being thread-safe, but I could'nt find a workaround or a official statement about that.

from rack-protection.

bf4 avatar bf4 commented on June 9, 2024

@joshjordan see http://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/33078 (linked in the headius/thread_safe) issue

from rack-protection.

rkh avatar rkh commented on June 9, 2024

<3

from rack-protection.

zzak avatar zzak commented on June 9, 2024

I think its safe to close this issue, autoload should be threadsafe so we won't change the design of rack-protection for this.

from rack-protection.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.