LWDR SAOC Milestone 1, Weekly Report for 6th OCT to 15th OCT

Dylan Graham dylan.graham2000 at gmail.com
Fri Oct 15 13:01:26 UTC 2021

[Source Code](https://github.com/hmmdyl/LWDR)

[Report for week 1 of milestone 
[Report for week 2 of milestone 
[Report for week 3 of milestone 

Light Weight D Runtime.
15th October, 2021.
Symmetry Autumn of Code, Week 4 of Milestone 1.

Hi all,
Apologies for the delay on this update. On Wednesday night (13th 
OCT), I was rushed to hospital for difficulty breathing and chest 
pains (started on Monday 11th OCT), which has impacted me a bit. 
Fortunately, as of the 15th of October, LWDR has [fulfilled 
1](https://github.com/hmmdyl/SAoC2021/blob/main/plan.md#milestone-1) of my plan.

Between the 6th of October and the 15th, when possible, work was 
completed on task 2 of milestone 1 - implementation of object 
monitors and support for `synchronized`. The work was 
straight-forward. DRuntime's 
[`monitor_.d`](https://github.com/dlang/druntime/blob/master/src/rt/monitor_.d) was [ported to LWDR](https://github.com/hmmdyl/LWDR/blob/67c8a849a5405e17a0593dea10d67934482b3ffb/source/rt/monitor_.d). It was almost 1:1, except for stuff involving the global mutex (used for allocating monitors), which relied on LWDR-specified hooks.

A [series of hooks in 
`rtoslink.d`](https://github.com/hmmdyl/LWDR/blob/67c8a849a5405e17a0593dea10d67934482b3ffb/source/rtoslink.d#L38) have been added. They forward operations involving mutexes to the underlying platform. Ie, creating, destroying, locking and unlocking mutexes (using `synchronized` or `core.sync.mutex.Mutex`) are all forwarded through these functions.

An LWDR-specific [implementation of 
`core.sync.mutex.Mutex`](https://github.com/hmmdyl/LWDR/blob/67c8a849a5405e17a0593dea10d67934482b3ffb/source/core/sync/mutex.d#L16) has been completed. It attempts to replicate the functionality of [DRuntime's `Mutex` class](https://dlang.org/phobos/core_sync_mutex.html).

[`object.Monitor`](https://github.com/hmmdyl/LWDR/blob/67c8a849a5405e17a0593dea10d67934482b3ffb/source/object.d#L65) was implemented - it's just an interface with two functions. For a while I considered perhaps changing the interface to make manual memory management easier, but I prioritise compatibility with DRuntime more. I don't want potential users to have to learn the ins and outs of a new runtime, it should be as compatible as possible.

I'm sorry there isn't much at all this week. Hopefully the next 
will be better.

All the best,
Dylan Graham.

More information about the Digitalmars-d mailing list