Looks great!! My 2 cents. Please consider changing link to monitor (or support it as an option) to avoid gen_event mistakes. What if we don't want our process to die when registry crashes. We would have to trap_exits and handle EXIT but how we would know a pid of registry partition in our process to match on. with monitors the process can pass a callback MFA to be called when either registry or the process itself dies. Something similar to gen_server's terminate.
On October 25, 2016 2:06:24 PM PDT, "José Valim" <jose.va...@plataformatec.com.br> wrote: >Hello everyone, > >I would like to propose the addition of the Registry project to Elixir: > >https://github.com/elixir-lang/registry > >The Registry project is a local and scalable key-value process storage >in >Elixir. It encapsulates 3 known use cases: > >* Process registry: to register process with dynamic names. Often >Elixir >developers need to rely on gproc or other tools. >* Code dispatching: dispatch a module/function associated to a given >key >* PubSub implementation: send messages to local processes registered >under >a given topic > >There are probably other use cases waiting to be discovered. :) >You can learn more in the documentation: > >http://elixir-lang.org/docs/registry/ > >The project clocks only 700LOC with documentation and performs well. We >have extracted, improved and generalized the patterns from >Phoenix.PubSub, >the exact implementation used to manage and publish messages to 2 >million >subscribers ><http://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections> >. > >When benchmarking thousands of processes registering serially, it is >twice >slower than local atoms, albeit 33% faster than gproc. On concurrent >cases, >it distributes well across all cores, becoming only 15% slower than >local >atoms, and 3x faster than gproc (gproc seems to be serial on its >default >configurations). > >Please give it a try and let us know what you think. > > >*José Valim* >www.plataformatec.com.br >Skype: jv.ptec >Founder and Director of R&D > >-- >You received this message because you are subscribed to the Google >Groups "elixir-lang-core" group. >To unsubscribe from this group and stop receiving emails from it, send >an email to elixir-lang-core+unsubscr...@googlegroups.com. >To view this discussion on the web visit >https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4LabvDu73t19riOi217yOviEg%2BFmjgFypK-4uwxwkzMug%40mail.gmail.com. >For more options, visit https://groups.google.com/d/optout. -- Sent from my Android device with K-9 Mail. Please excuse my brevity. -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/B3F56701-71CF-4872-B563-292C1AB28ADD%40gmail.com. For more options, visit https://groups.google.com/d/optout.