std.digest can't CTFE?

Manu turkeyman at gmail.com
Fri Jun 1 01:21:10 UTC 2018


On 31 May 2018 at 18:14, Nick Sabalausky (Abscissa) via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
> On 05/31/2018 06:40 PM, Jonathan M Davis wrote:
>>
>> On Thursday, May 31, 2018 14:29:13 Manu via Digitalmars-d wrote:
>>>
>>> "CTFE
>>> Digests do not work in CTFE"
>>>
>>>
>>> That's an unfortunate limitation... why is, those things? :(
>>
>>
>> If I had to guess without looking at the code? I would guess that it's
>> doing
>> various casts to hash stuff, and no kind of reintpret cast is allowed in
>> CTFE. But really, you'd have to actually run the code, see what works and
>> what doesn't, and look at each error you get when it doesn't to see what
>> it's doing that can't be done during CTFE. Depending on what it's doing,
>> it
>> may be possible to make it work during CTFE, or it may not. CTFE can do a
>> lot, but there's also a lot that it can't do - especially if you start
>> doing
>> anything low level.
>>
>> - Jonathan M Davis
>>
>
> I know the SHA1 implementation uses some inline asm. Although, now that I
> think about it, I think that might just be one specialization of the
> implementation, not the only implementation.
>
> Regardless, I do know that std.digest dates back a long time to when CTFE
> was WAY more limited that it is today. Most likely, CTFE at the time
> probably just wasn't quite up to the task, so it was simply left as
> runtime-only. A lot of Phobos was like that back then.
>
> Heck, I wouldn't even be surprised if that note in the docs turned out to be
> outdated and it had magically started working at CTFE at some point. But
> even if not, I'd say it's almost certainly just a classic case of "Nobody's
> needed it badly enough yet to get it working."

It doesn't work. I suspect a blunt pointer cast where a shift&mask
could be is the culprit.

The demo effect always seems to plague D every time I try and
introduce new people >_<


More information about the Digitalmars-d mailing list