www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - CTFE using compiler intrinsics but without phobos/druntime.

reply Kayo <kayo illumium.org> writes:
I like metaprogramming and I write a tons of compile-time 
evaluated code.

Important thing for me is that the usual math functions like 
`sin` from `core.math` also can be evaluated at compile time 
dispite of its source code actually does not available at compile 
time.

Now I porting my project to bare-metal. Currently there is 
nothing druntime/phobos support for that case, which means I 
cannot use `core.math` as usual.

I was trying to work around it by creating stub module similar to 
`core.math` but this does not work nor with GDC nor LDC.

Note, I do not need math at runtime I just need it for compiling.
Anyone known an easy way to get CTFE work in that case?
Nov 09 2020
parent reply Kayo <kayo illumium.org> writes:
Hmm...
It seems this works when I defines `sin` function for `real` arg 
like so:

module core.math;

public:
 nogc:
pure:
nothrow:
 safe:

real sin(real x);
Nov 09 2020
parent Dennis <dkorpel gmail.com> writes:
On Monday, 9 November 2020 at 18:19:42 UTC, Kayo wrote:
 Hmm...
 It seems this works when I defines `sin` function for `real` 
 arg like so:
Currently the compiler has a list of built in functions, making them available at CTFE even if their source is missing. https://github.com/dlang/dmd/blob/5fda4ea088f70afb99818482e8482771758136a2/src/dmd/func.d#L67 https://github.com/dlang/dmd/blob/master/src/dmd/builtin.d The current list includes functions from `std.math`, `core.math` and `core.bitop`. If you think something is missing, you can file an issue and / or open a pull request.
Nov 09 2020