Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSP channels implementation #510

Open
lloeki opened this issue Feb 14, 2016 · 4 comments
Open

CSP channels implementation #510

lloeki opened this issue Feb 14, 2016 · 4 comments
Assignees
Labels
enhancement Adding features, adding tests, improving documentation.

Comments

@lloeki
Copy link

lloeki commented Feb 14, 2016

I've had some chat with @coding-horror over Twitter and concurrent-ruby was brought again to my mind, so I went on to look for the channel implementation, which I found to be lacking. Turns out I've had some implementation collecting dust, so maybe someone over here could make use of this.

I strived to keep the implementation simple, keeping the Go spirit while still being idiomatic Ruby: take a look at the examples and open the corresponding Go by Example page.

The implementation is almost feature complete save for non-blocking select, for which I'm still looking for a straightforward and idiomatic syntax.

Anyway, feel free to ignore this if you don't feel like it's fit for this project.

@jdantonio
Copy link
Member

Absolutely, I'd love your assistance with channels. Thank you!

The new implementation I started several months back is still very experimental, incomplete, and buggy. I haven't had much time to revisit lately. I've only looked at your implementation briefly but yours is definitely simpler and more elegant. It's probably a better base to work from than what I've created. There are tools within concurrent-ruby that we can leverage (Synchronization::LockableObject, thread pools, etc.) but those updates can happen incrementally.

Are you interested in becoming a contributor? If so we'd love to have your help (a similar conversation over actors is how @pitr-ch got involved in the project--we adopted his implementation in lieu of mine). Please feel free to create a PR that replaces out existing channels with yours. Or I can do the work myself if you would prefer. It's your code so I'll support whatever works best for you.

@lloeki
Copy link
Author

lloeki commented Feb 15, 2016

Well, becoming a contributor sounds nice :-) However small a piece, I'd like to help Ruby stay relevant in modern times.

I'll get things going locally, and start getting the hang of concurrent-ruby's layout and conventions.

@pitr-ch
Copy link
Member

pitr-ch commented Feb 16, 2016

@lloeki welcome! If you have any questions about Synchronization layer don't hesitate to ask me.
Side note: Please use only Synchronization::Object. LockableObject may have been a step in wrong direction and can go away.

@lloeki
Copy link
Author

lloeki commented Mar 12, 2016

Time sure flies. Finally started working on this a bit, tracked in #519.

@pitr-ch pitr-ch added the enhancement Adding features, adding tests, improving documentation. label Mar 12, 2016
@pitr-ch pitr-ch added this to the 1.1.0 milestone Mar 12, 2016
@pitr-ch pitr-ch modified the milestones: 1.2.0, 1.1.0 Apr 2, 2017
@pitr-ch pitr-ch removed this from the 1.2.0 milestone Jul 6, 2018
@pitr-ch pitr-ch added this to Nope in Hackathon Aug 24, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Adding features, adding tests, improving documentation.
Development

Successfully merging a pull request may close this issue.

3 participants