-
Notifications
You must be signed in to change notification settings - Fork 0
/
FAQ.text
190 lines (155 loc) · 6.92 KB
/
FAQ.text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
==================================================
Purpose
Question:
What is the purpose of SICL?
Answer:
There are several. One is to provide a modern, free Common Lisp
implementation. Compared to existing implementations, the goal is for
SICL to be safer, more flexible, and easier to maintain. It is also
meant to be more portable, so that large parts of the code can be used
in other Common Lisp implementations, thereby decreasing the global
maintenance effort spent on free Common Lisp implementations.
Question:
Why is it important to have a system that is safer, more flexible, and
easier to maintain? After all, there are mature implementations that
are good enough and that are regularly maintained.
Answer:
We think that SICL will be an excellent base for a modern multi-user
operating system with a completely different programming interface
than existing popular operating systems.
Question:
Is execution speed a goal?
Answer:
Definitely! We hope to implement many of the published compiler
optimization algorithms in order to make the execution speed as fast
as possible. Safety will still be higher priority though.
Question:
Why not just improve an existing implementation?
Answer:
The kind of improvements we want to see would represent radical
changes to any existing implementation. It is highly unlikely that
the maintainer of an existing implementation would be willing to
accept such radical changes, because they would often be incompatible
with the goals of that implementation. Furthermore, because the
improvements are so extensive, the amount of work required would be
comparable to, or even superior to, the creation of a completely new
implementation.
==================================================
Progress of the project.
Question:
How can I run SICL?
Answer:
You can't! It is not finished.
Question:
What part of SICL works?
Answer:
The Cleavir compiler framework can be used to turn Common Lisp into
high-level intermediate representation (HIR) and some optimizations
can be performed on HIR. Also, some modules work, like LOOP and the
reader. Most of the remaining code is written, but is not in a shape
to be used in a meaningful way by other systems.
==================================================
First-class global environments
Question:
What are first-class global environments?
Answer:
First class global environments represent a feature whereby the system
may contain several global environments, allowing the programmer to
switch between them, for various reasons.
Question:
Why can't first-class global environments be added to an existing
Common Lisp system?
Answer:
Most existing systems access global functions using an indirection
through the symbol naming them. This technique makes it impossible to
have different definitions of a function with a particular name in
different environments. In SICL the "function slot" is detached from
the symbol and attached to the global environment instead.
Question:
Sandboxing is notoriously difficult in existing Common Lisp systems.
Will it be easier in SICL?
Answer:
Yes, first-class global environments allow the creation of restricted
environments so that one may, for example, disallow the evaluation of
arbitrary forms.
Question:
Will SICL be safer than existing Common Lisp systems?
Answer:
Yes, with existing systems, the entire code is always available.
Nothing prevents an external system from modifying the compiler to
install a virus, or from forking a process in the name of the
unsuspecting user. With first-class global environments, it is
possible to isolate sensitive code so that some additional action
(password maybe) on the part of the programmer is required in order to
access or modify it.
==================================================
Garbage collection
Question:
How is the SICL garbage collector better than that of existing systems?
Answer:
A lot of progress has been made on memory management during the past
decades, and the memory management of most existing systems was
written several decades ago. Only the per-thread garbage-collection
technique to be used in SICL has been determined. For the global
collector, the plan is to have an incremental and concurrent collector
that can then use additional cores of the processor.
==================================================
Bootstrapping
Question:
Suppose I write a minimal Lisp system in C. Can I use the SICL
modules to load the rest of the functionality of a complete Common
Lisp system into my minimal system?
Answer:
No, unfortunately not. We initially thought that this would be
possible, but over time we realized that it would require the use of a
very restricted subset of Common Lisp in order to write the code of
certain modules, and that would have had a serious negative impact on
maintainability of those modules.
Question:
How is SICL going to be bootstrapped?
Answer:
The plan is to use an existing Common Lisp implementation that
has support for the CLOSER-MOP library. This host implementation is
used to execute SICL code for creating the MOP hierarchy of classes.
Then, additional code is executed in order to create a graph of SICL
objects in the host memory. Finally, the graph is traversed with the
purpose of creating an isomorphic graph in an executable file which
will constitute the initial system. Additional code is finally loaded
from FASL files to obtain the complete system.
==================================================
Cleavir
Question:
What is Cleavir?
Answer:
Cleavir is an implementation-independent compiler framework. As such,
it can be used to compile Common Lisp code to intermediate
representation (in the sense of compiler design) and then further to
machine code or some other desired output. Currently, Cleavir is part
of SICL, but we might extract it into a separate repository in the
future.
==================================================
Standalone executable files
Question:
Will it be possible to produce standalone executable files with SICL?
Answer:
Yes, that's the plan. In fact, the plan is to deliver the SICL system
largely as a shared library, containing all of the system code. That
way, only application code needs to be present in the executable file,
making the size of such executable files reasonably small.
==================================================
Contributing
Question:
Do you take contributions?
Answer:
Only in very special cases. The reason is that it takes a
considerable level of knowledge to be able to contribute in meaningful
ways. Cleavir requires knowledge of compiler optimization techniques,
data structures, asymptotic complexity, and more. And even the
straightforward code in SICL requires knowledge of the goals and the
guidelines for SICL. If you want to contribute, you should get in
touch to discuss the issue first, and we may come to some agreement.
Question:
What are your specific style guidelines?
Answer:
The specification has a long chapter on this issue. It is recommended
to read that chapter if you want to contribute.