freenode/#clasp - IRC Chatlog
Search
11:06:30
SAL9000
Shinmera: the "problem" with ECC is that it's only really supported in 'server' motherboards & CPUs, which are sometimes more expensive -- and usually sacrifice single-core performance in favor of core count
13:29:40
Bike
beach: with first class global environments, do sicl-genv:function-cell and so on /have/ to be bound in any environment, including 'secure' ones like the SICL unprivileged user?
13:29:59
Bike
and then i guess you just have it be 'secure' by not letting them get hold of an environment with the compiler in it, and such
13:40:20
Bike
no, i guess you could have a function that's like function-cell but doesn't take an environment argument, too
13:50:50
Bike
that's a pickle. i set up the "read TLS or use cell" function for symbol-value to use the global clasp unbound value, which of course sicl-simple-environment doesn't know anything about
13:51:27
Bike
if i manually set the %unbound slot to that value, it doesn't work because slot-value won't get out the value because... the slot is unbound
14:09:03
stassats
beach: re DVI/HDMI, i'd avoid adapters and just shop around for a card that has DVI outputs
15:11:50
beach
stassats: OK, thanks. I already have such a card, of course. But maybe it won't work in new computers.
15:12:27
stassats
there are more modern cards like this, but the choice is limited, according to newegg
15:12:55
beach
Bike: As usual, I am having a hard time understanding questions. When you say "do sicl-genv:function-cell and so on /have/ to be bound in any environment", by "any" do you mean "some" or "every" or something else?"
15:13:57
stassats
and i got a card with DVIs, cause they don't come with DP cables and would have to buy them separately
15:15:44
beach
Bike: I think the cell is created the first time it is asked for. So, in an environment where a symbol is not used as a function, the cell does not exist.
15:16:50
beach
Bike: And, yes, you are right, the trick is to not let just anyone get hold of any environment.
15:16:56
Bike
What i ran into was, convert-global-function basically puts in (load-time-value (sicl-genv:function-cell '<function name> sicl-genv:+global-environment+)) as ASTs
15:17:24
Bike
but then the ltv processor compiles the (sicl-genv:function-cell ...) form in the same environment as everything else
15:18:20
beach
Bike: I think we have been through this before. The load-time-value compiler must often do something different from the ordinary compiler.
15:19:26
Bike
it does kind of lead to a problem with COMPILE, though, since with COMPILE load time values are just evaluated (and in the same environment)
15:19:57
beach
I think the load-time-value compiler must do different things when it is COMPILE from when it is COMPILE-FILE.
15:21:05
beach
Bike: For example, in some file compilers, the load-time-value compiler may have to break everything down into strings, and using FIND-PACKAGE, FIND-SYMBOL, FDEFINITION, etc.
15:23:20
beach
Bike: though I don't know why you care so much. At the moment, Clasp (and most Common Lisp systems) have a single environment. I think you can mostly assume that things are compiled and loaded in the same environment. It won't be any worse than what it is now.
15:23:25
Bike
in sicl terms i expect that you'd hoist the LTVs so that you get a top-level-function-ast and load time value forms. then for compile-file you compile the forms and put them in the file and so on, whereas for compile/eval you evaluate the forms, then compile the top level function, then call it with the forms' values as arguments.
15:24:14
beach
But you can still assume that code is compiled and loaded in the same environment. You don't have to go immediately from a single-environment Common Lisp system to a full LispOS.
15:25:19
Bike
well, what i tried doing was having the most minimal environment i could manage, build up from there. it's just got sicl-genv:+global-environment+, a few special operators, and lambda
15:25:43
Bike
and i found that if i didn't have sicl-genv:function-cell there was an error. so i got to wondering.
15:26:16
beach
... unless you want to take the hash-table lookup cost at every function call, of course.
15:28:18
beach
Also, you are worried about what happens when any old user gets hold of the environment that can allow that user to modify the compiler, etc....
15:30:35
beach
As with many things, I have created a design based on a hunch of a direction that I want to go, and I am convinced that I can hash out the details when that day comes. But I haven't yet worked out every detail of every aspect of a completely secure system.
15:31:57
beach
In SICL, the main use of first-class global environments is for bootstrapping, so that the same source code can behave in different ways in different phases of the bootstrapping process. In fact, that's why I felt I wanted first-class global environments. The secure-system aspects of first-class global environments have not been fully worked out yet.
15:33:24
beach
stassats: I also want to try out a 4K monitor, so I guess I'll ask to have two graphics cards; one to drive my two existing HP 1600x1200 monitors, and another to drive the 4K using HDMI.
15:38:23
beach
stassats: Yeah, I think I found a competent guy last time I asked around. I need to find his address again.
15:41:06
beach
I'll wait until the next computer again. I am actually fine with what I have (in terms of performance, number of pixels, etc., but not in terms of the broken RAM), so it is more out of curiosity. But who knows, maybe I'll learn something. Like for instance that anti-aliasing may soon be history.
15:41:52
stassats
i once had RAM that went bad during suspend, after upgrading the motherboard, and i used lisp to diagnose it
16:46:02
Bike
beach: why does variable-unbound take the symbol as an argument? does the possibility for multiple variable-unbound markers have to be considered?
16:52:30
Bike
drmeister: i see the issue with the shadow stack policy bit, if you remember that. it's sort of not a real issue, i can explain if you aren't distracted
16:57:40
beach
For example, if you were to do (setf <variable> (variable-unbound ...)) then the variable-unbound marker must be modified I would think.
16:59:37
beach
But, if the same unbound marker were to be used, we couldn't tell whether the variable is unbound, or bound to the unbound marker.
17:00:57
beach
In Common Lisp, it is impossible to do (setf V <anything>) (boundp 'V) and have NIL returned.
17:01:32
Bike
i figured as soon as you have an accessible boundedness marker you're in nonstandard territory.
17:14:41
Bike
If you do #'some-nonexistent-function with the convert-global-function for first class global environments, and the compiler lets it through, it won't signal a runtime error because the FUNCTION special operator pretty much just calls convert-global-function, which just reads the cell. huh.
17:52:20
Bike
actually if i want to write all the CL functions with designators properly in a file i kind of do need to load things into a different environment than they're compiled in.... though the environments will be identical enough, probably
19:24:32
drmeister
Bike: So what do I do to turn off the debug frames? (declaim (debug 2)) somewhere?
19:25:26
Bike
then anything you define after it won't have the argument lists, unless there's an optimize debug
19:26:42
drmeister
Where in the source code would you recommend putting (declaim (debug 2)) Maybe in auto-compile.lsp That's where cleavir starts to start up.
19:27:25
drmeister
I don't know - jackdaniel told me once. It's supposed to register something in ECL.
19:48:15
Bike
so we don't use it? ok. ext:*register-with-pde-hook* is just nil, so it's not used in the final picture, at least