You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
2026-06-16Type() - compile-time typeof / decltype; declare a variable as the type of another - docs
2026-07-01{$embedstr <var name> <file path>} - embed a file at compile time as a String const; 1-arg {$embedstr <file path>} yields an inline String expression (foo({$embedstr <path>}))
2026-07-01{$embedbytes <var name> <file path>} - embed a file at compile time as an array[N] of byte const; 1-arg {$embedbytes <file path>} yields an inline byte-array literal
2026-07-01threadstatic - like static, but per-thread (TLS); function-local scope, persists for the thread's lifetime. forum post 1, forum post 2
NativeNT target - Kernel Mode (drivers) focus. The non-kernel-mode native .exe (runs very early in boot - autochk / boot-time chkdisk, AV scanners) is niche, likely skip.
named arguments - set argument(s) by name, including the Nth one without the preceding args. Open question: must the skipped args have declared defaults, or are they zeroed? Needs discussion.
zeroinit: zero inline anonymous compound locals (var a: array[0..3] of Integer) - skipped today; Default(T) mangles its hidden zero-const off the type symbol, which anonymous types lack
Abandoned / Revamped
2026-06-16{$incfile <var name> <file path>} - include a file at compile time as a String; revamped into $embedstr
Individual features are discussed in Discussions (the Ideas / Feature Requests category), each in its own thread:
existing features / ideas: Feature: <name>
new feature requests: Feature request: <name>
If a feature doesn't have a thread yet, feel free to create one. Threaded replies, upvotes and polls fit gathering pros/cons much better than a flat issue.
Roadmap for FPC Unleashed language features.
To discuss a specific feature, see the bottom of this issue.
Features Roadmap
Type()- compile-timetypeof/decltype; declare a variable as the type of another - docs{$embedstr <var name> <file path>}- embed a file at compile time as a String const; 1-arg{$embedstr <file path>}yields an inline String expression (foo({$embedstr <path>})){$embedbytes <var name> <file path>}- embed a file at compile time as anarray[N] of byteconst; 1-arg{$embedbytes <file path>}yields an inline byte-array literalthreadstatic- likestatic, but per-thread (TLS); function-local scope, persists for the thread's lifetime. forum post 1, forum post 2lock,trylock- critical-section sugar; forum post, GitHub discussionzeroinitmodifier - zero-initvarsectionaliasmodifier - extra Pascal-callable name(s):procedure foo; alias bar, baz;parametrized macrosforceinlinemodifierlightweight generics- witness-table; less code bloat; feat/lightweight-genericscompile-time functions- similar to thepurefunctions currently waiting to merge in stock FPCNativeNTtarget - Kernel Mode (drivers) focus. The non-kernel-mode native.exe(runs very early in boot - autochk / boot-time chkdisk, AV scanners) is niche, likely skip.named arguments- set argument(s) by name, including the Nth one without the preceding args. Open question: must the skipped args have declared defaults, or are they zeroed? Needs discussion.zeroinit: zero inline anonymous compound locals (var a: array[0..3] of Integer) - skipped today;Default(T)mangles its hidden zero-const off the type symbol, which anonymous types lackAbandoned / Revamped
2026-06-16{$incfile <var name> <file path>}- include a file at compile time as a String; revamped into$embedstr2026-06-16 one-arg{$incfile <file path>}- inline String expression (foo({$incfile <path>})); revamped into one-arg$embedstr{$incfilebytes <var name> <file path>}- include a file at compile time as a byte array; revamped into$embedbytes{$alias <current routine> <alias name>}- extra Pascal-callable name (directive); revamped into thealiasmodifierLong term
Discussion about specific features
Individual features are discussed in Discussions (the Ideas / Feature Requests category), each in its own thread:
Feature: <name>Feature request: <name>If a feature doesn't have a thread yet, feel free to create one. Threaded replies, upvotes and polls fit gathering pros/cons much better than a flat issue.