2026-03-06 10:45:12 Who even farkin knows 2026-03-06 11:59:35 Anyone here used skip lists before? 2026-03-06 12:14:19 Or AA-trees for that matter 2026-03-06 12:14:33 They're relevant to Forth believe it or not, both are basically low code dictionaries 2026-03-06 12:14:47 Less code than red-black trees etc 2026-03-06 12:15:05 not me but I did check Mecrisp-Stellaris to see if the dissasembly of a variable varied depending on whether something is stored to the variable or not, and it doesnt 2026-03-06 12:18:46 Likewise in gforth 2026-03-06 12:21:06 I do encounter interesting concepts here :) 2026-03-06 12:22:10 I always have a STm32F051 running Forth thermometer code here connected to this pc, so it's easy to do any tests I want 2026-03-06 12:22:38 27,0 C 80,7 F 2026-03-06 12:42:29 forthBot: LOAD ini.fth 2026-03-06 12:42:29 File ini.fth with MOON loaded 2026-03-06 12:42:40 forthBot: CREDIT 2026-03-06 12:42:40 Brought to you by Cleobuline updated with hashtable with the help of Grok https://github.com/cleobuline/forth-bot-gmp-irc-threaded-multi-users/tree/main Site https://labynet.fr 2026-03-06 12:42:52 updated .... 2026-03-06 12:45:13 forthBot use a hashtable for the dictionnary 2026-03-06 12:45:50 at a mement i was plannig to use red black tree 2026-03-06 12:46:13 but it cause problem with forget 2026-03-06 12:48:23 forthBot: HELLO 2026-03-06 12:48:23 Hello cleobuline How are you ? 2026-03-06 12:53:54 forget , delete all the words from a given word to the end of the dictionnary 2026-03-06 12:54:12 not possible with a red black tree 2026-03-06 12:54:44 unless we use a time stamping 2026-03-06 14:06:27 I don't understand how a hashtable is better for that? 2026-03-06 14:07:10 gforth uses a linked list for neighbour traversal and a hash table for lookup. You could do same with RB tree instead of hash table surely? 2026-03-06 14:37:49 speedest veltas 2026-03-06 14:39:23 forthBot use a hashtable for lookup the dictionnary 2026-03-06 14:39:53 But what is the "cause problem with forget"? 2026-03-06 14:40:35 veltas: forget delete entry in the dictionnary from a given word to the end of the dictionnary 2026-03-06 14:41:10 The data to track that is in the entry regardless though right? The lookup data structure should be irrelevant? 2026-03-06 14:41:21 with rb tree you must delete word by word , or add a timestamp tu check the order 2026-03-06 14:43:16 The same would be true of hash table ... unless you've put a list or other mechanism in entries to help you delete older ones 2026-03-06 14:44:09 newer ones rather 2026-03-06 14:44:25 So I'm saying whether it's an RB tree or a hash table is irrelevant, neither is suited to the dictionary's linked-list based forget mechanism, but both can support it with identical workarounds 2026-03-06 14:44:36 Or am I missing something 2026-03-06 14:46:26 veltas: the words are store in a table , but the hashtable is different table 2026-03-06 14:47:06 so i have just to scan the words table and call removeWordFromHash(env, dict_word->name); 2026-03-06 14:47:58 with rb tree i do not have the order in wich the words are created 2026-03-06 14:48:23 Environment for cleobuline inactive, freeing... 2026-03-06 14:48:24 unless i had a timestamp with the word created 2026-03-06 14:48:44 wich is more complex 2026-03-06 14:48:56 and add memory slot 2026-03-06 14:49:51 but it can be done 2026-03-06 14:49:58 So the main table the words are stored in would still exist if you used RB tree in place of the hashtable 2026-03-06 14:50:43 yes it's a solution , i guess the word where store in the rb tree 2026-03-06 14:51:15 In fact RB tree could be stored totally in-line, so no separate table is needed at all, you can put all words in one table and the tree is within that 2026-03-06 14:51:36 yes you are right 2026-03-06 14:52:56 i can build the rb tree separated from the word table right 2026-03-06 14:54:41 for forthBot i use uthash.h wich os very simple to use 2026-03-06 14:54:50 is 2026-03-06 14:56:12 i win 50 % performance with the response of the bot 2026-03-06 14:56:26 I expect a hash to be faster on average yeah 2026-03-06 14:56:37 yes it will 2026-03-06 14:57:10 but use rb tree is good for the sport :) 2026-03-06 14:57:30 But hash tables are limited in use, they don't order the content and are vulnerable to collision attacks 2026-03-06 14:57:41 yes 2026-03-06 14:58:00 Self-balancing trees are 'general' solutions so if I'm only going to add one kind of dictionary I'd go for a simple self-balancing tree 2026-03-06 14:58:02 collision a rare 2026-03-06 14:58:10 Problem is they aren't simple 2026-03-06 14:58:30 It doesn't really matter for Forth dictionary lookup 2026-03-06 14:58:31 i like rb tree :) 2026-03-06 14:59:07 But e.g. in a website you'd need to make sure your hash was safe and maybe use salt, or devolve to self-balanced trees if using closed addressing 2026-03-06 14:59:33 If users can predict what the hash is or whatever, there are all sorts of security considerations 2026-03-06 14:59:40 Just easier to use a tree in security context 2026-03-06 15:00:11 yes 2026-03-06 15:01:41 https://github.com/cleobuline/some-c-sources/blob/main/red-black-tree.c 2026-03-06 15:01:50 i done a test 2026-03-06 15:02:26 it is elegant solution rb tree 2026-03-06 15:02:57 but a dictionnary wil not contains billions of words ! 2026-03-06 15:05:48 rb tree is adapted to a large amount of data i think 2026-03-06 15:07:18 my next implemantation will use a rb tree i think 2026-03-06 15:08:02 i will do it for the sport 2026-03-06 15:09:33 Maybe look up AA-tree though 2026-03-06 15:09:38 That's what I mentioned earlier 2026-03-06 15:10:04 That's what I will implement anyway, although it's not much sport because I'll be basing it on the Pascal code they wrote in their paper 2026-03-06 15:10:17 But it seems more Forthy because it's shorter 2026-03-06 15:10:52 You might find skip lists interesting too 2026-03-06 15:12:53 for the dictionnary hashtable is more efficient wich is O 2026-03-06 15:13:33 the search is constant 2026-03-06 15:13:55 What hash are you using? 2026-03-06 15:15:11 uthash.h 2026-03-06 15:18:02 Default hash function for uthash? 2026-03-06 15:19:57 Jenkins hash which looks okay, quite a simple one 2026-03-06 15:21:41 inline 2026-03-06 15:27:35 veltas: https://pastebin.com/FPfNXmTh 2026-03-06 15:28:46 juste include and use it 2026-03-06 15:29:40 it works for me :) 2026-03-06 15:33:10 veltas: sample use https://pastebin.com/yFpZSbqD 2026-03-06 15:36:07 Yeah that will use Jenkins I think 2026-03-06 15:37:20 i'm okay with it with forthBot 2026-03-06 15:41:05 I'm using an even simpler one, the one that used to be in PHP 2026-03-06 15:41:22 So it's not exactly popular but it is pretty simple and runs well on 8-bit as well as newer machines 2026-03-06 15:41:27 Jenkins would as well I think 2026-03-06 15:42:02 ok 2026-03-06 15:55:34 I think it was DJB2, multiply by 33 and XOR ... something like that 2026-03-06 16:02:03 https://x.com/rohanpaul_ai/status/2029679074868879852 2026-03-06 16:13:38 Looks like it was made for cdb and cdb is still being developed? 2026-03-06 19:18:11 cleobuline: X post; could be unrelated, or could be super bad news for when the bubble bursts 2026-03-06 19:24:21 SO PROUD of my boys at Apple, proud shareholder right here 2026-03-06 20:08:53 release of forthBot for macos https://github.com/cleobuline/forth-bot-gmp-irc-threaded-multi-users/releases/tag/forthbot_macos 2026-03-06 20:09:25 tested and approuved :) 2026-03-06 20:16:02 MacOS is a tier 0 platform now 2026-03-06 20:16:18 Move aside MS 2026-03-06 22:12:11 forthBot: S" des tripodes martiens attaquant Paris, style gravure victorienne"S IMAGE 2026-03-06 22:12:55 https://i.ibb.co/prfXN6sf/zozo-img.png 2026-03-06 22:13:35 veltas: macos is a goog platform 2026-03-06 22:14:23 good 2026-03-06 22:22:19 veltas: what you don't like in macos veltas ? 2026-03-06 22:23:14 i'm using macos to edit files on my vps ubuntu it's very sweet to use 2026-03-06 22:25:57 i'm confortable with it 2026-03-06 23:59:51 forthBot: LOAD ini.fth 2026-03-06 23:59:52 File ini.fth with MOON loaded 2026-03-06 23:59:57 forthBot: fee