((slideset :configuration ((title :fontname "-bitstream-bitstream vera sans-medium-r-normal--58-561-75-75-p-353-iso8859-1" :color "blue") (tt :fontname "-bitstream-bitstream vera sans mono-medium-r-normal--33-321-75-75-m-200-iso8859-1" :color "black") (i :fontname "-bitstream-bitstream vera sans-medium-o-normal--33-321-75-75-p-201-iso8859-1" :color "blue") (slide :fontname "-bitstream-bitstream vera sans-medium-r-normal--33-321-75-75-p-201-iso8859-1" :color "blue" :bg-color "white"))) (slide (title (center "Climacs")) (title (center "An Emacs alternative")) (title (center "for editing Common Lisp")) (p (center "Robert Strandh")) (p (center "LaBRI")) (p (center "University of Bordeaux"))) (slide (title (center "Plan of talk")) (ul (li "Project context") (li "History") (li "Current status") (li "Comparison with Hemlock and Goatee") (li "Future plans") (li "Demo"))) (slide (title (center "Context")) (p "Goal: A Lisp OS:") (ul (li "Near real-time") (li "Multi-user") (li "Single address space") (li "Universal persistence"))) (slide (title (center "Context")) (p "To avoid having to write device drivers:") (ul (li "either run it in parallel with GNU/Linux in " "some \"virtualizer\" environment such as Plex, or") (li "run it as a Linux process"))) (slide (title (center "Intermediate goals")) (p "In chronological order") (ul (li "An implementation of CLIM (nearly done: McCLIM)") (li "A complete development environment based on CLIM") (li "A persistent Linux process based on EROS technology") (li "A near-real-time GC for (say) SBCL"))) (slide (title (center "Development environment")) (ul (li "Listener (exists)") (li "Debugger pane (exists)") (li "Inspector application (exists)") (li "A Common Lisp implementation of Emacs (Climacs)"))) (slide (title (center "Climacs: initial goals")) (ul (li "merge two editor projects: Goatee and Portable Hemlock") (li "create a good framework for syntax highlighting, etc.") (li (p "provide a platform for student projects") (ul (li "replace buffer representation by something better (a Flexichain per line)") (li "write a Common Lisp syntax") (li "provide unlimited undo"))))) (slide (title (center "What was different this time?")) (p "I provided a detailed specification of key protocols") (ul (li "the buffer protocol") (li "the buffer modification protocol") (li "the undo protocol") (li "to some extent the syntax protocol")) (p "Also better support for arbitrary buffer objects, including Unicode characters") (p "And, of course, we had Flexichain")) (slide (title (center "So what happened?")) (p "Climacs immediately took on a life of its own through many contributors") (ul (li* "Elliott Johnson, Aleksandar Bakic") (li* "Matthieu Villeneuve, Lawrence Mitchell") (li* "Nicolas Lamirault, Christophe Rhodes") (li* "Andreas Fuchs, Ignas Mikalajunas")) (p "This was possible partly thanks to relatively well-documented protocols")) (slide (title (center "Major victories")) (p "Some of the contributions I consider of major importance, " "because they pushed the frontiers of what is possible") (ul (li "the \"persistent\" buffer implementation by Aleksandar Bakic") (li "Tabcode syntax by Christophe Rhodes") (li "Prolog syntax, also by Christophe Rhodes")) (ul "Others were important for other reasons, especially the code " "for testing buffer implementations by Aleksandar Bakic")) (slide (title (center "Current status")) (p "Most basic Emacs functionality is in place") (ul (li "inserting and deleting text, moving around,") (li "killing and yanking") (li "transposing, filling, auto-filling") (li "multi-buffer, multi-window") (li "extended commands, numeric arguments") (li "search, query-replace") (li "abbrevs") (li "undo"))) (slide (title (center "Climacs vs Portable Hemlock")) (p "Climacs has some advantages compared to Portable Hemlock:") (ul (li "better kill ring implementation") (li "better undo facility") (li "buffer can contain any CL object") (li "it is a true CLIM application")) (p "It also has some disadvantages:") (ul (li "less mature, so probably has more bugs") (li "it is probably slower"))) (slide (title (center "Climacs vs Goatee")) (p "Goatee has very few of the features of Climacs") (p "However, Goatee works with the McCLIM text field")) (slide (title (center "Syntax support")) (p "Climacs has a built-in Earley-type incremental parser. " "It is currently used for:") (ul (li "HTML syntax (still very incomplete but getting better)") (li "ISO Prolog syntax (near complete)") (li "Common Lisp syntax (recent, not yet debugged)")) (p "Climacs can also work with traditional table-driven LR parsers " "which would probably be faster than the Earley parser")) (slide (title (center "Performance")) (p "Several aspects of Climacs suffer from sluggish performance right now:") (ul (li "the current buffer implementation is slow on line operations") (li "the current buffer implementation is slow because of layers " "and layers of generic function calls and because of assertions") (li "the redisplay code is slow because of McCLIM (though might " "be improved by the use of nested presentations)") (li "the Earley parser is somewhat slow"))) (slide (title (center "How to improve performance")) (ul (li "Aleksandar Bakic is working on a line-oriented buffer implementation") (li "use a buffer cache for all syntax modules") (li "fix McCLIM redisplay") (li "improve performance of Earley parser"))) (slide (title (center "Parser performance")) (ul (li "cut down on prediction by pre-computing FIRST set") (li "introduce conditions for predictions to be valid") (li "it might be possible to resynchronize with old parses") (li "let the lexer work more and the parser less") (li "adapt grammars to parsing algorithm") (li "use faster parser algorithms when necessary"))) (slide (title (center "Future plans")) (p "Near future:") (ul (li "make CL syntax excellent, if necessary by using some " "parsing technology other than the existing Earley parser") (li "better buffer implementation") (li "code factoring") (li "easy performance improvements") (li "continue the work on HTML syntax"))) (slide (title (center "Future plans")) (p "Longterm future:") (ul (li "more syntax modules (C, Java, PHP)") (li "architecture improvements") (li "a grammar and spell checker using the Earley parser") (li "better integration with CLIM and existing CLIM applications") (li "replace Goatee (which will require some more " "architecture improvements)"))) (slide (title (center "What we will NOT do:")) (ul (li "mail reader, news reader, though such applications " "could use Climacs to edit messages") (li "dired and similar modes " "(they should be CLIM panes or CLIM applications)"))) (slide (title (center "Demo time..."))) )