française de cette page est disponible.
Who am I?
My name in Russian:
Василий Дмитриевич Старынкевич
- Born in august 1959, in France (so I am a French citizen).
- Married and father of 4 children (and already
- For genealogists: Sokrates Starynkiewicz is my direct ancestor.
- snail mail: 8, rue de la Faïencerie, 92340 Bourg La
- I am now again (since september 15th 2004)
at CEA LIST/DILS as a
research engineer. (working on embedded optimising
compiler, static analysis, ...). I don't have any web
page at my work because medium management disallow any
professional web pages. Frama-C is developped by
colleagues. My main work is on GCC notably its MELT
branch (funded by various projects like GlobalGCC or OpenGPU).
MELT provides a higher-level language to develop GCC extensions
and tailor it to your own needs.
- From september 15th 2003 to september 14th 2004 I worked
(for a full year as ingénieur spécialiste issu
de l'industrie) as a research engineer at INRIA in the
Cristal team. My work
was on adding orthogonal persistence to Ocaml and on Just in
Time translation of the bytecode. Here is my page at INRIA
- Formerly research engineer (computer scientist) at Commissariat à l'Energie
Atomique, working in the Software and Architecture Service
(SLA) in the Direction of Technological Research (DRT) on
static analysis of code (and scripts) and the Web.
- Education: graduated from École Normale
Supérieure de Cachan (1980, section A1 =
math) and doctor (PhD) of l'Université Paris 6 (1990) in
computer science (artificial intelligence, meta-knowledge).
Computer related interests
I am interested by compiler and programming languages. I've
probably inherited this interest from my late father Dimitri
(inventor of the PAF
programming language on CAB500, similar to Basic in 1958).
I find very interesting knowledge based systems and reflexive
systems. Metaprogramming is pertinent, and under-used. I think
that computer systems should be given a lot of declarative
knowledge (including metaknowledge for using
them). Symbolic processing is interesting, but
numerical processing is boring to me. I find exciting
J.Pitrat's Maciste/Caia system and Tunes. I recommend J.Pitrat's latest
book on Artificial
Beings and his blog.
With his explicit permission, here is the
source archive (GPL licensed) of his system.
I am a long-time user of opensource or free software. I
am using Linux since the 0.99.15 kernel (1993?). I believe free
software will have even more and more success, since the human
species is unable to manage successfully software development
otherwise. (management basically cannot exist).
Only the organic way of collectively develop free software is
able to produce more and more complex or important software.
I am interested by programming languages, and of course I know
C, Java, C++ (I hate it - it is today's Cobol and is always
unappropriate), Scheme, CommonLisp, Smalltalk. I love Ocaml. Scripting languages are
Tcl - Ousterhout made the
mistake of hypothesing that scripts remain tiny), such as
Ruby (and Ocaml).
Markup languages XML (eg DocBook) and text formatting such as
Lout and LaTeX
are appropriate to produce documents. I do not know Word (and you
need a big lot of time to learn it, particularily the dirty
tricks to overcome its numerous bugs).
Meta-programming, i.e. automatic and dynamic generation of
programs (from a higher level representation) is an interesting
(but underused) approach for many problems.
Memory management should be done thru a garbage
collector. Dealing explicitly with memory deallocation (like
in C and C++) is a lost of time for both the coder and the
machine. When I have to code in C a non trivial program, I either
conservative GC or code my own GC like in Qish.
At work, I significantly contributed to initiate the GlobalGCC
(ITEA) and OpenGPU projects, to fund my work on GCC.
Professionally, I was the initiator of the
POESIA (Public Opensource Environment for a Safer Internet
Access) IAP-2117 european project, which started in january
2002 (till january 2004) with partial funding from the European
Commission thru the Safer
filtering software). See
Here are some recent papers ot slides:
- (juillet 2011) paper accepted at DSL2011
IFIP Working Conference on Domain-Specific Languages
(Bordeaux, september 2011)
on MELT -
a Translated Domain Specific Language
Embedded in the GCC Compiler (PDF, 25 pages)
- (march 2010) slides in French sur les greffons de GCC (GCC
plugins) (with Zbigniew Chamski), Paris, Solutions Linux
- (july 2007) GCC summit paper
- (september 2004)
OCamljit - a faster Just-In-Time Ocaml implementation
accepted to MetaOcaml 2004 workshop,
Vancouver, 11 pages (PostScript).
- (january 2003, in French) Basile Starynkévitch et
Mohamed Daoudi: Architecture du système Poesia de
filtrage de contenu Internet (architecture of the Poesia
system for Internet content filtering) PDF file, in CORESA
- (september 2001, in French) Basile Starynkévitch: un
regard extérieur sur le système Maciste de
Jacques Pitrat, in Colloque
Métaconnaissance de Berder (PDF file) [a
short and incomplete review of J.Pitrat's reflexive
metaknowledge based system Maciste]
- (spring? 2001 - gzipped PostScript) A Simple
Abstract Interpreter for Threat Detection and Test Case
Generation , Dominique Guilbaud, Eric Goubault, Anne
Pacalet, Basile Starynkévitch and Franck Védrine
presented at WAPATV'01 (associated with ICSE'01, Toronto)
[a co-authored paper on a static code analyzer, using
abstract interpretation techniques]
- The MELT
branch and meta-plugin of GCC (and regular contributions to GCC)
- A small utility (GPL licensed) to dump or load GDBM files
in textual format is gdbmtext.c
- The execicar.c program runs and
monitors processes thru a textual protocol
- I wrote manydl.c to experiment about
dlopen (dynamic loading of libraries), and found that
on my Linux/Debian/Sid/x86 box (AMD XP2000 1.66GHz 512Mb RAM)
one can generate thirty thousand (yes 30000) C sources (erach
with a randomly generated function) and shared objects and
dlopen all of them together. You can compile it with
gcc -rdynamic -O manydl.c -ldl -o manydl and run the
executable ./manydl 900 200 to generate 900 files
named genf_*.c of about 200 lines each, compile them,
and dynamically load them. You can even try ./manydl 30000
1000 as I did. See the source code for details. In
practice, you can do many -thousands- of calls to
- OcamlJitRun (developped at INRIA) has its own page;
it is a Just in Time translator of Ocaml bytecode into machine
code, and may run your unmodified Ocaml bytecode about twice as
faster as the usual ocamlrun interpreter.
- Persil (developped at INRIA) is a persistent library
- Qish contains a runtime system, including a copying
generational garbage collector usable in CThis is opensource
free software, under GPL license, developped on Linux/x86. Here
is a documentation of Qish (in
english) and its PDF version and
its PostScript version. The latest
version of Qish is always referred as a Freshmeat project and
here. You can subscribe to
annoucements on Freshmeat.
- Guis is a small widget server (for gtk2) to avoid linking
in gtk in your application.. This is opensource free software,
under GPL license, developped on Linux/x86. Here is a documentation of Guis (in english) and its
PostScript version. The latest version
of guis is always referred as a Freshmeat project and
here. You can subscribe to
annoucements on Freshmeat.
- I worked and initiated on POESIA an opensource
internet content filter. Ocaml developers could also use (for
tracing or logging) the
pa_trace.ml file for the
camlp4 preprocessor, from
PoesiaMonIcap. See also there the
Comparative timing of GCC
compilations on two desktops.
configuration file for Xorg (X11R7) with a twin-headed
Geforce 7600 GT with NVIDIA proprietary driver and two Samsung 17
inches LCD screens (using a twinview screen).(I don't
recommend using this, because of brittle proprietary
Here is a photo of me taken on september 28th 2002: .
STARYNKEVITCH (but remove the _NOSPAM and
.invalid from the email address)