Hi everyone,
I have recently been working on modernizing and profiling some of the
core components of Xerces-J. I have pushed these experimental changes to
my personal fork and would love to get your feedback on contributing
some or all of this work upstream.
Here is a brief summary of the changes I have made on my fork:
• Build & Test Modernization: Migrated the legacy Ant build to a
standard Gradle multi-module structure.
• JUnit 5 Migration: Converted the conformance test suites (JAXP, DOM,
XInclude, Schema, etc.) to pure JUnit 5 Jupiter.
• Java 8 Adoption: Replaced older iteration patterns and resource
handling with Java 8 features (lambdas, try-with-resources) across
various modules.
• New JMH Benchmark Suite: Created a dedicated xerces-benchmarks
submodule to systematically profile SAX, StAX, and DOM workloads.
• Performance Enhancements: Derived from the benchmarks, I implemented
several micro-optimizations (e.g., in XMLEntityScanner, SymbolTable
resizing, and string buffer boundaries).
You can review the full history of these changes in the main branch of
my fork here: https://github.com/lyca/xerces-j
Since this is a rather substantial set of changes (around 80 commits), I
wanted to reach out to the list before opening any massive Pull
Requests. What would be the preferred process for you?
I would be more than happy to slice this into smaller, isolated JIRA
tickets and open sequential PRs (e.g., starting exclusively with the
JUnit 5 modernization or the JMH scaffolding, and leaving the core
performance adjustments for later).
(Note for transparency in accordance with the ASF generative tooling
guidance: I used the help of my AI assistant, Gemini / Antigravity, to
actively collaborate on this modernization effort. The AI helped me
significantly with executing the structural refactorings, generating the
boilerplate for the new benchmark suite, and writing the commits. I
have, of course, thoroughly reviewed and take full responsibility for
all changes).
Please let me know how you prefer to handle such structural
contributions and where you think I should start!
Best regards,
Lars Michele
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]