summaryrefslogtreecommitdiff
path: root/Fosdem2022/TALK.txt
blob: 719c0011628b52b3fac4b2c52dc27c5558f6cee2 (plain)
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
191
192
193
194
195
196
197
198
199
200
201
Who I am (it's a little bit relevant to understand my previous knowledge)
- telecommunication engineer (EEE equivalent)
- Freelance engineer/programmer at ElenQ.Tech
- Guix user and contributor

Recently:
- Interested in small computing
- Lisp, specially scheme, specially small scheme implementations

The early beginnings:
- Started a very small scheme compiler for small machines, and thought
  about RISC-V. I decided to target RISC-V assembly (following:
  https://compilers.iecc.com/crenshaw/)
- I studied RISC-V via [riscvbook]
- I studied several scheme implementations
- Nothing happened out of this, I gave up when I read about continuations but I
  learned some stuff.

The random events
- One day a friend tells me guix mailing list is looking for help to make a
  RISC-V port. I decide to raise my hand.
- Now I'm involved in RISC-V porting effort somehow.
- One day Andy Wingo, the Guile maintainer, mentions it would be interesting
  to port Lightening, Guile's JIT code generation library to RISC-V.

Now I'm working on Lightening: things learned
- Code is data -> I'm a lisp guy, I already knew that!
- Some cool GDB debugging I already forgot (disassemble)
- Now I'm able to hand-assemble instructions too
- Machine code generation is not that complex
- Relocations and large immediates are painful

Lightening RISC-V is passing all the tests, next step is to give it a serious
try and see if it works! Cross fingers!

Stage0
- There was a chance to work on the bootstrap system of Guix via NlNet and the
  guys involved in the porting effort helped me prepare a proposal.
- I had to learn about all the steps around so I started with Stage0.

Stage0's steps:
hex0 -> hex1 -> hex2 -> M0 (macro system) -> M2-Planet [ -> Gnu Mes ]

Hex0
- Hex0 are hex files that contain what the ELF executable would, but encoded in
  Hexadecimal text.
- I started with hex0, porting it to RISC-V (RV64). Thankfully, I was
  developing a RISC-V assembler (I never finished) that helped me generate the
  instructions by hand.
- Took the ELF headers from the wikipedia.
- It worked!!

Effects of this effort
- Other people at Bootstrappable took this work and finished the whole chain
  of Stage0!

A random afternoon:
- I was bored and the Hex0 for RV32 was missing. Looked the headers in the
  wikipedia and 20 minutes later it was added to the project. Another starting
  point solved!

Now:
- Took the NlNet grant and now I'm going to contribute to the full source 
  bootstrap ecosystem. So now this is kind of my job.

Conclusions:
- This is just random work
- Embrace the randomness of life, stay curious and you may reach interesting
  places.



---


My blogposts about this process:
https://ekaitz.elenq.tech/lightening.html
https://ekaitz.elenq.tech/hex0.html
https://ekaitz.elenq.tech/machine-code-generation.html

RISC-V:
http://riscvbook.com/

Bootstrap related:
http://bootstrappable.org
https://github.com/oriansj/stage0
https://github.com/oriansj/bootstrap-seeds

GUILE
https://www.gnu.org/software/guile/
https://gitlab.com/wingo/lightening/-/merge_requests/14/commits

---

We are excited to announce a devroom on Declarative and Minimalistic
Computing at FOSDEM on 5th and 6th of February, 2022, online!

FOSDEM is one of the most important free software conferences and is
hosted annually at Université libre de Bruxelles in Brussels,
Belgium. Unfortunately again this year FOSDEM will not run a physical
conference but will be online only. Talks will be pre-recorded with
some live content including Q&A sessions and discussion panels.

We accept talks from languages that attempt to minimize use of hardware
and software while trying to make systems simpler, more robust and more
secure. If you are working on improving today's systems taking
declarative/minimalistic approaches feel free to submit a talk
proposal. Examples include the Scheme/Lisp family of programmings
languages. In past editions, this devroom has received presentations
from a varied number of language communities, including Forth, Guile,
Lua, Nim, Racket, Raku and Tcl as well as several experimental projects
that push minimalism in new directions.

Minimalism and declarative programming are two important topics for
this devroom. Minimalism matters. Minimalism allows for smaller
systems that take less resources and consume less energy. More
importantly, free and open source minimalism allows for secure systems
that are easy to understand. Declarative programming is a programming
paradigm that expresses the logic of a computation without describing
its control flow. Many languages that apply this style attempt to
minimize or eliminate side effects by describing what the program must
accomplish in terms of the problem domain, rather than describe how to
accomplish it as a sequence of the programming language primitives.

Finally, in this year's virtual conference we will honor the late Professor
[https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist) John
McCarthy] as the founder of AI and the inventor of LISP. McCarthy with
his work pioneered artificial intelligence, developed the Lisp
programming language family and kickstarted our modern computing world.

We want to invite you to submit a talk on declarative and minimalistic
computing that fits that description. We are especially happy to
receive talk submissions from members of groups underrepresented in
free software.

If you have something you’d like to share with your fellow developers,
please E-mail us! Talks considered for the devroom will have to
be entered in

   - https://penta.fosdem.org/submission/FOSDEM22

The deadline for submission is December 20th. If you have a FOSDEM
pentabarf account from a previous year, please use that
account. Otherwise add one on
https://penta.fosdem.org/user/new_account. Reach out to
pjotr.public456@thebird.nl or manolis837@gmail.com if you run into any
trouble.

When submitting your talk make doubly sure to select "Declarative and
Minimalistic Computing devroom" as track (if you don't we won't find
it), and include the following information:

   * The title and subtitle of your talk
   * A short abstract of one paragraph
   * A longer description if you wish to do so
   * Links to related websites/blogs etc
   * Presentations has to be pre-recorded and streamed before the event.
   * Start recording early!

To see what a final talk looks like see

   https://archive.fosdem.org/2021/schedule/event/gnumes/

For accepted talks

   * Once your talk was accepted, we will assign you an organizer to
help you to produce the pre-recorded content.
   * The organizer will review the content and ensure it has the
required quality. He is also responsible for ensuring the content is
into the system and ready to broadcast.
   * During the stream of your talk, you must be available online for
the Q/A session

Let's make this a fun day!

= Organizers =

Pjotr Prins, Manolis Ragkousis, Ludovic Courtès, Amirouche Boubekki,
Hisham Muhammad, Jan Nieuwenhuizen, Ricardo Wurmus, Alex
Sassmannshausen, William Byrd, Oliver Propst, Efraim Flashner, Julien
Lepiller

= Code of conduct =

   - https://fosdem.org/2022/practical/conduct/

= Original proposal =

   - https://libreplanet.org/wiki/FOSDEM2022-devroom-proposal

= Important dates: =

   - Dec 20th 2021:  submission deadline for talk proposals
   - Dec 31th 2021:  announcement of the final schedule
   - Jan 14th 2021:  submission deadline for recordings
   - Feb  5th 2022:  FOSDEM!

= Links: =

    -
https://libreplanet.org/wiki/FOSDEM2022-devroom-declarative-and-minimalistic-computing-cfp