Skip to content

libFPC v1.0.0

Latest
Compare
Choose a tag to compare
@jarroddavis68 jarroddavis68 released this 02 Apr 03:16
· 4 commits to main since this release

libfpc

πŸŽ‰ libFPC v1.0.0 – First Official Release

We’re excited to announce libFPC v1.0.0, the first official release of the library that brings runtime access to the FreePascal compiler in a powerful, dynamic way.

This release introduces full support for in-memory compilation, DLL/EXE execution, source-from-string, and more!

πŸš€ Highlights

  • βœ… In-memory DLL loading: libfpc_deps.dll is now loaded directly from memoryβ€”no disk I/O.
  • πŸ“œ Compile from string or file: Thanks to the new SetProjectSource, you can now pass source directly as a string.
  • πŸ” Get status and diagnostics: Retrieve error messages, counts, and compiler stats programmatically.
  • βš™οΈ Add metadata: Inject version info, icons, and manifests into your EXE or DLL.
  • 🧠 In-memory execution: Compile and run executables or DLLs directly from memory, ideal for plugins and sandboxing.

🧠 Core Enhancements

  • libfpc_deps.dll now loads directly from memory
  • πŸ”„ Renamed SetPrintEvent ➜ SetPrintCallback
  • βž• Added:
    • GetStats
    • GetErrorCount
    • GetError(Index)

Easily inspect compilation errors and status programmatically.

πŸ“ Source Management

  • πŸ†• Introduced lfpProjectSource type
  • πŸ”„ Replaced SetProjectFilename with:
    • SetProjectSource – accepts file or raw string
    • GetProjectSource – retrieve the current source

πŸ’‘ Thanks Herbert M Sauro for suggesting string-based source support!

βš™οΈ Output Configuration

  • βž• Added:
    • SetAddVersionInfo
    • GetAddVersionInfo
    • GetVersionInfo
    • GetDebugMode

Easily control output metadata, debug info, and version details.

  • Now supports adding:
    • βœ… Icons
    • βœ… Version Info
    • βœ… Manifests

🧹 Cache & Execution

  • βž• Added:
    • ClearCacheDir
    • SetOutputPathToCacheDir
    • GetCachedDir
  • πŸ†• Added:
    • RunEXE: Compile and run executable from memory
    • LoadDLL: Load DLL directly from memory

Enables in-memory dynamic code generation and execution β€” great for sandboxing or plugin systems.

πŸ’‘ Thanks again to Herbert M Sauro for the idea!

πŸ›  Miscellaneous

  • Various internal fixes, refactors, and improvements.

πŸ”š Summary

libFPC v1.0.0 gives you:

  • 🧩 Flexible source handling (file or string)
  • πŸ’₯ Runtime compilation & execution
  • πŸ›‘ No disk writes needed
  • 🧾 Full metadata control
  • 🧠 Post-compilation diagnostics

🎯 Use it for scripting, plugin systems, dynamic sandboxing, or anything that needs real-time Pascal compilation.

Let us know what you build with libFPC β€” and stay tuned for what’s next! πŸš€