Up to Main Index                          Up to Journal for December, 2024

                   JOURNAL FOR TUESDAY 31ST DECEMBER, 2024
______________________________________________________________________________

SUBJECT: Another year of development
   DATE: Tue 31 Dec 21:45:28 GMT 2024

Another year of development has been and gone. A year with little WolfMUD
development. Back in April I took the decision to rewrite Mere, my own
programming language. The rewrite I called Mote, and the Mote/Mere split has
caused nothing but confusion.

While Mote has seen 176 commits, no releases have been made yet. The journal
has also suffered, seeing only 26 posts — compared to last year this is less
than half of posts made in 2023.

WolfMUD did see 53 commits at the beginning of the year. These commits were
mostly around currency and buying/selling items. However no releases were
made.

2024 has been a very strange year. While I have been hard at work, I seem to
have little to show for it. Mote is still not feature complete with Mere,
although Mote has come a long way. At this time, neither Mote nor Mere have
seen a release. On a positive note, Mote is more capable and generally more
performant than Mere:


                             MERE       MOTE       CHANGE
                             ---------  ---------  -------------------
               counter loop: 16.383s    10.585s     -5.7980s, 35.3903%
                   for loop: 17.951s    10.391s     -7.5600s, 42.1146%
           array index loop: 22.866s    39.330s     +16.4640, 72.0021%
             map index loop: 22.734s    25.141s     +2.4070s, 10.5877%
        iterative factorial: 00.00017s  00.00006s   -0.0001s, 64.7059%
        recursive factorial: 00.00101s  00.00067s   -0.0003s, 33.6634%
        iterative fibonacci: 00.00055s  00.00016s   -0.0004s, 70.9091%
        recursive fibonacci: 00.01412s  00.00409s   -0.0100s, 71.0340%


This table shows some of the benchmarks I run. Mote performs well, except in
array and map access. Some of this is due to a richer implementation in Mote.
However, there seems to be an oddity in Go itself. Using a type switch, array
handling is much more expensive than map handling:


     920ms      920ms    562:   switch c := i.c.(type) {
     1.06s      1.06s    563:   case []int:
      50ms      5.53s    564:           v = c[i.i.(int)]
     570ms      570ms    577:   case map[int]any:
      10ms      680ms    578:           v = c[i.i.(int)]


This is a CPU trace of Mote and we can clearly see slices (arrays in Mote) take
a lot longer to handle than maps in this type switch.

The Mote code still needs cleaning up, publishing to a public Git repository
and made available to anyone who wants it. Mere ICE[1] needs to be replaced
with a Mote version so that people can play with the language and provide
feedback.

I said in last year’s round-up I intend to use Mere for scripting in WolfMUD.
That is still the long term plan, although Mere/Mote isn’t quite ready yet.

WolfMUD still needs skills, shops and traders, monetary currency, crafting,
player housing and quests — all the fun stuff :)

I’ve just finished post processing a video of the webinar I presented for the
Institution of Analysts and Programmers. It is called “ai4all: Demystifying AI
for Humans”. The video should be uploaded to YouTube in the new year and I’ll
post a link to it when it’s available. Expect to hear more details about my AI
adventures In the new year.

Happy new year everyone!

--
Diddymus

  [1] The annexed works: /annex/


  Up to Main Index                          Up to Journal for December, 2024