On a related note, I do wonder where pure functions might help with
JIT. It depends on what Florian and the other administrators and
developers seek, but currently I aim for my pure function implementation
to fulfil both standard properties (1. same output for the same
input(s), and 2. no side-effects (usually interpreted as meaning reading
from or writing to anything outside of its scope (e.g. global variables))).
Currently, you can define a function as pure and, as long as you don't
have anything explicitly impure like a pointer deallocation, the
compiler won't know for sure if it is pure or not until you try to call
it with a constant parameter - then the compiler checks. This may cause
some issues if the function has a problem like an infinite loop or the
result not being set on some branches, and which won't be detected
unless you call the pure function with a constant input that triggers
the condition. I'm not sure what the best solution to this is.
Kit
On 01/07/2024 09:33, Mattias Gaertner via fpc-devel wrote:
On 7/1/24 09:05, Marco van de Voort via fpc-devel wrote:
Op 1-7-2024 om 02:34 schreef Hairy Pixels via fpc-devel:
I had a question about pure functions. I'm seeing some newer
languages have a JIT built-in so they can run any function at
compile time. To get results at compile time you probably need to
use a constant for the parameters but in theory it could read/write
to global variables so it's not really "pure" but still makes it
possible to run functions at compile time.
FPC has JIT backends like JVM.
But that is just the backend, FPC still works only at compile time, so
no JIT at runtime possible. Is it?
Mattias
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
--
This email has been checked for viruses by Avast antivirus software.
www.avast.com
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel