Replies: 4 comments 1 reply
|
See |
|
First of all, thanks to @pbatard and @enzo1982 for the information on how libcdio is currently used in Rufus and fre:ac. I'm aware of these, but I confess that I didn't understand the extent of its use or how embedded it is. It is important, as things move forward, not to cause a burden on these projects. If that happens, let me know and I'll see what we can do. I am okay with doing parallel work in C. In fact, on several other projects I work on, I have to do the same. (For example, changes to a bash debugger for one version of bash might have to get translated to another version or even a debugger in zsh or ksh; same thing for a GNU Make fork. So, while others may find this busy-work, it's definitely an activity that I am used to — until we can transition everything. With respect to the thought that C will be around in 30 years, while that may be true, I won't be around in 30 years. And possibly some of you won't either. The number of people interested in C as opposed to other languages, which are more like Rust (typestate or strongly typed languages). Personally, one of my biggest annoyances with libcdio has been the CVEs found and logged purely due to problems in memory management and buffer overflows. Let's face it, activity in libcdio hasn't been all that large. Stagnation is death. Personally, I'd like all C code I've written to be redone in a more modern language, and right now Rust seems to be the best choice. My thought or hope was that libcdio would be the easiest and smallest-sized project. Replacing GNU make, or its forked version, remake, is much tougher. This summer, I have the opportunity to get help in this endeavor. I wish we could have had this discussion sooner. |
|
I'm going to try to keep this short, so here are the points I would make.
|
|
This summer, the project has been blessed to have someone working on it as part of Google's Summer of Code. In the course of this work, and using Rust, a type-safe programming language, several weaknesses in the C code have not only been uncovered but also fixed. I've long had a gut feeling, or had known outright, that there were various shortcomings in the code. So I am grateful that some of these are now getting addressed. Although we are only halfway through the project, here are thoughts on how things might likely play out. At the end of the program, there will be a new release of libcdio from 2.3.0 to possibly 2.4.0. This will contain all of the libcdio bugs found and fixed during Summer of Code as well as some others reported recently. There will also be a release of two new packages, implemented in Rust:
These can be found in the cdio-rust repository. Note: As we are having a rewrite, we've taken this opportunity to improve the programs' output. For example, see #9. This may affect any programs or scripts that use libcdio's CLI programs. After a beta and acceptance phase, the CLI programs in libcdio C would be removed when libcdio-cli is complete with all the programs. This would be a libcdio 3.0.0 release. This does not affect the library users of libcdio. Thoughts or comments? |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This space is for extending libcdio to Rust and, in the longer term, possibly transitioning the code to.
All reactions