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