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

Prepare 0.3.0 Release #20

Merged
merged 17 commits into from
Oct 8, 2020
Merged

Prepare 0.3.0 Release #20

merged 17 commits into from
Oct 8, 2020

Conversation

jeremyevans
Copy link
Contributor

No description provided.

@jeremyevans jeremyevans requested a review from hsbt October 3, 2020 20:01
Copy link
Member

@hsbt hsbt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I confirmed to remove $SAFE mechanism with this change. But I have no tk environment now. So, I'm unsure to work this change for use-case.

@jeremyevans
Copy link
Contributor Author

I tested all of the files in sample and sample/demos-en, as well as a couple of personal apps I have that use ruby-tk. That's not a a guarantee I didn't break anything, but it's probably the best I can do. If anything breaks, we can always fix it in a future release. I'll merge this and make a release tomorrow.

This hasn't been updated in over 10 years.
This doesn't appear to have been substantially updated in 15 years,
other than being renamed multiple times.
This fails with:

lib/tk.rb:2055:in `_invoke': string contains null byte (ArgumentError)
$SAFE support is being removed and these are no longer a good example.
This causes a warning.  Switch to including a module that overrides
method_missing and calls super.
@jeremyevans
Copy link
Contributor Author

While this works OK in Ruby 2.7 and basic usage in Ruby 3.0, for some samples, Ruby 3.0 needs additional changes, mostly due to Proc.new without block issues. I'll work on fixing the Proc.new issues before releasing 0.3.0.

Proc.new without block no longer works in Ruby 3.  It was probably
done as a performance improvement in earlier Ruby versions, but
it hasn't been a performance improvement since lazy block
activation was added in Ruby 2.5.

Change Proc.new(&b) to just b when b is already the block argument
to the method.  I'm not sure why the Proc.new call was used in this
case, as b should already be a Proc instance.

Delete some commented out methods near where code changes were made.
Mostly from pterjan on GitHub, only the const added by me to fix a
compiler warning.

Fixes ruby#12
This doesn't appear to run correctly, even in tk 0.2.0 before the
recent $SAFE removal:

/home/jeremy/tmp/tk/lib/multi-tk.rb:2081:in `method_missing': undefined method `_is_master_of?' for #<RemoteTkIp:0x0000003c9657c5b0> (NoMethodError)

Trying to fix that by removing the protected on the method gives:

/home/jeremy/tmp/tk/lib/multi-tk.rb:2713:in `deleted?': no permission to manipulate (SecurityError)

On exit in both cases, you get:

/home/jeremy/tmp/tk/lib/tk.rb:3013:in `_invoke': can't delete "INTERP_FINALIZE_HOOK": command doesn't exist (RuntimeError)

It's certainly possible these are underlying issues with lib/remote-tk.rb
or lib/multi-tk.rb and not a problem with the sample itself, but I don't
think it's a good idea to ship a sample that is broken.
This doesn't appear to work correctly even in 0.2.0.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants