Browse documentation

Request-FP v1.2.0 Release Notes

On this page

Release Date: January 1, 2026

This is a minor feature release that adds architecture mismatch detection and dynamic DLL discovery to improve Windows OpenSSL diagnostics, including support for vendors with non-standard DLL naming conventions.

🎯 What’s New

Architecture Mismatch Detection

After v1.1.0 release, we discovered that some users were still having OpenSSL failures even after following the installation instructions correctly. The root cause? They had 64-bit executables but 32-bit OpenSSL DLLs (or vice versa).

v1.2.0 makes this obvious:

When you run ssl_debug.exe, you now see:

=== OpenSSL Debug Information ===

Executable architecture: 64-bit
Required DLL names: libssl-*-x64.dll and libcrypto-*-x64.dll

If initialization fails, the error message now explicitly states:

OpenSSL initialization failed: Error loading library
This is a 64-bit executable. You need 64-bit DLLs:
  OpenSSL 1.1.x: libssl-1_1-x64.dll and libcrypto-1_1-x64.dll
  OpenSSL 3.x: libssl-3-x64.dll and libcrypto-3-x64.dll
IMPORTANT: Ensure DLL architecture (32-bit vs 64-bit) matches your executable!

πŸ“¦ Changes

Enhanced Diagnostics

  1. ssl_debug Example - Shows executable architecture upfront
  2. Architecture-Specific Error Messages - Error messages now detect and display whether you need 32-bit or 64-bit DLLs
  3. Dynamic DLL Detection - New FindSSLDLLPath function shows which OpenSSL DLL FPC actually loaded
  4. ReadLn Pause - ssl_debug now pauses before exit when run from IDE (community contribution)

πŸ”„ Upgrading from v1.1.0

Breaking Changes: None

Migration Required: No

Simply update your repository:

git pull origin main

All v1.1.0 code continues to work without modification.

πŸ“Š Changes Summary

πŸ› What This Fixes

Problem 1: Users with mismatched executable/DLL architectures got cryptic β€œError loading library” messages with no hint about the real issue.

Solution:

Problem 2: No visibility when vendors disguise OpenSSL versions (e.g., naming 3.x DLLs as 1.1.x).

Solution:

Problem 3: No visibility into which OpenSSL version FPC actually loaded.

Solution:

Impact: Users can now instantly diagnose OpenSSL issues and verify which version FPC loaded, even when vendors disguise DLL versions.

πŸ“ Full Changelog

See CHANGELOG.md for complete details.

πŸ’‘ For Users Still Having Issues

If you’re still experiencing OpenSSL failures after upgrading to v1.2.0:

  1. Run the debug tool:
    cd examples/ssl_debug
    lazbuild --build-mode=Debug ssl_debug.lpi
    ssl_debug.exe
  1. Check the architecture line - Does it say 64-bit or 32-bit?
  1. Verify your DLLs match - If you have a 64-bit exe, you MUST have DLLs with -x64 in the filename
  1. Check the installer you downloaded - Make sure it matches your architecture (Win64 vs Win32)

Understanding OpenSSL DLL Dependencies

Important discovery from community testing: FPC’s openssl.pas tries multiple OpenSSL DLL names in priority order:

FPC correctly prioritizes OpenSSL 3.x first! However, Windows DLL search order may override this. If multiple versions exist in System32 or Known DLLs registry, Windows may load an older version despite FPC preferring newer ones. This is why dynamic DLL detection is valuableβ€”it shows which version actually loaded.

This is a Windows-specific complexity - Linux uses dynamic library linking and works flawlessly.

v1.2.0’s dynamic DLL detection uses EnumProcessModules to show users exactly which OpenSSL DLL Windows actually loaded from FPC’s search list. This eliminates guesswork about which version is running.

Note for fpcupdeluxe Users

FYI: fpcupdeluxe with default settings installs 32-bit FPC, even on 64-bit Windows. This is a common choice for lower memory footprint and smaller executables.

If you’re using 32-bit FPC, you need 32-bit OpenSSL:

The v1.2.0 debug output shows your executable architecture (32-bit or 64-bit) upfront, making it easy to verify which OpenSSL version you need.

πŸ’ Thank You

Special thanks to:


Download: v1.2.0 Release

Previous Release: v1.1.0

Happy coding! πŸš€