freenode/#sicl - IRC Chatlog
Search
8:59:41
beach
So, get-setf-expansion is given a lexical environment, but must go find the global environment for the expander.
9:00:21
beach
Trucler then just goes down the chain of lexical environments, until the end, and returns the global environment it finds.
9:06:10
beach
You don't see it in a typical Common Lisp implementation, because there, all the code is specific to that implementation, whereas we write implementation-independent modules.
9:08:45
beach
In the end, this modularity, I hope, is going to make the code much easier to understand. But to understand it, you need to know what the standard dictates, of course.
9:09:45
beach
I try my best, but then, I already know this stuff, so I tend to forget to make things more explicit.
9:10:03
Harag
I stripped first class environment out of sicl for sanddox (just until there is an official version) and this was the last peace of the puzzle to make setf passed to sandbox work
9:11:15
beach
As a side effect, you are learning about how we do things, and that's great as well. :)
9:11:19
Harag
just need to move defmacro defmacro up to sandbox level with demacro setf and it all should work
9:12:04
Harag
yeah I have read all the docs for sicl,cleaver,elector,trucler and pored over much of the source code
9:12:39
Harag
also stripping it out gave me a better understanding of intrinsic vs extrinsic use and how that is reflected in the code
9:44:53
Harag
trucler-reference:environment is not type of sb-c::abstact-lexenv when binding sb-imple::env
9:47:25
beach
It is not often that the environment argument is used, but there are some cases where it is.
9:50:53
beach
I am off for my long-ish lunch break. I think you now know enough that you can figure out how to handle the problem.
12:20:13
beach
lonjil: Are you just doing PRINT-OBJECT, or are you also doing PRINT, PRINC, WRITE, etc.?
12:26:53
lonjil
I must say that I have not been working much on Incless lately, and probably wont for the next couple of weeks. I have important school work I'm behind on.
12:58:48
beach
jackdaniel: Are you totally opposed to bootstrapping ECL from an existing Common Lisp implementation?
13:08:47
froggey
beach: I think I'll need to introduce an initialize-closure entry in the hir-interpret's static environment, to match up with the enclose entry. is that ok?
13:15:35
beach
froggey: The new entry will then take over most of what enclose is doing now, I would think,yes?
13:24:40
jackdaniel
beach: I've never stated, that I'm opposed to that. In fact, when cross compiling, the child is bootstrapped from the host ecl
13:26:01
jackdaniel
that said, I find it being a very nice quality, that ecl may be boostrapped using only the c compiler
13:39:50
beach
jackdaniel: Oh, by the way, are you waiting for me to work some more on the Clostrum documentation?
13:40:58
beach
I kind of forgot about it the past few days, given how preoccupied I was with the condition system.
13:43:44
jackdaniel
I was prepared to wait some time more, I know that you were occupied (and I've said that you should take your time when we've talked about that the last time). Documentation is one thing, I'm more interested in a talk of what are your expectations of me and general terms of our cooperation on this project
13:44:17
jackdaniel
I've started some work on Clostrum already, but its mostly some preliminary hacks to get a hang of it (I've been working also on McCLIM in a meantime, as you might have noticed)
13:45:19
beach
Basically, what I expect is a repository that implements what is in the documentation.
13:46:37
jackdaniel
is there some sicl intergration I should make, or use i.e hash tables to store things?
13:47:21
beach
You can use whatever is most appropriate, typically hash tables for most things I would imagine.
13:48:31
jackdaniel
right; I think that fiveam is non-controversial choice as a test suite framework
13:51:33
beach
I think you had better ask him, because he has some bug in there that he hasn't found yet.
13:52:21
beach
Somehow, it behaves slightly differently from the HIR interpreter, which it shouldn't.
13:53:38
beach
I look at the static environment used by the HIR interpreter, and I wonder what I did, if it is more than a week or so ago.
13:56:48
beach
But, as Charles Simonyi remarked, "I do write better programs" (from the LUV slides).
13:57:32
beach
The nearly total lack of memory forces me to write in a way that I can understand it better when I look at it later.
14:07:58
jackdaniel
beach: would you rather merge pull requests against the clostrum repository or you want to give me access so I push there directly?
14:27:24
beach
Googling for how to add a collaborator, the first answer did not correspond to reality.
14:27:45
beach
It said click on settings, then invite a collaborator. But there is no invite a collaborator choice.
14:34:57
jackdaniel
yes, my server is down where I have a permanent session usually, but pidgin seems to keep disconnecting
14:42:10
Harag
beach: is trucler:describe-function supose to be able to deal with setf forms like this (SETF F1:MACRO-FUNCTION)?
14:43:38
Harag
mmm the implementation of the describe-function in First Class Environment checks if name is fboundp
14:45:13
beach
Oh, and I am not sure I imported functions with names like (SETF <mumble>) from the host.
14:47:27
Harag
so how would the import fos (setf <fucntion) then look and how are you going to make (setf <fucntion>) bound?
14:50:11
beach
In fill-environment.lisp, add another WHEN like (when (fboundp `(setf ,symbol)) (setf (sicl-genv:fdefinition `(setf ,symbol) environment (fdefinition `(setf ,symbol)))))
14:50:50
beach
You don't need to test for special operator or macro function, because they can not be named like that.
14:52:19
beach
In fill-environment.lisp, add another WHEN like (when (fboundp `(setf ,symbol)) (setf (sicl-genv:fdefinition `(setf ,symbol) environment) (fdefinition `(setf ,symbol))))
14:54:52
beach
I hope I made clear that the code was not complete, so additional work/thinking is to be expected.
15:07:28
beach
I am more and more convinced that we hit the right abstractions with Eclector and Trucler. Now, we need Clostrum to get it right for first-class global environments.
15:08:01
beach
Once that is done, we will be able to extract AST and CST-to-AST to separate libraries.
15:09:29
Harag
yeah well I have a working version of what will become Colstrum for the sandbox, I call it F1 for now
15:10:42
jcowan
beach: Prior art for CLOSOS includes MUMPS, a timesharing system running programs in the MUMPS language (related to JOSS and FOCAL) without an MMU on the PDP-8 computer, and Edusystem 20, a BASIC-language lookalike for it.
15:16:52
froggey
beach: I think I'm done, aside from changes to HIR-evaluator which I'll discuss with heisig
15:16:55
froggey
it makes it all the way through SICL boot without any problems, are there any other tests you want me to run before I send a PR?
15:17:57
beach
froggey: Wow, that was quick. No, you can send the PR. I'll use the REPL after boot to see that it still works, but if it made it though boot, that should be fine.
15:18:42
jcowan
RSTS-11 (as opposed to its successor RSTS/E) was also a single-language no-MMU OS, this time for the BASIC-PLUS language and the PDP-11.
15:19:32
beach
Right, I guess most variants of BASIC would not allow access to the entire address space.
15:21:06
jcowan
Right, nor do they allow execution of arbitrary code. What made these systems unusual (and aligned with CLOSOS) is that they required no MMU.
15:22:37
froggey
I looked through ansi-test to see what it would need to run, and the two obvious missing features are pathnames/file-system support and DEFSTRUCT
15:23:24
froggey
of course SICL is built using DEFCLASS, not DEFSTRUCT, but other Lisp software isn't. so I was thinking an implementation of DEFSTRUCT built on STANDARD-OBJECT/CLASS
15:30:30
froggey
it's possible that I tried to get too clever, doing change-class on a funcallable-standard-object
15:37:10
froggey
I think it's an SBCL bug. however it's fairly obscure behaviour, so I wouldn't be entirely surprised if other implementation had trouble
15:41:23
froggey
all it's doing is changing from one kind of funcallable-standard-class to another kind of funcallable-standard-class. that should be reasonable, right?
15:47:57
froggey
I can change the behaviour no problem, it'll probably be a little bit easier to understand too
15:50:22
froggey
I always build SBCL from source and install to versioned locations to avoid library issues, my system hasn't done a software update for months
15:52:22
beach
/usr/local/bin/sbcl: /lib/x86_64-linux-gnu/libc.so.6: version `glibc_2.28' not found...
16:04:07
beach
*sigh* I was trying to download a slightly older version of SBCL, but then I get sourceforge project website temporarily offline.
16:04:53
beach
And if I need to upgrade Ubuntu, then I am really screwed. My wife reports that they use containers for every package now, and I am not interested in that.
16:10:14
froggey
I've been using Mint for a few years and it hasn't given me any major problems, but I'm a major version behind and don't know what the latest version is like
16:13:48
Harag
I run the latest ubuntu, and usually upgrade to the development version a month or two before a new release and I have hardly ever have issues...
16:14:40
beach
I don't have problems with it either, other than the fact that the default desktop doesn't do what I want.
16:15:26
beach
And my wife tells me that, because of all these containers, the amount of disk space taken up by the new release is way more than before.
16:20:21
karlosz
i was going to change how closure conversion worksmore drastically but i don't want to make cleavir1 and cleavir2 too divergent on the other hand
16:20:45
froggey
aside from the HIR interpreter changes, which are now causing beach no end of problems...
16:20:48
karlosz
it's great that you are doing this because having forked cleavir versions is not fun
16:21:31
karlosz
right, i've never used the HIR interpreter so i don't know how to make the changes there
16:22:13
karlosz
well i was thinking of explicitly having lexical-bind instructions in the IR so that the inlining interaction with closure- conversion would be less of a hack
16:23:13
karlosz
is this for the sake of potentially merging the two versions in the future at some point or are you just forward porting stuff for the time being?
16:24:54
beach
karlosz: Bits and pieces of help. The enclose split makes it possible to eliminate some cell creations, which is what I would want at some point.
16:25:56
karlosz
beach: variables bound with LAMBDA or LET are "different" from temporaries in the sense that they can be memory cells. inlining needs to hack things up so things like (loop for i from 1 to 5 collect (let ((x i)) (lambda () x))) works in the fact of inlining if you rcall
16:26:20
beach
froggey: I think the defstruct is a good idea. I haven't been able to gather up the courage for it.
16:27:25
beach
karlosz: I must be very tired, because I don't even see how that's an answer to my question. Definitely time to call it a day.
16:27:49
beach
Tomorrow I'll try sourceforge again, to see whether it is possible to install a slightly older version of SBCL.
16:29:25
karlosz
oh, i wasn't being very clear. the lexical bind instruction marks the explicit binding of lexical variables so inlining wouldn't destroy that information
17:26:15
alandipert
to support delivery and tree-shaking in JACL, i'm thinking about a scheme whereby i attach two pieces of metadata to every bound function and value, an AST and the set of free function/value symbols referenced as discovered during analysis. when the user calls DELIVER with an entrypoint, i build the graph of function and value references and topo
17:26:15
alandipert
sort it. then i send the ASTs through a code generation step, parameterized to directly-link global references. then i do a 'fixup' step where i assign all the code for the global references to names in a static javascript object (the names to which references are linked). if i'm missing something or this otherwise sounds weird i'd love to hear
17:45:14
froggey
heisig: I've made a change to enclose-instruction and updated HIR-interpreter. do you want me to try to update HIR-evaluator too?
17:48:19
heisig
My plan for this weekend is to go camping again, far away from the internet and other distractions.
17:49:59
pjb
heisig: but you can still go high tech camping, like a StarTrek expedition, with drones surveying your camp and alerts when there are incoming predators, iPhone-hooked water and fruit analysers, wikipedia to identify fauna, flora and rocks, etc.
17:50:29
pjb
For people like us (city dwellers), the country side is as good as any alien StarTrek planet.
17:52:20
heisig
pjb: That sounds good, but I fear that in practice I'd spend half of my vacation debugging drones :)
18:44:56
beach
So, if I build a recent SBCL from source, using an old SBCL, will the result use whatever glibc I have installed, or will it still require a more recent version?
18:45:51
alandipert
beach thanks in advance and absolutely no rush, as usual. your feedback is so valuable that i'm happy to wait a pretttty long time for it :-)
18:46:12
shka_
well, i was building recentish SBCL versions with older from the repo and it always worked for me
18:47:02
beach
shka_: The issue is that the recent binaries available on sourceforge require a version of glibc that is more recent than the one I have installed.
18:48:18
beach
So I am wondering whether, if I take the source of a recent SBCL, instead of the binary, the result will still attempt to use a newer version of glibc than the one i have installed, or whether it will use whatever version I have now.
18:49:56
beach
shka_: If building from source still requires the more recent glibc version, it won't help to build from source. Hence my question.
18:50:41
shka_
beach: well, i was using ubuntu 18.04 (kubuntu actually but whatever) at the office while i was still working there
19:16:26
scymtym
beach: when SBCL is compiled from source it will use (and in some cases be tied to) the glibc version of the system it is being compiled on. that is the reason why the pre-compiled binaries only work with certain ranges of glibc versions in the first place. because Xof has to choose a target glibc version that is recent enough to not be insecure
19:25:48
jcowan
Apparently the most dangerous predator in Germany is the tick; wild boars are of course not predators, but definitely dangerous to encounter.
19:42:54
Bike
ticks probably kill more people than any large mammal other than humans. did i miss wolfchat
20:02:04
Harag
my favourate camping/fishing spot has crocodiles, hippos, leopards, bush pigs, black mambas and the occational armed robber