freenode/#clasp - IRC Chatlog
Search
9:35:18
kpoeck
::notify drmeister I fixed this specific mps problem (issue 1042), Also fixes test HASH-TABLE-SIZE-WEAK-KEY. Will just rebuild with your newest changes to be on the safe side
14:05:17
kpoeck
::notify drmeister please check pr https://github.com/clasp-developers/clasp/pull/1043
15:18:01
Colleen
drmeister: kpoeck said 6 hours, 43 minutes ago: I found an easy way to reproduce the mps problem (See https://github.com/clasp-developers/clasp/issues/1042). Just do (make-hash-table :size 128 :test #'eq :weakness :key) and (gctools:garbage-collect) -> The MPS detected a problem!
15:18:01
Colleen
drmeister: kpoeck said 5 hours, 42 minutes ago: I fixed this specific mps problem (issue 1042), Also fixes test HASH-TABLE-SIZE-WEAK-KEY. Will just rebuild with your newest changes to be on the safe side
15:18:01
Colleen
drmeister: kpoeck said 1 hour, 12 minutes ago: please check pr https://github.com/clasp-developers/clasp/pull/1043
15:33:43
drmeister
But I'm waiting for some new code to appear in llvm for dynamic linking. It's supported on macOS but linux is still catching up.
15:34:08
beach
That would be a great win, as I have pointed out in the past. You can then skip all the optimizations that were meant only for improving startup time.
15:38:23
drmeister
The llvm folks are implementing a runtime linker called JITLink that will work like the 'ld' but for JITted code. Once that is in place then I can see a path to GCing code. I couldn't before.
15:40:19
drmeister
Yeah - there are structural problems that make it difficult to do things the lisp way.
15:42:13
drmeister
The MPS has a facility to walk memory - so I can spool all of the objects out to a file. Then I can load them back in and allocate memory for them and then fix up external pointers.
15:42:38
drmeister
I still need to run some tests to see if the allocation is fast enough to make this worth it - but I think it will be.
15:44:26
beach
I seem to have read some GC technique working like that in the past, when memory was much smaller than now.
15:44:31
beach
Speaking of C++, out of curiosity, for my daily exercise, I watched a few talks from (I think it was) CPPconf. I was horrified by how the language-definition process is working. They changed the meaning of some syntax that year, but introduced a bug that they fixed another year, but that introduced another bug, that they promise to fix next time.
15:47:59
beach
What is C++ used for these days? I read somewhere that Python is now the world's most popular language. That, in itself, is horrible of course.
15:48:46
drmeister
That most popular language designation was because it generated the most questions in StackExchange.
15:50:56
beach
I see. I also watched some presentations about Rust. One of the people in the group that decides the language definition explained the reason behind it, and the entire language seems to be based on false information, namely that manual memory management is faster than automatic.
16:10:12
drmeister
beach: I'll talk to you later. I wanted to talk with you about multiple entry points at some point - I think I need to implement multiple entry points first, then GCing of code and then image save/load. If I don't do GCing of code then image save/load will involve work that I'd just have to undo when we can GC code.
16:10:38
cracauer
Java hatred is usually from whatever library framework has to be used in a given organization. They are all too deep and too slow.
16:10:40
drmeister
Multiple entry points is a simpler thing to implement so I thought I'd do that first.
16:12:07
cracauer
However, in a place like Google you can't use exceptions with C++, which is another pain.
16:13:48
cracauer
They have too much code that is not exception safe, and using any given library you don't know whether it wraps around such code. So no exception usage for the entire C++ codebase.
16:14:41
cracauer
Which is OK pain if you are doing many RPC calls anyway and would manually transport errors either way.
16:19:15
cracauer
https://stackoverflow.com/questions/1853243/do-you-really-write-exception-safe-code#:~:text=To%20write%20exception%20safe%20code%2C%20you%20must%20know%20first%20what,%3A%3Apush_back%20can%20throw...
16:22:03
beach
I wonder how many of those "EH drawbacks" are due to unique features of C++, like manual memory management and such.
16:22:39
beach
Oops, I need to go fix dinner for my (admittedly small) family. I'll be back tomorrow.
18:16:11
drmeister
There's this comment. "The changes in foundation.lisp are no longer needed, but the one in inline still"
18:59:54
drmeister
So ./waf tests with the MPS version - if it passes all of the tests then finalizers are working?
19:01:43
drmeister
In MPS we get finalization messages from the MPS and I look up the object in a weak-key hash table.
19:04:12
drmeister
I need to have the testing code compiled if I execute the code in "sys:regression-tests;finalizers.lisp"
19:10:00
drmeister
kpoeck: When you mentioned "the size of a weak hash table should be a multiple of 16?" What was that in reference to?
19:10:21
drmeister
Because I'm still seeing a problem with weak hash tables and it might tie into their size.
19:10:42
drmeister
I'm getting this problem... ../../include/clasp/mps/code/buffer.c:575: MPS ASSERTION FAILED: SizeIsAligned(size, BufferPool(buffer)->alignment)
19:11:34
drmeister
Yeah - but there is additional stuff in the object that might mess up the alignment.
19:12:49
drmeister
https://github.com/clasp-developers/clasp/blob/master/include/clasp/gctools/gcalloc.h#L302
19:34:12
drmeister
I'm putting in this now in every case: (dotimes (i 10) (gctools:garbage-collect))
19:35:29
drmeister
I don't know if there are full or incremental with either GC. I just know what's in (gctools:garbage-collect)