| |
| Posted by Johan in reply to Teodor Dutu | PermalinkReply |
|
Johan
Posted in reply to Teodor Dutu
| 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
|