DataWraith / ascii85gem

A simple gem that provides methods for encoding/decoding Adobe’s binary-to-text encoding of the same name.
MIT License
19 stars 10 forks source link

Supported Ruby versions? #7

Open jgarber623 opened 3 weeks ago

jgarber623 commented 3 weeks ago

Hello!

First off, thanks for keeping this gem going for 15+ years. Also, I acknowledge the note in the README regarding the project's current status. So, if you don't feel like addressing the following, I completely understand.


This gem incidentally supports any Ruby version since it doesn't specify a required_ruby_version in its gemspec. I'd be interested in knowing more about that choice and whether or not you'd be open to implementing a minimum required Ruby version of some kind.

Given the popular libraries that depend on this gem, a choice of a minimum supported Ruby version should be carefully considered.

Most notably, pdf-reader (65 million downloads) specifies ruby >= 2.0. pdf-reader is a development dependency of prawn (60 million downloads) which itself specifies ruby >= 2.7.

Additionally, implementing a minimum supported Ruby version would:

While it's been EOL'ed since March 2023, Ruby 2.7 as a minimum would be my choice (to the degree that I have a vote!).

Thanks for considering! I'd be happy to PR a change if any of the above is reasonable.

DataWraith commented 1 week ago

Hello,

thank you for your interest, and sorry for the late reply -- my last two weeks have been very, very busy.

My policy so far has been to try to support all Ruby versions going back to 1.8, when I originally wrote the gem, because you can never really be sure if there is not someone still depending on it. The project is feature-complete, so my main task is to keep it working for everyone who depends on it.

At this point, you're right that approximately no-one is still on 1.8, and in fact, it is very difficult to even install Ruby 1.8 on a modern operating system. I failed to do that a few weeks back when I made the last point release, so I definitively should raise the minimum Ruby version.

However, the code is pretty old, and I made a few mistakes that should really be dealt with by a complete rewrite and a 2.0.0 release. There's the boneheaded decision of requiring strings to be wrapped in <~ and ~> before decoding, and the ascii85 executable also isn't all that useful.

Long story short: The gem is due for a complete re-write, but I'm not sure when or even if I will find the motivation and time to do that. I probably won't mess with the minimum supported version until that rewrite happens, at which point I will release a new major version with a Ruby 2.7 or 3.0 constraint.

DataWraith commented 5 days ago

I have decided to raise the minimum supported Ruby version to 2.7 with the upcoming 2.0.0 release.

I had some spare time to refactor and improve the code; the gem now allows streaming encoding/decoding from/to files or other IO-like objects. It's also about 33% faster as a result of the changes (though an actual benchmarking harness is still TBD).

I hope to be able to publish the new version within two weeks, after some more testing and fixing.

jgarber623 commented 2 days ago

@DataWraith Thank you for the thoughtful replies! I appreciate it and hopefully this week is less busy than the previous weeks.

That's great news about the upcoming v2.0.0. Are you looking for any help getting that across the finish line, reviewed, tested, or anything similar?