Replace druntime Hooks with Templates: Milestone 1, Week 2

Johan j at j.nl
Fri Oct 7 10:16:25 UTC 2022


On Friday, 7 October 2022 at 08:25:25 UTC, Teodor Dutu wrote:
> On Monday, 3 October 2022 at 22:28:51 UTC, Johan wrote:
>> On Monday, 3 October 2022 at 20:28:19 UTC, Teodor Dutu wrote:
>>> Hi,
>>>
>>> This week I faced a few setbacks with `_d_arraycatnTX` due to 
>>> type mismatches.
>>> Due to the hustle of moving house, I haven't made much 
>>> progress on this front.
>>>
>>> To take a break from this, I temporarily moved on to the 
>>> `_d_newitem{T,iT,U}` hooks.
>>> I implemented templated one templated hook for `_d_newitemT` 
>>> and added unittests for it.
>>> The difference will now be made by the compiler during the 
>>> lowering, by calling the constructor, copying the default 
>>> initialiser, or doing nothing (`void` initialisation).
>>
>> Hi Teodor,
>>   Are you aware about the capability to override these 
>> implementations by the user? DMD itself is using this, see for 
>> example: 
>> https://github.com/dlang/dmd/blob/16fad687b0e894879564864d7eb75747fb41a057/compiler/src/dmd/root/rmem.d#L257-L262
>>
>> Is this still possible after your work?
>>
>> regards,
>>   Johan
>
> Hi Johan,
>
> I am aware of this and it will still be possible to override 
> these implementations by writing your own `object.d` module, 
> which is where they are instantiated from.

Of course you can override anything by writing your own 
`object.d` module = writing your own druntime. The question is, 
can the user still override it using the current way. This 
impacts DMD itself. What DMD wants to override is the memory 
allocation itself, not necessarily the initialization of the 
memory. If the templates invoke an `@weak` **non-template** 
function for allocation, then there is still the possibility of 
overriding that in user code. Please think about that.

regards,
   Johan



More information about the Digitalmars-d mailing list