|
[45] | Hoeflich, J. and Findler, R. B. and Serrano, M. -- Highly Illogical, Kirk: Spotting Type Mismatches in the Large despite Broken Contracts, Unsound Types, and Too Many Linters -- Proceedings of the ACM on Programming Languages (OOPSLA), 6New York, NY, USA, Oct, 2022, pp. 479--504. |
| [ pdf ] |
|
| The DefinitelyTyped repository hosts type declarations for thousands of JavaScript libraries. Given the lack of formal connection between the types and the corresponding code, a natural question is are the types right? An equally important question, as DefinitelyTyped and the libraries it supports change over time, is how can we keep the types from becoming wrong? In this paper we offer Scotty, a tool that detects mismatches between the types and code in the Definitely-Typed repository. More specifically, Scotty checks each package by converting its types into contracts and installing the contracts on the boundary between the library and its test suite. Running the test suite in this environment can reveal mismatches between the types and the JavaScript code. As automation and generality are both essential if such a tool is going to remain useful in the long term, we focus on techniques that sacrifice completeness, instead preferring to avoid false positives. Scotty currently handles about 26% of the 8006 packages on DefinitelyTyped (61% of the packages whose code is available and whose test suite passes). Perhaps unsurprisingly, running the tests with these contracts in place revealed many errors in Definitely-Typed. More surprisingly, despite the inherent limitations of the techniques we use, this exercise led to one hundred accepted pull requests that fix errors in DefinitelyTyped, demonstrating the value of this approach for the long-term maintenance of DefinitelyTyped. It also revealed a number of lessons about working in the JavaScript ecosystem and how details beyond the semantics of the language can be surprisingly important. Best of all, it also revealed a few places where programmers preferred incorrect types, suggesting some avenues of research to improve TypeScript. |
|
| |
[22] | Serrano, M. -- http://www-sop.inria.fr/members/Manuel.Serrano/publi/serrano-wadlerfest16.pdf -- Apr, 2016, pp. 356--366. |
| [ http://www-sop.inria.fr/members/Manuel.Serrano/publi/serrano-wadlerfest16.pdf ] |
|
| This text relates the story of particularly shocking bug that occurred during the development of a Web application. The bug is first described. The battle to understand and fix it is then presented. This experimental report concludes with some questionings about the way we conceive programming languages and programming environments. |
|
| |
[70] | Serrano, M. -- HopTeX - Compiling HTML to LaTeX with CSS -- Online Proceedings of the Scheme'11 workshop, Portland, USA, Oct, 2011. |
| [ pdf | html ] |
| |
[66] | Berry, G. and Nicolas, C. and Serrano, M. -- HipHop: A Synchronous Reactive Extension for Hop -- Proceedings of the PLASTIC'11 workshop, Portland, USA, Oct, 2011, pp. 49--56. |
| [ pdf ] |
|
| HOP is a SCHEME-based language and system to build rich multi-tier web applications. We present HIPHOP, a new language layer within HOP dedicated to request and event orchestration. HIPHOP follows the synchronous reactive model of the Esterel and ReactiveC languages, originally developed for embedded systems programming. It is based on synchronous concurrency and preemption primitives, which are known to be key components for the modular design of complex temporal behaviors. Although the language is concurrent, the generated code is purely sequential and thread-free; HIPHOP is translated to HOP for the server side and to straight JavaScript for the client side. With a music playing example, we show how to modularly buid non-trivial orchestration code with HIPHOP, |
|
| |
[54] | Serrano, M. and Gallesio, E. -- An Adaptive Package Management System for Scheme -- Proceedings of the Second Dynamic Languages Symposium (DLS), Montréal, Québec, Canada, Oct, 2007, pp. 65--76. |
| [ html ] |
|
| This paper presents a package management system for the Scheme programming language. It is inspired by the Comprehensive Perl Archive Network (Cpan) and various GNU/Linux distributions. It downloads, installs, and prepares source codes for execution. It manages the dependencies between packages. The main characteristic of this system is its neutrality with respect to the various Scheme implementations. It is neutral with respect to the language extensions that each Scheme implementation proposes and with respect to the execution environment of these implementations. This allows the programmer to blend, within the same program, independent components which have been developed and tested within different Scheme implementations. ScmPkg is available at: http://hop.inria.fr/hop/scmpkg |
|
| |
[60] | Gallesio, E. and Serrano, M. -- Skribe: a Functional Authoring Language -- Journal of Functional Programming (JFP), 2005, pp. 751--770. |
| [ http://www-sop.inria.fr/members/Manuel.Serrano/publi/jfp05/article.html | html ] |
|
| Skribe is a functional programming language designed for authoring documents, such as web pages or technical reports. It is built on top of the Scheme programming language. Its concrete syntax is simple and it looks familiar to anyone used to markup languages. Authoring a document with Skribe is as simple as with HTML or LaTeX. Because of the conciseness of its original syntax, it is even possible to use it without noticing that it is a programming language. In Skribe, the ratio "markup/text" is smaller than with the other markup systems we have tested. |
|
| |
[21] | Serrano, M. and Boussinot, F. and Serpette, B. -- Scheme Fair Threads -- 6th Sigplan Int'l Conference on Principles and Practice of Declarative Programming (PPDP), Verona, Italy, Aug, 2004, pp. 203--214. |
| [ html ] |
|
| This paper presents Fair Threads, a new model for concurrent programming. This multi-threading model combines preemptive and cooperative scheduling. User threads execute according to a cooperative strategy. Service threads execute according to a preemptive strategy. User threads may ask services from service threads in order to improve performance by exploiting hardware parallelism and in order to execute non-blocking operations.
Fair threads are experimented within the context of the functional programming language Scheme. This paper also presents the integration in this language. That is, it presents a semantics for Scheme augmented with Fair Threads and the main characteristics of the implementation. |
|
| |
[68] | Ciabrini, D. and Serrano, M. -- Bugloo: A Source Level Debugger for Scheme Programs Compiled into JVM Bytecode -- 3th International Lisp Conference, New York, USA, Oct, 2003. |
| [ http://www-sop.inria.fr/mimosa/fp/Bugloo ] |
| |
[61] | Gallesio, E. and Serrano, M. -- Programming Graphical User Interfaces with Scheme -- Journal of Functional Programming (JFP), 13(5), Sep, 2003, pp. 839--886. |
| [ ps.gz ] |
|
| This paper presents Biglook, a widget library for an extended version of the Scheme programming language. It uses classes of a Clos-like object layer to represent widgets and Scheme closures to handle graphical events. Combining functional and object-oriented programming styles yields an original application programming interface that advocates a strict separation between the implementation of the graphical interfaces and the user-associated commands, enabling compact source code.
The Biglook implementation separates the Scheme programming interface and the native back-end. This permits different ports for Biglook. The current version uses GTK and Swing graphical toolkits, while the previous release used Tk. |
|
| |
[43] | Serrano, M. -- Techniques de l'Ingenieur, ch. Le Langage C++ -- Éditions T.I., 249, rue de Crimée, 75925 Paris, Cedex 19, France, 2003. |
| [ http://www.techniques-ingenieur.fr ] |
| |
[82] | Serrano, M. and Boussinot, F. and Serpette, B. -- Scheme FairThreads -- 2th International Lisp Conference (invited paper), San Francisco, CA, USA, Oct, 2002. |
| |
[75] | Gallesio, E. and Serrano, M. -- Biglook: a Widget Library for the Scheme Programming Language -- 2002 Usenix annual technical conference, Freenix track, Monterey, Californie, USA, Jun, 2002, pp. 85--97. |
| [ ps.gz ] |
| |
[35] | Serrano, M. and Gallesio, E. -- This is Scribe! -- 3th ACM sigplan Workshop on Scheme and Functional Programming, Pittsburgh, Pennsylvania, USA, Jun, 2002. |
| [ ps.gz | html ] |
|
| This paper presents Scribe, a functional programming language for authoring documents. Even if it is a general purpose tool, it best suits the writing of technical documents such as web pages or technical reports, API documentations, etc. Executing Scribe programs can produce documents of various formats such as PostScript, PDF, HTML, Texinfo or Unix man pages. That is, the very same program can be used to produce documents in different formats. Scribe is a full featured programming language but it looks like a markup language la HTML. |
|
| |
[19] | Serrano, M. -- Wide classes -- 13th European Conference on Object-Oriented Programming (ECOOP), Lisbon, Portugal, Jun, 1999, pp. 391--415. |
| [ ps.gz ] |
|
| This paper introduces the concepts of wide classes and widening as extensions to the object model of class-based languages such as Java and Smalltalk. Widening allows an object to be temporarily widened, that is transformed into an instance of a subclass, a wide class, and, later on, to be shrunk, that is reshaped to its original class. Wide classes share the main properties of plain classes: they have a name, a superclass, they may be instantiated, they have an associated class predicate and an associated type that may be used to override function definitions.
Widening is also useful to implement transient data storage for long-lasting computations. In particular, it helps reducing software data retention. This phenomenon arises when the actual data structures used in a program fail to reflect time-dependent properties of values and can cause excessive memory consumption during the execution.
Wide classes may be implemented for any dynamically-typed class-based programming language with very few modifications to the existing runtime system. We describe the simple and efficient implementation strategy used in the Bigloo runtime system. |
|
| |
|