Migrated several external commands to native Core Perl to reduce fork overhead and improve portability:
whoami->(getpwuid($<))[0]env/printenv->%ENVhash accesshostname->Sys::Hostname::hostname()grep ... /proc/meminfo-> Native file parsinggrep -c ^processor /proc/cpuinfo-> Native file parsingwhich-> Native PATH iterationgetconf PAGESIZE->POSIX::sysconf(POSIX::_SC_PAGESIZE)uname->POSIX::uname()or$^Ostty->POSIX::Termiosuptime->/proc/uptimeparsing or$^Tcalculation
- v2.8.44:
- Developed automated specification consistency auditor (
build/audit_specifications.pl) and Spec-to-Test Mapping Matrix. - Developed LTS API auto-bumping utility (
build/lts_autobump.pl) and GitHub Actions integration. - Refactored version parsing regexes and helpers (
mysql_version_eq,mysql_version_ge,mysql_version_le) to prevent uninitialized value warnings. - Developed EOL dates synchronization check script (
build/sync_eol_dates.pl). - Expanded unit tests with parameterized test matrix covering supported/outdated versions in
tests/test_vulnerabilities.t. - Re-implemented HTML report option (
--reportfile) removing Text::Template dependency.
- Developed automated specification consistency auditor (
- v2.8.43:
- Added
--compress-dumpand--dump-limitoptions for schema exports. - Exported deviations (naming conventions, foreign keys) to CSV and created manifest files.
- Prevented fake aborted connections count increase during password checking (#900).
- Resolved invalid credentials login errors, prevented plaintext password leakage, and protected connection state files.
- Added
- v2.8.42: Empty project metadata release.
- v2.8.41:
- Completed project-wide refactoring to use standard Perl Boolean practices.
- Restored Debian maintenance account automatic login functionality (#896).
- Improved memory calculation accuracy by including
tmp_table_sizein per-thread buffers (#864). - Added retry mechanism for initial server connection checks to improve resilience (#782).
- Resolved
AUTO_INCREMENTcapacity false positives for empty tables (#37). - Corrected
check_removed_innodb_variablesfalse positives for injected variables (#32). - Fixed
--defaults-fileusage to prevent dropping other connection options (#605). - Refactored InnoDB Redo Log Capacity logic to be workload-based for modern MySQL (#714, #737, #777).
- Added recommendation for
table_open_cache_instancesbased on CPU cores (#480). - Improved connection resilience with retry mechanism and fixed uninitialized
$mysqllogin(#782, #490). - Added guards against division by zero in calculations for AWS Aurora compatibility (#435).
- v2.8.40: Enhanced SSL/TLS security checks and cloud discovery (AWS RDS/Aurora, GCP, Azure).
- v2.8.38: Fixed container startup failures in lab environments.
- v2.8.31: Improved SQL check syntax for redundant index detection.
The following files track and contain the MySQLTuner version string. Below are the mechanisms to modify or regenerate each:
-
mysqltuner.pl (Main script & POD documentation):
- Locations: File header (
# mysqltuner.pl - Version X.Y.Z), internal variable (our $tunerversion = "X.Y.Z";), and POD documentation. - Update Command: Makefile targets
make release VERSION=X.Y.Zormake increment_sub_versionautomatically replace old versions usingsed.
- Locations: File header (
-
CURRENT_VERSION.txt (Minimal version manifest):
- Update Command: Run
make generate_version_fileto extract the version from the mysqltuner.pl header.
- Update Command: Run
-
USAGE.md (Markdown CLI manual):
- Update Command: Run
rm -f USAGE.md && pod2markdown mysqltuner.pl > USAGE.mdormake generate_usage.
- Update Command: Run
-
README.md (Version badge and links):
- Update Command: Handled automatically during
make release VERSION=X.Y.Zusingsedsubstitution.
- Update Command: Handled automatically during
-
SECURITY.md (Supported versions table):
- Update Command: Updated manually or via sed-based version bumps.
-
MEMORY_DB.md (Project version memory):
- Update Command: Updated automatically during
make release VERSION=X.Y.Zusingsedsubstitution.
- Update Command: Updated automatically during
-
Changelog (History log):
- Update Command: Updated automatically during
make release VERSION=X.Y.Zusingsedsubstitution.
- Update Command: Updated automatically during
-
releases/v[VERSION].md (Release notes):
- Update Command: Generated via
python3 build/release_gen.py.
- Update Command: Generated via