digitalmars.D - LWDR SAOC Milestone 1, Weekly Report for 6th OCT to 15th OCT
- Dylan Graham (35/35) Oct 15 2021 [Source Code](https://github.com/hmmdyl/LWDR)
- Dylan Graham (4/7) Oct 15 2021 Had to patch a bug just then regarding monitor deletion during
[Source Code](https://github.com/hmmdyl/LWDR) [Plan](https://github.com/hmmdyl/SAoC2021/blob/main/plan.md) [Proposal](https://github.com/hmmdyl/SAoC2021/blob/main/proposal.md) [SAOC Projects](https://dlang.org/blog/2021/08/30/saoc-2021-projects/) [Report for week 1 of milestone 1](https://forum.dlang.org/thread/vodbtqqwvdmapnjzlzaq forum.dlang.org) [Report for week 2 of milestone 1](https://forum.dlang.org/thread/sqounqxhveqhbcxcmxbw forum.dlang.org) [Report for week 3 of milestone 1](https://forum.dlang.org/post/mwymjwilsleoilaijiiz forum.dlang.org) 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 milestone 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/so rce/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/so rce/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/co e/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/ ource/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.
Oct 15 2021
On Friday, 15 October 2021 at 13:01:26 UTC, Dylan Graham wrote:Light Weight D Runtime. 15th October, 2021. Symmetry Autumn of Code, Week 4 of Milestone 1.Had to patch a bug just then regarding monitor deletion during object finalisation. Otherwise, I've tested it on hardware and it has been working well.
Oct 15 2021