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

[wish] Please drop dependency on IO::FDPass #1

Closed
Tux opened this Issue Feb 16, 2017 · 2 comments

Comments

Projects
None yet
2 participants
@Tux

Tux commented Feb 16, 2017

The module requires IO::FDPass, but all tests pass when that module is not installed, so it should either be dropped as requirement and made optional, or it should not be required at all.

Many users and system administrators will refuse to install any module maintained by Marc Lehmann, as his service level is too terrible to even consider using whatever he produces. Even if his modules make sense, people will look for alternatives in order to not have to communicate with Marc.

@marioroy

This comment has been minimized.

Show comment
Hide comment
@marioroy

marioroy Feb 16, 2017

Owner

Greetings,

Without IO::FDPass, there are restrictions for using Condvar, Handle, and Queue. These make socket handles and passed to the shared-manager via IO::FDPass if available. Without it, means that the user must construct these before other shared objects and afterwards start the shared-manager process manually. This is a pain and easily forgotten, causing confusion.

In other words, having IO::FDPass allows shared construction of Condvar, Handle, and Queue anytime and including after the shared-manager has been started. It elevates the user-experience in regards to sharing these three modules.

This all came about because a developer constructed a shared MCE::Shared->hash() before MCE::Shared->queue(). Once the shared-manager process is running, it is no longer possible to construct a shared Condvar, Handle, or Queue. Unless, IO::FDPass is available.

Maybe, I've made a mistake in creating Condvar, Handle, and Queue for MCE::Shared. Folks like the shared file capabilities. With IO::FDPass on the box, the following statements are allowed while the shared-manager process is running.

my $shared_hash = MCE::Shared->hash();      # shared-manager runs if not running
my $shared_cache = MCE::Shared->cache();

mce_open my $output_fh, ">>", "/path/to/file.log";   # ok, if IO::FDPass is available
mce_open my $input_fh, "<", "/path/to/file.log";

Are their alternatives that work on all the major platforms? Let me pass this wish list to a friend for extra help and guidance on this matter. I'm open to suggestions.

Kind regards, Mario.

Owner

marioroy commented Feb 16, 2017

Greetings,

Without IO::FDPass, there are restrictions for using Condvar, Handle, and Queue. These make socket handles and passed to the shared-manager via IO::FDPass if available. Without it, means that the user must construct these before other shared objects and afterwards start the shared-manager process manually. This is a pain and easily forgotten, causing confusion.

In other words, having IO::FDPass allows shared construction of Condvar, Handle, and Queue anytime and including after the shared-manager has been started. It elevates the user-experience in regards to sharing these three modules.

This all came about because a developer constructed a shared MCE::Shared->hash() before MCE::Shared->queue(). Once the shared-manager process is running, it is no longer possible to construct a shared Condvar, Handle, or Queue. Unless, IO::FDPass is available.

Maybe, I've made a mistake in creating Condvar, Handle, and Queue for MCE::Shared. Folks like the shared file capabilities. With IO::FDPass on the box, the following statements are allowed while the shared-manager process is running.

my $shared_hash = MCE::Shared->hash();      # shared-manager runs if not running
my $shared_cache = MCE::Shared->cache();

mce_open my $output_fh, ">>", "/path/to/file.log";   # ok, if IO::FDPass is available
mce_open my $input_fh, "<", "/path/to/file.log";

Are their alternatives that work on all the major platforms? Let me pass this wish list to a friend for extra help and guidance on this matter. I'm open to suggestions.

Kind regards, Mario.

@marioroy

This comment has been minimized.

Show comment
Hide comment
@marioroy

marioroy Feb 17, 2017

Owner

From talking to several folks, the opinion is that there is no reason to not use something on CPAN, especially when passing on many smoke machines. IO::FDPass is a great module, one that works as described on multiple platforms. In regards to MCE::Shared, there are more reasons in having IO::FDPass versus not. Trying to work around this seems counter productive IMHO.

The effort made to not have IO::FDPass was purely for running MCE::Shared with some restrictions under Cygwin where IO::FDPass isn't possible. That's a technical reason, not a political one.

I appreciate your feedback. Unfortunately, there are no alternatives at this time.

"Be kind to one another"
--Ellen DeGeneres

Owner

marioroy commented Feb 17, 2017

From talking to several folks, the opinion is that there is no reason to not use something on CPAN, especially when passing on many smoke machines. IO::FDPass is a great module, one that works as described on multiple platforms. In regards to MCE::Shared, there are more reasons in having IO::FDPass versus not. Trying to work around this seems counter productive IMHO.

The effort made to not have IO::FDPass was purely for running MCE::Shared with some restrictions under Cygwin where IO::FDPass isn't possible. That's a technical reason, not a political one.

I appreciate your feedback. Unfortunately, there are no alternatives at this time.

"Be kind to one another"
--Ellen DeGeneres

@marioroy marioroy closed this Feb 17, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment