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

Support for Tcl/Tk 8.7 #34

Open
codebykevin opened this issue Oct 14, 2021 · 8 comments
Open

Support for Tcl/Tk 8.7 #34

codebykevin opened this issue Oct 14, 2021 · 8 comments

Comments

@codebykevin
Copy link

I am a member of the core Tcl/Tk development team and have wanting to test Ruby-Tk against some recent updates to the tip of Tk 8.7 in a Ruby app I maintain. I'm unable to build this gem against Tk 8.7 because it is listed as an unsupported version in extconf.rb. I have tried manually editing the file and also passing 8.7 as a configure flag ("--with-tcltkversion=8.7") but the build system seems to ignore these flags and/or overwrite my locally edited configuration. Can you either add support for Tcl/Tk 8.7 or provide guidance on how to override the restrictions in this gem? I understand that Tk 8.7 is not yet released, but it is maturing rapidly and it would be helpful to be able to build this gem against that version. Thank you.

@codebykevin
Copy link
Author

Interestingly, passing these configure flags:

gem install tk -- --with-tcltkversion=8.7 --with-tcllib=tcl87 --with-tklib=tk87 --with-tk-shlib-search-path=C:/Ruby30-x64/msys64/usr ---with-tcl-dir=C:/Ruby30-x64/msys64/usr --with-tk-dir=C:/Ruby30-x64/msys64/usr

appears to builds the gem successfully, but things still do not run:

irb(main):001:0> require 'tk'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require': 126: The specified module could not be found.   - C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/tk-0.4.0/lib/tcltklib.so (LoadError)

tcltklib.so is indeed found in the directory, so the "could not be found" message is misleading. I wonder if it is a versioning issue - is more work required with Ruby-Tk's internals to support Tcl/Tk 8.7 than just doing a version bump?

@codebykevin
Copy link
Author

My setup is the current version of RubyInstaller (3.0), and Tcl/Tk tip-of-8.7 built against MinGW, on Windows 10.

@jeremyevans
Copy link
Contributor

I don't think there are any current plans to support Tcl/Tk 8.7. However, we would definitely consider a pull request that added support for 8.7 without changing behavior for other supported versions.

I searched for that error message in both the ruby and ruby-tk sources and couldn't find it. Is it an error message from Tcl/Tk that Ruby is using when raising the exception?

Your best bet for debugging this is build ruby and the gem with debugging symbols, then run ruby using a debugger to see exactly where that exception is being raised. You could probably put breakpoints on rb_raise and rb_exc_raise, then get a C-level backtrace from there. You'll want to keep getting such backtraces until the program exits, then the last backtrace should be the one related to the problem.

@codebykevin
Copy link
Author

That's a Ruby error message--a Google search for the string shows up several Stack Overflow entries on various modules.

I suspect the issue is simply that, as you say, Tcl/Tk 8.7 isn't supported. Perhaps I'll come back when 8.7 is officially released.

@codebykevin
Copy link
Author

Leaving open to keep on the board and track with Tcl/Tk release.

@rubyFeedback
Copy link

rubyFeedback commented Feb 21, 2023

Today I just read this on ruby reddit:

https://old.reddit.com/r/ruby/comments/1169ti9/whatever_happened_to_ruby/

This part I found quite interesting:

"Apparently Ruby don’t support tk 8.6"

Now, personally, I use mostly ruby-gtk3, which works well for my use cases. But some people use ruby-tk,
such as glimmer-tk such as Andy here:

https://github.com/AndyObtiva/glimmer-dsl-tk

So for these projects it would be nice if someone could find and track progress for ruby-tk in regards
to tk 8.6, 8.7 or any other later version.

@rubyFeedback
Copy link

I guess the question is how/if one can track progress for the ruby-specific parts, to allow for tk 8.6 and so forth.

I assume one would need some C knowledge? This would probably be where many people drop off. I know some ruby, but my C knowledge is very, very limited.

But what if we could, say, add partial support? So people could work on some widgets, and make these work (with tests) and then move on to do other things. That would still be better than no support for later tk.

@AndyObtiva
Copy link
Contributor

@rubyFeedback Ruby most certainly supports Tk 8.6. That is the main version that was used in Glimmer DSL for Tk (note how it mentions ActiveTcl 8.6).

Everybody makes mistakes and people say things that are wrong sometimes. Don't take their word for granted no matter how many people agree with them as everyone could be wrong every once in a while. Always question everything and investigate facts yourself.

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

No branches or pull requests

4 participants