freenode/#sicl - IRC Chatlog
Search
10:19:23
MichaelRaskin
Actually, you are not likely to manage websites where claiming to be Firefox is not enough. Not anytime soon
10:19:48
MichaelRaskin
A lot of modern JS has actually seen the light of sane-ish feature-probing though. If only Common Lisp could have the same.
10:21:11
aeth
The problem is when e.g. one implementation wants to call it macos and another wants to call it osx and another wants to call it darwin. Also e.g. win32 vs. windows, or linux vs. idk gnu/linux (at least 'linux' tends to be a standard name in *FEATURES* afaik)
10:21:13
MichaelRaskin
That's nice, but there is no agreement on specific naming of any extensions, so people just probe for implementation signature in *FEATURES*
10:23:23
MichaelRaskin
But in total, it looks like implementing enough virtualisation to run a minimal Linux VM with Firefox has better feasibility than implementing an engine sufficient for the current garbage dump of Web
10:25:03
MichaelRaskin
Virtualisation is actually something feasible. How many hypercalls Xen has, a hundred?
10:25:42
MichaelRaskin
And it is a fantastically well-featured virtualisation system, you can implement less and still get by
10:26:45
MichaelRaskin
(And virtualisation probably will let you get away with reusing GPU drivers from another system)
10:31:57
MichaelRaskin
beach: Re: 7.2: if one wants to have both balanced writes (SSDs are horrible), and good performance, maybe it could be a good idea to split N sectors into √N groups, so that you check √N group headers to see where the circular head is, then read the group to pinpoint the exact location. If we have 10^6 of 10^3-byte sectors, we read just a few megabytes to find the starting point.
13:12:38
MichaelRaskin
Well, it also reduces the maximum overwrite rate of any specific sector, as the separate-header-space risks getting a lot of writes
13:13:16
MichaelRaskin
So it's an optimisation to have boot speed bearable and not pay too much in terms of storage wear
13:47:37
MichaelRaskin
Hm. How CLOSOS should deal with a user's wish to make-array something of size 4GiB?
13:57:37
MichaelRaskin
In the address space section you refer to a compacting GC paper, in the GC section you say that the object addresses do not change during GC
13:59:15
beach
Ah, that may be some oversight. The SICL specification has the current best version of GC that I can imagine.
14:03:38
MichaelRaskin
Do you still plan that the global heap space maps directly to secondary storage?
14:09:25
MichaelRaskin
Is there any allocator strategy involved re: address space (I guess you need some kind of per-size pools for small objects, but everything large thinks in terms of pages anyway)?
14:11:28
beach
Yes, most small-ish objects are allocated on the thread-local heap, and migrated to the global heap only when they become old.
14:12:07
beach
Large objects, and some types objects like code objects are always allocated on the global heap.
14:13:27
beach
The write barrier checks whether an attempt is made to put a pointer to a thread-local object in a shared object, and then first migrates the thread-local object to the global heap.
14:18:33
beach
By the place of the space allocated in the address space. It is basically a malloc/free collector.
14:20:06
MichaelRaskin
I guess I have failed to ask clearly, as the answer seems tautological to me; what policy for address space allocation should the corresponding malloc use?
14:23:17
beach
The answer is the name of a person, but I temporarily forget his name. The appendix in the SICL specification has a detailed description.
14:24:01
beach
It is a slight modification of the allocator that seems to be standard on Linux systems if I understand things right.
14:29:09
MichaelRaskin
I think you have a typo where |c|≥n but then you compare |c| with n-4 instead of n+4
14:30:43
MichaelRaskin
Well, that's exactly a kind of typo that is easy to miss when rereading if you remember the idea well enough
14:32:00
MichaelRaskin
I think it looks like you have not fully committed to chunks either divisible or not always divisible by 4
14:33:04
beach
Since my memory is so bad, I can't tell one way or the other at this point. I'll keep that aspect in mind as well when I re-read it.
14:34:35
MichaelRaskin
Oh right, you sometimes talk in terms of words and sometimes in terms of bytes
14:36:02
beach
I don't pay attention to what individual vendors define as "word". DEC/VAX had 16 bits to a word. Intel, I don't know.
14:36:44
MichaelRaskin
Well, the current text seems to imply 4-byte words, and also that addresses fit into a single word
17:13:15
Bike
i'm implementing the sequence extension and looking for examples of libraries that define their own types of sequence. the paper mentions flexichain as an example.
17:13:44
Bike
but it looks like flexichains aren't used with any of the derived sequence operators like map or find.
17:16:26
beach
Yes, this thing was written before the sequence extensions existed, and before I had improved my programming style. :)
17:36:24
Bike
but if you're not using the CL sequence functions, the etexnsion isn't that interesting. it just lets you name your accessors length and elt, which isn't nothing, but it's not as useful
18:48:21
shka_
https://github.com/sirherrbatka/cl-data-structures/blob/01e78b634bef95816ddda6a388c0ce3c036c9372/src/sequences/rrb/tests.lisp#L74
19:11:35
shka_
because i have flexichain dependency (used as double ended queue, even though i have my own double ended queue already)
19:22:18
Bike
beach: i don't know what you use a gap buffer thing for, i guess. other than text editing, and i don't know hwat kind of operations you need for that
19:24:45
shka_
Bike: across and traverse, they are the same for the purpose of the containers, but there are also ranges, traverse will mutate range, across will not
19:29:44
shka_
anyway, gist of this is that there are containers, cl-ds:sequences are containers, there is protocol constructed around inheritance order traversable->fundamental-container->fundamental-sequence->mutable|functional|traversable
19:31:45
shka_
then mutable|functional|transactional variants provide means to modify the content of the container
19:32:05
Bike
if you had a set object, would that be a traversable but not a container? since at doesn't make sense
19:36:57
shka_
Bike: don't have high expectations regarding docs, It was written by me and I didn't an help with it