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
Discussing possible fusion with pypdfium2-team development fork #195
Comments
Also an idea: You could divide this repo in two branches: One with our changes, where any future active development shall go to, while still backporting key fixes to the "oldschool" codebase, at least for a migration period. Basically just what I'm currently doing with a fork and backport PRs such as #193, #189, #191, but fused into a single repo. |
@mara004 I'm terribly sorry for not have had the time to study your work on this, but I'm glad you don't give up! I'm thinking of make a v1.x release branch after any minor eventual changes to master, to be able to more freely push more experimental code to master (better I think than creating an experimental branch). What is your opinion on this? |
Thanks, no worries!
A v1 branch plus experimental master sounds fine to me. |
BTW, in case anyone wants to merge our changes at large, the Readme would need to be updated as it talks about the fork, yet it would be good to retain the new info (e.g. tips & tricks section). |
Here's a list of smaller fixes we might want to backport to the v1 codebase:
I'm not too convinced if we have to do this, though. |
As you might know already, I've been working on an overhaul of ctypesgen at
https://github.com/pypdfium2-team/ctypesgen/tree/pypdfium2
Here are some resources to get an overview of the design direction I've been going:1
https://github.com/pypdfium2-team/ctypesgen/blob/pypdfium2/README.md
https://github.com/pypdfium2-team/ctypesgen/blob/pypdfium2/docs/CHANGELOG.md#unreleased-v2
pypdfium2-team#1
master...pypdfium2-team:ctypesgen:pypdfium2
I believe the changes contain significant improvements/modernizations from both ctypesgen dev and embedder perspective, including logic corrections / bug fixes (e.g. to common headers / module linking / external preamble), and new features (e.g. symbol filters, style options).
Also I've modernized the test suite, started pathlib and f-string migration, and cleaned up many code passages (e.g. python printer, operations, library loader, preamble).
Particular goals are to value the Keep It Simple principle, relieve ctypesgen of most custom wrappers, stick to plain ctypes as much as possible, and avoid code smell.
If there's a way to find a common ground, it would be great if this development work could eventually (not quite yet) be merged back here to share the same base and avoid fragmentation. Note however that it would not be possible or reasonable to do so without significant backward incompatibility, which is tied to the overhaul, though we could talk about adding a few compat-oriented extensions (e.g. a string helper such as pypdfium2-team#1 (comment)) as long as there's a lean, pollution free way to integrate.
I know I might not be able to actively work on ctypesgen in the somewhat near future, yet I believe this were the more suitable base for future development, and would be glad if the work were not lost or done twice in separate places.
To any future developers, please consider looking through these changes first before starting on the "old" codebase independently.
I just thought I'd open this issue as a sort of bulletin board for discussion, although my availability to reply may be limited.
For some reference, here's also a selection of issues and PRs I committed to:
Feedback / info / ideas
__slots__
on structs (must be defined in class body) #183 (comment)struct__typeobject._fields_
AttributeError: _fields_ is final) #211VARARGS
not implemented) #212PRs/Patches
no
vsnever
typo #191__attribute__ ((...))
#207c_ptrdiff_t
impl with built-inctypes.c_ssize_t
#210Footnotes
Unfortunately the readme/issue may be somewhat outdated/incomplete due to ongoing development, where there isn't really an easy way to keep it all up-to-date without having to spend too much time. ↩
The text was updated successfully, but these errors were encountered: