var bibbase_data = {"data":"\"Loading..\"\n\n
\n\n \n\n \n\n \n \n\n \n\n \n \n\n \n\n \n
\n generated by\n \n \"bibbase.org\"\n\n \n
\n \n\n
\n\n \n\n\n
\n\n Excellent! Next you can\n create a new website with this list, or\n embed it in an existing web page by copying & pasting\n any of the following snippets.\n\n
\n JavaScript\n (easiest)\n
\n \n <script src=\"https://bibbase.org/show?bib=https%3A%2F%2Fguillep.github.io%2Fmybib.bib&jsonp=1&jsonp=1\"></script>\n \n
\n\n PHP\n
\n \n <?php\n $contents = file_get_contents(\"https://bibbase.org/show?bib=https%3A%2F%2Fguillep.github.io%2Fmybib.bib&jsonp=1\");\n print_r($contents);\n ?>\n \n
\n\n iFrame\n (not recommended)\n
\n \n <iframe src=\"https://bibbase.org/show?bib=https%3A%2F%2Fguillep.github.io%2Fmybib.bib&jsonp=1\"></iframe>\n \n
\n\n

\n For more details see the documention.\n

\n
\n
\n\n
\n\n This is a preview! To use this list on your own web site\n or create a new web site from it,\n create a free account. The file will be added\n and you will be able to edit it in the File Manager.\n We will show you instructions once you've created your account.\n
\n\n
\n\n

To the site owner:

\n\n

Action required! Mendeley is changing its\n API. In order to keep using Mendeley with BibBase past April\n 14th, you need to:\n

    \n
  1. renew the authorization for BibBase on Mendeley, and
  2. \n
  3. update the BibBase URL\n in your page the same way you did when you initially set up\n this page.\n
  4. \n
\n

\n\n

\n \n \n Fix it now\n

\n
\n\n
\n\n\n
\n \n \n
\n
\n  \n 2024\n \n \n (1)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n A VM-Agnostic and Backwards Compatible Protected Modifier for Dynamically-Typed Languages.\n \n \n \n\n\n \n Thomas, I.; Aranega, V.; Ducasse, S.; Polito, G.; and Tesone, P.\n\n\n \n\n\n\n The Art, Science, and Engineering of Programming, 8. 2024.\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@article{Thoma24a,\n  author = {Iona Thomas and  Vincent Aranega and Stéphane Ducasse and Guillermo Polito and Pablo Tesone},\n  title = {A VM-Agnostic and Backwards Compatible Protected Modifier for Dynamically-Typed Languages},\n  journal = {The Art, Science, and Engineering of Programming},\n  volume = {8},\n  year = {2024},\n  doi = {10.22152/programming-journal.org/2024/8/2},\n  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Thoma24a-Protected-Programming.pdf},\n  abstract = {In object-oriented languages, method visibility modifiers hold a key role in separating internal methods from the public API. Protected visibility modifiers offer a way to hide methods from external objects while authorizing internal use and overriding in subclasses. While present in main statically-typed languages, visibility modifiers are not as common or mature in dynamically-typed languages.\nIn this article, we present ProtDyn, a self-send-based visibility model calculated at compile time for dynamically-typed languages relying on name-mangling and syntactic differentiation of self vs non self sends. We present #Pharo, a ProtDyn implementation of this model that is backwards compatible with existing programs, and its port to Python. Using these implementations we study the performance impact of ProtDyn on the method lookup, in the presence of global lookup caches and polymorphic inline caches. We show that our name mangling and double method registration technique has a very low impact on performance and keeps the benefits from the global lookup cache and polymorphic inline cache. We also show that the memory overhead on a real use case is between 2 \\% and 13 \\% in the worst-case scenario.\nProtected modifier semantics enforces encapsulation such as private but allow developers to still extend the class in subclasses. ProtDyn offers a VM-agnostic and backwards-compatible design to introduce protected semantics in dynamically-typed languages.},\n  annote = {internationaljournal},\n  hal-id = {hal-04119017},\n  hal-url = {http://hal.inria.fr/hal-04119017},\n  keywords = {StePub kzModule}}\n  \n  
\n
\n\n\n
\n In object-oriented languages, method visibility modifiers hold a key role in separating internal methods from the public API. Protected visibility modifiers offer a way to hide methods from external objects while authorizing internal use and overriding in subclasses. While present in main statically-typed languages, visibility modifiers are not as common or mature in dynamically-typed languages. In this article, we present ProtDyn, a self-send-based visibility model calculated at compile time for dynamically-typed languages relying on name-mangling and syntactic differentiation of self vs non self sends. We present #Pharo, a ProtDyn implementation of this model that is backwards compatible with existing programs, and its port to Python. Using these implementations we study the performance impact of ProtDyn on the method lookup, in the presence of global lookup caches and polymorphic inline caches. We show that our name mangling and double method registration technique has a very low impact on performance and keeps the benefits from the global lookup cache and polymorphic inline cache. We also show that the memory overhead on a real use case is between 2 % and 13 % in the worst-case scenario. Protected modifier semantics enforces encapsulation such as private but allow developers to still extend the class in subclasses. ProtDyn offers a VM-agnostic and backwards-compatible design to introduce protected semantics in dynamically-typed languages.\n
\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2023\n \n \n (2)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n 2022 Activity Report Project-Team RMOD.\n \n \n \n\n\n \n Denker, M.; Anquetil, N.; Costiou, S.; Ducasse, S.; Etien, A.; and Polito, G.\n\n\n \n\n\n\n Technical Report INRIA, 2023.\n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@techreport{Denk23a,\n    author = {Marcus Denker and Nicolas Anquetil and Steven Costiou and St\\'ephane Ducasse and Anne Etien and Guillermo Polito},\n    title = {2022 Activity Report Project-Team RMOD},\n    year = {2023},\n    pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Denk23a-RAWEB-RMOD-2022-TeamActivityReport.pdf},\n    abstract = {This is the yearly report of the RMOD team (http://rmod.inria.fr/). A good way to understand what we are doing.},\n    annote = {techreport},\n    hal-id = {hal-04112164v1},\n    institution = {INRIA},\n    keywords = {rmod raweb lse-pub kzTeamReport},\n    tagnicolasa = {ignore}}\n\n
\n
\n\n\n
\n This is the yearly report of the RMOD team (http://rmod.inria.fr/). A good way to understand what we are doing.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Heap Fuzzing: Automatic Garbage Collection Testing with Expert-Guided Random Events.\n \n \n \n\n\n \n Polito, G.; Tesone, P.; Privat, J.; Palumbo, N.; and Ducasse, S.\n\n\n \n\n\n\n In International Conference on Software Testing, 2023. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n\n\n\n
\n
@inproceedings{Poli23a,\n\t\t  title={Heap Fuzzing: Automatic Garbage Collection Testing with Expert-Guided Random Events},\n\t\t  author={Polito, Guillermo and Tesone, Pablo and Privat, Jean and Palumbo, Nahuel and Ducasse, St{\\'e}phane},\n\t\t  booktitle={International Conference on Software Testing},\n\t\t  year={2023}\n\t\t}\n\t\t\n\t\t
\n
\n\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2022\n \n \n (8)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n \n Deprewriter: On the fly rewriting method deprecations.\n \n \n \n \n\n\n \n Ducasse, S.; Polito, G.; Zaitsev, O.; Denker, M.; and Tesone, P.\n\n\n \n\n\n\n Journal of Object Technologies (JOT), 21(1). 2022.\n \n\n\n\n
\n\n\n\n \n \n \"Deprewriter:2\n  \n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n\n\n\n
\n
@article{Duca22a,\n    author = {St\\'ephane Ducasse and  Guillermo Polito and Oleksandr Zaitsev and Marcus Denker and Pablo Tesone},\n    title = {Deprewriter: On the fly rewriting method deprecations},\n    journal = {Journal of Object Technologies (JOT)},\n    volume = {21},\n    year = {2022},\n    doi = {10.5381/jot.2022.21.1.a1},\n    pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Duca22a-JOT-Deprewriter.pdf},\n    number = {1},\n    url2 = {http://www.jot.fm/contents/issue_2022_01/article1.html},\n    annote = {internationaljournal},\n    hal-id = {hal-03563605},\n    hal-url = {https://hal.inria.fr/hal-03563605/document}}\n\n
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Porting a JIT Compiler to RISC-V: Challenges and Opportunities.\n \n \n \n \n\n\n \n Ducasse, Q.; Polito, G.; Tesone, P.; Cotret, P.; and Lagadec, L.\n\n\n \n\n\n\n In Proceedings of the 19th International Conference on Managed Programming Languages and Runtimes (MPLR '22), Brussels, Belgium, September 2022. \n \n\n\n\n
\n\n\n\n \n \n \"PortingPaper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Duca22d,\n  author = {Ducasse, Quentin and Polito, Guillermo and Tesone, Pablo and Cotret, Pascal and Lagadec, Lo{\\"i}c},\n  title = {Porting a JIT Compiler to RISC-V: Challenges and Opportunities},\n  booktitle = {Proceedings of the 19th International Conference on Managed Programming Languages and Runtimes (MPLR '22)},\n  year = {2022},\n  url = {https://hal.archives-ouvertes.fr/hal-03725841},\n  pdf = {https://hal.archives-ouvertes.fr/hal-03725841/file/default.pdf},\n  address = {Brussels, Belgium},\n  month = sep,\n  keywords = {JIT ; RISC-V},\n  hal-id = {hal-03725841}}\n  \n
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Differential testing of simulation-based VM generators: automatic detection of VM generator semantic gaps between simulation and generated VMs.\n \n \n \n\n\n \n Misse-Chanabier, P.; Polito, G.; Ducasse, S.; Bouraqadi, N.; Fabresse, L.; and Tesone, P.\n\n\n \n\n\n\n In Proceedings of the 37th ACM/SIGAPP Symposium on Applied Computing (SAC'22), pages 1280–1283, 2022. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n
\n
@inproceedings{Miss22a,\n\t    author = {Misse-Chanabier, Pierre and Polito, Guillermo and Ducasse, St{\\'e}phane and Bouraqadi, Noury and Fabresse, Luc and Tesone, Pablo},\n\t    title = {Differential testing of simulation-based VM generators: automatic detection of VM generator semantic gaps between simulation and generated VMs},\n\t    booktitle = {Proceedings of the 37th ACM/SIGAPP Symposium on Applied Computing (SAC'22)},\n\t    pages = {1280--1283},\n\t    year = {2022},\n\t    keywords = {pharo-pub, lse-pub, virtualmachine, rmod, kzVirtualMachine},\n\t    hal-pdf = {https://hal.inria.fr/hal-03783301/document},\n\t    hal-url = {https://hal.inria.fr/hal-03783301},\n\t    hal-id = {hal-03783301}}\n\n\t  
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Differential Testing of Simulation-Based Virtual Machine Generators.\n \n \n \n\n\n \n Misse-Chanabier, P.; Polito, G.; Bouraqadi, N.; Ducasse, S.; Fabresse, L.; and Tesone, P.\n\n\n \n\n\n\n In International Conference on Software and Software Reuse (ICSR'22), pages 103–119, 2022. Springer\n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n
\n
@inproceedings{Miss22b,\n\t    author = {Misse-Chanabier, Pierre and Polito, Guillermo and Bouraqadi, Noury and Ducasse, St{\\'e}phane and Fabresse, Luc and Tesone, Pablo},\n\t    title = {Differential Testing of Simulation-Based Virtual Machine Generators},\n\t    booktitle = {International Conference on Software and Software Reuse (ICSR'22)},\n\t    pages = {103--119},\n\t    year = {2022},\n\t    organization = {Springer},\n\t    keywords = {pharo-pub, lse-pub, virtualmachine, rmod, kzVirtualMachine},\n\t    hal-pdf = {https://hal.inria.fr/hal-03783354/document},\n\t    hal-url = {https://hal.inria.fr/hal-03783354/},\n\t    hal-id = {hal-03783354}}\n\t\t\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Interpreter-guided Differential JIT Compiler Unit Testing.\n \n \n \n\n\n \n Polito, G.; Palumbo, N.; Tesone, P.; Labsari, S.; and Ducasse, S.\n\n\n \n\n\n\n In Programming Language Design and Implementation (PLDI'22), 2022. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Poli22a,\n\t\t  author = {Guillermo Polito and Nahuel Palumbo and Pablo Tesone and Soufyane Labsari and St\\'ephane Ducasse},\n\t\t  title = {{Interpreter-guided Differential JIT Compiler Unit Testing}},\n\t\t  booktitle = {Programming Language Design and Implementation (PLDI'22)},\n\t\t  year = {2022},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli22a-InterpreterGuided-PLDI-22.pdf},\n\t\t  hal-id = {hal-03607939},\n\t\t  hal-url = {https://hal.inria.fr/hal-03607939},\n\t\t  annote = {topconference},\n\t\t  keywords = {moose StefPub kzVM lse-pub}}\n\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Interpreter Register Autolocalisation: Improving the performance of efficient interpreters.\n \n \n \n\n\n \n Polito, G.; Tesone, P.; and Ducasse, S.\n\n\n \n\n\n\n In More VM internatlonal Workshop, 2022. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Poli22b,\n\t\t  author = {Guillermo Polito and Pablo Tesone and St\\'ephane Ducasse},\n\t\t  title = {Interpreter Register Autolocalisation: Improving the performance of efficient interpreters},\n\t\t  booktitle = {More VM internatlonal Workshop},\n\t\t  year = {2022},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli22b-MoreVM22-Autolocalisation.pdf},\n\t\t  hal-id = {hal-03594766},\n\t\t  annote = {internationworkshop},\n\t\t  keywords = {moose StefPub kzVM lse-pub}}\n\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Technical Report: Unanticipated Object Synchronisation for Dynamically-Typed Languages.\n \n \n \n \n\n\n \n Rogliano, T.; Polito, G.; Tesone, P.; Fabresse, L.; and Ducasse, S.\n\n\n \n\n\n\n Technical Report INRIA Lille - Nord Europe, September 2022.\n \n\n\n\n
\n\n\n\n \n \n \"TechnicalPaper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n  \n \n 1 download\n \n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@techreport{Rogl22a,\n\t\t  author = {Rogliano, Th{\\'e}o and Polito, Guillermo and Tesone, Pablo and Fabresse, Luc and Ducasse, St{\\'e}phane},\n\t\t  title = {Technical Report: Unanticipated Object Synchronisation for Dynamically-Typed Languages},\n\t\t  year = {2022},\n\t\t  url = {https://hal.archives-ouvertes.fr/hal-03781743},\n\t\t  pdf = {https://hal.archives-ouvertes.fr/hal-03781743/file/hal-version.pdf},\n\t\t  type = {Technical Report},\n\t\t  institution = {{INRIA Lille - Nord Europe}},\n\t\t  month = sep,\n\t\t  keywords = {Concurrency ; Channels ; Ownership ; Permission Transfer ; Dynamic Language},\n\t\t  hal-id = {hal-03781743}}\n\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Technical report: Object-centric Access Control Mechanisms in Dynamic Languages.\n \n \n \n \n\n\n \n Rogliano, T.\n\n\n \n\n\n\n Technical Report Inria Lille Nord Europe - Laboratoire CRIStAL - Université de Lille, September 2022.\n \n\n\n\n
\n\n\n\n \n \n \"TechnicalPaper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n  \n \n 1 download\n \n \n\n \n \n \n \n \n \n \n\n  \n \n \n\n\n\n
\n
@techreport{Rogl22b,\n\t\t  author = {Rogliano, Th{\\'e}o},\n\t\t  title = {Technical report: Object-centric Access Control Mechanisms in Dynamic Languages},\n\t\t  year = {2022},\n\t\t  url = {https://hal.archives-ouvertes.fr/hal-03784027},\n\t\t  pdf = {https://hal.archives-ouvertes.fr/hal-03784027/file/RR-UnanticipatedSynchro.pdf},\n\t\t  type = {Research Report},\n\t\t  institution = {{Inria Lille Nord Europe - Laboratoire CRIStAL - Universit{\\'e} de Lille}},\n\t\t  month = sep,\n\t\t  hal-id = {hal-03784027}}\n\t\t  \n\n\t\t  
\n
\n\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2021\n \n \n (6)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n Rotten Green Tests in Java, Pharo and Python An Empirical Study.\n \n \n \n\n\n \n Aranega, V.; Delplanque, J.; Martinez, M.; Black, A.; Ducasse, S.; Fuhrman, C.; Polito, G.; and Etien, A.\n\n\n \n\n\n\n Journal of Empirical Software Engineering. 2021.\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@article{Aran21a,\n    author = {Vincent Aranega and Julien Delplanque and Matias Martinez and Andrew Black and St\\'ephane Ducasse and Christopher Fuhrman and Guillermo Polito and  Anne Etien},\n    title = {Rotten Green Tests in Java, Pharo and Python An Empirical Study},\n    journal = {Journal of Empirical Software Engineering},\n    publisher = {Springer-Verlag},\n    year = {2021},\n    doi = {10.1007/s10664-021-10016-2},\n    pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Aran21a-RottenGreenTest-EmpiricalSoftwareEngineering.pdf},\n    hal-pdf = {https://hal.inria.fr/hal-03281836/document},\n    annote = {internationaljournal},\n    keywords = {stefPub kzChecking},\n    hal-id = {hal-03281836}}\n\n
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Cross-ISA Testing of the Pharo VM: Lessons Learned While Porting to ARMv8.\n \n \n \n \n\n\n \n Polito, G.; Tesone, P.; Ducasse, S.; Fabresse, L.; Rogliano, T.; Misse-Chanabier, P.; and Phillips, C. H.\n\n\n \n\n\n\n In Proceedings of the 18th international conference on Managed Programming Languages and Runtimes (MPLR '21), Münster, Germany, September 2021. \n \n\n\n\n
\n\n\n\n \n \n \"Cross-ISAPaper\n  \n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Poli21a,\n\t\t  author = {Polito, Guillermo and Tesone, Pablo and Ducasse, St{\\'e}phane and Fabresse, Luc and Rogliano, Th{\\'e}o and Misse-Chanabier, Pierre and Phillips, Carolina Hernandez},\n\t\t  title = {{Cross-ISA Testing of the Pharo VM: Lessons Learned While Porting to ARMv8}},\n\t\t  booktitle = {Proceedings of the 18th international conference on Managed Programming Languages and Runtimes (MPLR '21)},\n\t\t  year = {2021},\n\t\t  url = {https://hal.inria.fr/hal-03332033},\n\t\t  doi = {10.1145/3475738.3480715},\n\t\t  pdf = {https://hal.inria.fr/hal-03332033/file/Cross-ISA%20Testing%20of%20the%20Pharo%20VM.pdf},\n\t\t  address = {M{\\"u}nster, Germany},\n\t\t  month = sep,\n\t\t  annote = {internationalconference},\n\t\t  keywords = {rmod pharo lse-pub virtualmachine kzVM},\n\t\t  hal-id = {hal-03332033}}\n\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Static Basic Block Reordering Heuristics for Implicit Control Flow in Baseline JITs.\n \n \n \n\n\n \n Polito, G.; Ducasse, S.; and Tesone, P.\n\n\n \n\n\n\n Technical Report Inria, August 2021.\n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n\n\n\n
\n
@techReport{Poli21b,\n\t\t  author = {Polito, Guillermo and Ducasse, St{\\'e}phane and Tesone, Pablo},\n\t\t  title = {{Static Basic Block Reordering Heuristics for Implicit Control Flow in Baseline JITs}},\n\t\t  year = {2021},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli21b-StaticBasicBlock-TechReport.pdf},\n\t\t  hal-url = {https://hal.archives-ouvertes.fr/hal-03313586},\n\t\t  pdf2 = {https://hal.archives-ouvertes.fr/hal-03313586/file/main%20%281%29.pdf},\n\t\t  institution = {Inria},\n\t\t  annotate = {kzVM},\n\t\t  month = aug,\n\t\t  hal-id = {hal-03313586}}\n\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Analyzing Permission Transfer Channels for Dynamically Typed Languages.\n \n \n \n\n\n \n Rogliano, T.; Polito, G.; Fabresse, L.; and Ducasse, S.\n\n\n \n\n\n\n In DLS 2021 - 17th ACM SIGPLAN International Symposium on Dynamic Languages, Chicago, France, October 2021. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Rogl21a,\n\t\t  author = {Rogliano, Th{\\'e}o and Polito, Guillermo and Fabresse, Luc and Ducasse, St{\\'e}phane},\n\t\t  title = {{Analyzing Permission Transfer Channels for Dynamically Typed Languages}},\n\t\t  booktitle = {{DLS 2021 - 17th ACM SIGPLAN International Symposium on Dynamic Languages}},\n\t\t  year = {2021},\n\t\t  pdf = {https://hal.archives-ouvertes.fr/hal-03347573/file/hal-version.pdf},\n\t\t  hal-url = {https://hal.archives-ouvertes.fr/hal-03347573},\n\t\t  address = {Chicago, France},\n\t\t  annote = {internationalconference},\n\t\t  month = oct,\n\t\t  keywords = {Concurrency ; Channels ; Ownership ; Permission Transfer ; Dynamic Language},\n\t\t  hal-id = {hal-03347573}}\n\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Profiling Code Cache Behaviour via Events.\n \n \n \n \n\n\n \n Tesone, P.; Polito, G.; and Ducasse, S.\n\n\n \n\n\n\n In Managed Programming Languages and Runtimes (MPLR '21), Münster, Germany, September 2021. \n \n\n\n\n
\n\n\n\n \n \n \"ProfilingPaper\n  \n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Teso21a,\n\t\t\t  author = {Tesone, Pablo and Polito, Guillermo and Ducasse, St{\\'e}phane},\n\t\t\t  title = {{Profiling Code Cache Behaviour via Events}},\n\t\t\t  booktitle = {Managed Programming Languages and Runtimes (MPLR '21)},\n\t\t\t  year = {2021},\n\t\t\t  url = {https://hal.inria.fr/hal-03332040},\n\t\t\t  doi = {10.1145/3475738.3480720},\n\t\t\t  pdf = {https://hal.inria.fr/hal-03332040/file/Profiling%20Code%20Cache%20Behaviour%20via%20Events.pdf},\n\t\t\t  address = {M{\\"u}nster, Germany},\n\t\t\t  annote = {internationalconference},\n\t\t\t  month = sep,\n\t\t\t  keywords = {rmod lse-pub pharo virtualmachine kzTools kzVM},\n\t\t\t  hal-id = {hal-03332040}}\n\n\t\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Pharo Space and Time.\n \n \n \n \n\n\n \n Tesone, P.; and Polito, G.\n\n\n \n\n\n\n November 2021.\n \n\n\n\n
\n\n\n\n \n \n \"PharoPaper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n\n\n\n
\n
@misc{Teso21b,\n\t\t\t  author = {Tesone, Pablo and Polito, Guillermo},\n\t\t\t  title = {Pharo {{Space}} and {{Time}}},\n\t\t\t  year = {2021},\n\t\t\t  url = {https://github.com/tesonep/spaceAndTime},\n\t\t\t  month = nov,\n\t\t\t  abstract = {An small project to add some statistics generating code for used space and time for Pharo},\n\t\t\t  copyright = {GPL-3.0}}
\n
\n\n\n
\n An small project to add some statistics generating code for used space and time for Pharo\n
\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2020\n \n \n (8)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n Microdown: a Clean and extensible markup language to support Pharo documentation.\n \n \n \n\n\n \n Ducasse, S.; Dargaud, L.; and Polito, G.\n\n\n \n\n\n\n In Proceedings of the 2020 International Workshop on Smalltalk Technologies, 2020. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Duca20a,\n    author = {Ducasse, St\\'ephane and Dargaud, Laurine and Polito, Guillermo},\n    title = {Microdown: a Clean and extensible markup language to support Pharo documentation},\n    booktitle = {Proceedings of the 2020 International Workshop on Smalltalk Technologies},\n    year = {2020},\n    pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Duca20a-Microdown-IWST.pdf},\n    annote = {internationalworkshop},\n    keywords = {StefPub kzDesign},\n    hal-id = {hal-03137098},\n    hal-url = {https://hal.inria.fr/hal-03137098}}\n\n  
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Concurrent Programming in Pharo.\n \n \n \n \n\n\n \n Ducasse, S.; and Polito, G.\n\n\n \n\n\n\n 2020.\n \n\n\n\n
\n\n\n\n \n \n \"ConcurrentPaper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@booklet{Duca20y,\n    author = {St\\'ephane Ducasse and Guillermo Polito},\n    title = {Concurrent Programming in Pharo},\n    pages = {52},\n    publisher = {Square Bracket Associates},\n    year = {2020},\n    url = {http://books.pharo.org/booklet-ConcurrentProgramming/},\n    pdf = {http://books.pharo.org/booklet-ConcurrentProgramming/pdf/ConcurrentProgramming.pdf},\n    hal-id = {hal-03358770},\n    hal-pdf = {http://hal.inria.fr/hal-03358770/document},\n    annote = {booklet editor},\n    editor = {St\\'ephane Ducasse},\n    collection = {The Pharo Technology Collection},\n    keywords = {skipdoi kzPharo kzTools lse-pub}}\n\n  
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n A debugging approach for live Big Data applications.\n \n \n \n\n\n \n Marra, M.; Polito, G.; and Gonzalez Boix, E.\n\n\n \n\n\n\n Science of Computer Programming, 194: 102460. 2020.\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n \n \n \n \n \n \n\n\n\n
\n
@article{Marr20a,\n\t    author = {Matteo Marra and Guillermo Polito and Elisa {Gonzalez Boix}},\n\t    title = {A debugging approach for live Big Data applications},\n\t    journal = {Science of Computer Programming},\n\t    volume = {194},\n\t    pages = {102460},\n\t    year = {2020},\n\t    doi = {10.1016/j.scico.2020.102460},\n\t    pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Marr20a-SCICO20.pdf},\n\t    annote = {internationaljournal},\n\t    issn = {0167-6423},\n\t    hal-id = {hal-03358830},\n\t    keywords = {Online debugging, Big Data, Map/reduce, Live programming},\n\t    abstract = {Many frameworks exist for programmers to develop and deploy Big Data applications such as Hadoop Map/Reduce and Apache Spark. However, very little debugging support is currently provided in those frameworks. When an error occurs, developers are lost in trying to understand what has happened from the information provided in log files. Recently, new solutions allow developers to record & replay the application execution, but replaying is not always affordable when hours of computation need to be re-executed. In this paper, we present an online approach that allows developers to debug Big Data applications in isolation by moving the debugging session to an external process when a halting point is reached. We introduce IDRAMR, our prototype implementation in Pharo. IDRAMR centralizes the debugging of parallel applications by introducing novel debugging concepts, such as composite debugging events, and the ability to dynamically update both the code of the debugged application and the same configuration of the running framework. We validate our approach by debugging both application and configuration failures for two driving scenarios. The scenarios are implemented and executed using Port, our Map/Reduce framework for Pharo, also introduced in this paper.}}\n\n\t  
\n
\n\n\n
\n Many frameworks exist for programmers to develop and deploy Big Data applications such as Hadoop Map/Reduce and Apache Spark. However, very little debugging support is currently provided in those frameworks. When an error occurs, developers are lost in trying to understand what has happened from the information provided in log files. Recently, new solutions allow developers to record & replay the application execution, but replaying is not always affordable when hours of computation need to be re-executed. In this paper, we present an online approach that allows developers to debug Big Data applications in isolation by moving the debugging session to an external process when a halting point is reached. We introduce IDRAMR, our prototype implementation in Pharo. IDRAMR centralizes the debugging of parallel applications by introducing novel debugging concepts, such as composite debugging events, and the ability to dynamically update both the code of the debugged application and the same configuration of the running framework. We validate our approach by debugging both application and configuration failures for two driving scenarios. The scenarios are implemented and executed using Port, our Map/Reduce framework for Pharo, also introduced in this paper.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Framework-aware debugging with stack tailoring.\n \n \n \n\n\n \n Marra, M.; Polito, G.; and Boix, E. G.\n\n\n \n\n\n\n In Flatt, M., editor(s), International Symposium on Dynamic Languages (DSL 20), pages 71–84, 2020. ACM\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n\n\n\n
\n
@inproceedings{Marr20b,\n\t    author = {Matteo Marra and Guillermo Polito and Elisa Gonzalez Boix},\n\t    title = {Framework-aware debugging with stack tailoring},\n\t    booktitle = {International Symposium on Dynamic Languages (DSL 20)},\n\t    pages = {71--84},\n\t    publisher = {ACM},\n\t    year = {2020},\n\t    doi = {10.1145/3426422.3426982},\n\t    pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Marr20b-DSL-Stack.pdf},\n\t    hal-id = {hal-03043779},\n\t    editor = {Matthew Flatt}}\n\t  \n\t  \n\t  
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Manage Your Code with Git and Iceberg.\n \n \n \n \n\n\n \n Polito, G.; Ducasse, S.; and Oliveira, A.\n\n\n \n\n\n\n 2020.\n \n\n\n\n
\n\n\n\n \n \n \"ManagePaper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@booklet{Poli20y,\n\t\t  author = {Guillermo Polito and St\\'ephane Ducasse and Allex Oliveira},\n\t\t  title = {Manage Your Code with Git and Iceberg},\n\t\t  pages = {61},\n\t\t  publisher = {Square Bracket Associates},\n\t\t  year = {2020},\n\t\t  url = {http://books.pharo.org/booklet-uffi/},\n\t\t  pdf = {http://books.pharo.org/booklet-ManageCode/pdf/2020-05-12-ManageCode.pdf},\n\t\t  hal-id = {hal-03358628},\n\t\t  hal-pdf = {https://hal.inria.fr/hal-03358628/document},\n\t\t  annote = {booklet editor},\n\t\t  editor = {St\\'ephane Ducasse},\n\t\t  collection = {The Pharo Technology Collection},\n\t\t  keywords = {skipdoi kzPharo kzTools lse-pub}}\n\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Unified FFI - Calling Foreign Functions from Pharo.\n \n \n \n \n\n\n \n Polito, G.; Ducasse, S.; Tesone, P.; and Brunzie, T.\n\n\n \n\n\n\n 2020.\n \n\n\n\n
\n\n\n\n \n \n \"UnifiedPaper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@booklet{Poli20z,\n\t\t  author = {Guillermo Polito and St\\'ephane Ducasse and Pablo Tesone and Ted Brunzie},\n\t\t  title = {Unified FFI - Calling Foreign Functions from Pharo},\n\t\t  pages = {67},\n\t\t  publisher = {Square Bracket Associates},\n\t\t  year = {2020},\n\t\t  url = {http://books.pharo.org/booklet-uffi/},\n\t\t  pdf = {http://books.pharo.org/booklet-uffi/pdf/2020-02-12-uFFI-V1.0.1.pdf},\n\t\t  hal-id = {hal-03358607},\n\t\t  hal-pdf = {https://hal.inria.fr/hal-03358607/document},\n\t\t  annote = {booklet editor},\n\t\t  editor = {St\\'ephane Ducasse},\n\t\t  collection = {The Pharo Technology Collection},\n\t\t  keywords = {skipdoi kzPharo kzTools lse-pub}}\n\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Preserving Instance State during Refactorings in Live Environments.\n \n \n \n\n\n \n Tesone, P.; Polito, G.; Fabresse, L.; Bouraqadi, N.; and Ducasse, S.\n\n\n \n\n\n\n Future Generation Computer Systems, 110: 1-17. 2020.\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@article{Teso20a,\n\t\t\t  author = {Pablo Tesone and Guillermo Polito and Luc Fabresse and Noury Bouraqadi and St\\'ephane Ducasse},\n\t\t\t  title = {Preserving Instance State during Refactorings in Live Environments},\n\t\t\t  journal = {Future Generation Computer Systems},\n\t\t\t  volume = {110},\n\t\t\t  pages = {1-17},\n\t\t\t  publisher = {Elsevier},\n\t\t\t  year = {2020},\n\t\t\t  doi = {10.1016/j.future.2020.04.010},\n\t\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Teso20a-FutureGeneration-PreservingInstance.pdf},\n\t\t\t  hal-id = {hal-02541754},\n\t\t\t  annote = {internationaljournal},\n\t\t\t  hal-pdf = {https://hal.archives-ouvertes.fr/hal-02541754/file/main.pdf},\n\t\t\t  keywords = {pharo lse-pub kzLanguageDesign}}\n\n\t\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n A new modular implementation for Stateful Traits.\n \n \n \n\n\n \n Tesone, P.; Ducasse, S.; Polito, G.; Fabresse, L.; and Bouraqadi, N.\n\n\n \n\n\n\n Science of Computer Programming, 195: 1–37. 2020.\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@article{Teso20b,\n\t\t\t  author = {Pablo Tesone and St\\'ephane Ducasse and Guillermo Polito and Luc Fabresse and Noury Bouraqadi},\n\t\t\t  title = {A new modular implementation for Stateful Traits},\n\t\t\t  journal = {Science of Computer Programming},\n\t\t\t  volume = {195},\n\t\t\t  pages = {1--37},\n\t\t\t  publisher = {Elsevier},\n\t\t\t  year = {2020},\n\t\t\t  doi = {10.1016/j.scico.2020.102470},\n\t\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Teso20b-SCP-StatefulTraits.pdf},\n\t\t\t  hal-id = {hal-02541842},\n\t\t\t  annote = {internationaljournal},\n\t\t\t  hal-pdf = {https://hal.archives-ouvertes.fr/hal-02541842/file/main.pdf},\n\t\t\t  keywords = {pharo lse-pub kzLanguageDesign}}\n\n\t\t\t
\n
\n\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2019\n \n \n (8)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n Towards Scalable Blockchain Analysis.\n \n \n \n\n\n \n Bragagnolo, S.; Marra, M.; Polito, G.; and Boix, E. G.\n\n\n \n\n\n\n In 2019 IEEE/ACM 2nd International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB), pages 1-7, 2019. \n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n\n\n\n
\n
@inproceedings{Brag19,\n  author = {Santiago Bragagnolo and Matteo Marra and Guillermo Polito and Elisa Gonzalez Boix},\n  title = {Towards Scalable Blockchain Analysis},\n  booktitle = {2019 IEEE/ACM 2nd International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB)},\n  pages = {1-7},\n  year = {2019},\n  doi = {10.1109/WETSEB.2019.00007},\n  hal-id = {inria-02058008},\n  annote = {internationalworkshop},\n  abstract = {Analysing the blockchain is becoming more and more relevant for detecting attacks and frauds on cryptocurrency exchanges and smart contract activations. However, this is a challenging task due to the continuous growth of the blockchain. For example, in early 2017 Ethereum was estimated to contain approximately 300GB of data [1], a number that keeps growing day after day. In order to analyse such ever-growing amount of data, this paper argues that blockchain analysis should be treated as a novel type of application for Big Data platforms. In this paper we explore the application of parallelization techniques from the Big Data domain, in particular Map/Reduce, to extract and analyse information from the blockchain. We show that our approach significantly improves the index generation by 7.77 times, with a setup of 20 worker nodes, 1 Ethereum node and 1 Database node. We also share our findings of our massively parallel setup for querying Ethereum in terms of architecture and the bottlenecks. This should help researchers setup similar infrastructures for analysing the blockchain in the future.}}\n  \n 
\n
\n\n\n
\n Analysing the blockchain is becoming more and more relevant for detecting attacks and frauds on cryptocurrency exchanges and smart contract activations. However, this is a challenging task due to the continuous growth of the blockchain. For example, in early 2017 Ethereum was estimated to contain approximately 300GB of data [1], a number that keeps growing day after day. In order to analyse such ever-growing amount of data, this paper argues that blockchain analysis should be treated as a novel type of application for Big Data platforms. In this paper we explore the application of parallelization techniques from the Big Data domain, in particular Map/Reduce, to extract and analyse information from the blockchain. We show that our approach significantly improves the index generation by 7.77 times, with a setup of 20 worker nodes, 1 Ethereum node and 1 Database node. We also share our findings of our massively parallel setup for querying Ethereum in terms of architecture and the bottlenecks. This should help researchers setup similar infrastructures for analysing the blockchain in the future.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Rotten Green Tests.\n \n \n \n\n\n \n Delplanque, J.; Ducasse, S.; Black, A. P.; Polito, G.; and Etien, A.\n\n\n \n\n\n\n In 2019 International Conference on Software Engineering (ICSE), pages 500–511, 2019. IEEE/ACM\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Delp19a,\n  author = {Delplanque, Julien and Ducasse, St\\'ephane and Black, Andrew P. and Polito, Guillermo and Etien, Anne},\n  title = {Rotten Green Tests},\n  booktitle = {2019 International Conference on Software Engineering (ICSE)},\n  pages = {500--511},\n  publisher = {IEEE/ACM},\n  year = {2019},\n  doi = {10.1109/ICSE.2019.00062},\n  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Delp19a-RottenGreenTests-ICSE2019-v2.pdf},\n  abstract = {Unit tests are a tenant of agile programming methodologies, and are widely used to improve code quality and prevent code regression. A green (passing) test is usually taken as a robust sign that the code under test is valid. However, some green tests contain assertions that are never executed. We call such tests Rotten Green Tests. Rotten Green Tests represent a case worse than a broken test: they report that the code under test is valid, but in fact do not test that validity. We describe an approach to identify rotten green tests by combining simple static and dynamic call-site analyses. Our approach takes into account test helper methods, inherited helpers, and trait compositions, and has been implemented in a tool called DrTest. DrTest reports no false negatives, yet it still reports some false positives due to conditional use or multiple test contexts. Using DrTest we conducted an empirical evaluation of 19,905 real test cases in mature projects of the Pharo ecosystem. The results of the evaluation show that the tool is effective; it detected 294 tests as rotten-green tests that contain assertions that are not executed. Some rotten tests have been "sleeping" in Pharo for at least 5 years.},\n  institution = {Inria},\n  keywords = {lse-pub kzChecking},\n  hal-id = {hal-02002346},\n  hal-url = {https://hal.inria.fr/hal-02002346},\n  annote = {topconference internationalconference}}\n\n
\n
\n\n\n
\n Unit tests are a tenant of agile programming methodologies, and are widely used to improve code quality and prevent code regression. A green (passing) test is usually taken as a robust sign that the code under test is valid. However, some green tests contain assertions that are never executed. We call such tests Rotten Green Tests. Rotten Green Tests represent a case worse than a broken test: they report that the code under test is valid, but in fact do not test that validity. We describe an approach to identify rotten green tests by combining simple static and dynamic call-site analyses. Our approach takes into account test helper methods, inherited helpers, and trait compositions, and has been implemented in a tool called DrTest. DrTest reports no false negatives, yet it still reports some false positives due to conditional use or multiple test contexts. Using DrTest we conducted an empirical evaluation of 19,905 real test cases in mature projects of the Pharo ecosystem. The results of the evaluation show that the tool is effective; it detected 294 tests as rotten-green tests that contain assertions that are not executed. Some rotten tests have been \"sleeping\" in Pharo for at least 5 years.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Sindarin: A Versatile Scripting API for the Pharo Debugger.\n \n \n \n\n\n \n Dupriez, T.; Polito, G.; Costiou, S.; Aranega, V.; and Ducasse, S.\n\n\n \n\n\n\n In International Symposium on Dynamic Languages (DSL'19), pages 67–79, 2019. ACM\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Dupr19a,\n  author = {Dupriez, Thomas and Polito, Guillermo and Costiou, Steven and Aranega, Vincent and Ducasse, St\\'ephane},\n  title = {Sindarin: A Versatile Scripting API for the Pharo Debugger},\n  booktitle = {International Symposium on Dynamic Languages (DSL'19)},\n  pages = {67--79},\n  publisher = {ACM},\n  year = {2019},\n  doi = {10.1145/3359619},\n  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Dupr19a-DLS2019-Official.pdf},\n  hal-url = {https://hal.archives-ouvertes.fr/hal-02280915v1},\n  hal-id = {hal-02280915},\n  annote = {internationalconference},\n  keywords = {StefPub kzTools}}\n  \n  
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n DPPy: DPP Sampling with Python.\n \n \n \n \n\n\n \n Gautier, G.; Polito, G.; Bardenet, R.; and Valko, M.\n\n\n \n\n\n\n Journal of Machine Learning Research, 20(180): 1-7. 2019.\n \n\n\n\n
\n\n\n\n \n \n \"DPPy:Paper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n\n\n\n
\n
@article{Gaut19a,\n    author = {Guillaume Gautier and Guillermo Polito and R{{\\'e}}mi Bardenet and Michal Valko},\n    title = {DPPy: DPP Sampling with Python},\n    journal = {Journal of Machine Learning Research},\n    volume = {20},\n    pages = {1-7},\n    year = {2019},\n    url = {http://jmlr.org/papers/v20/19-179.html},\n    number = {180}}\n\t\n\n\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Challenges in Debugging Bootstraps of Reflective Kernels.\n \n \n \n\n\n \n Hernández Phillips, C.; Polito, G.; Fabresse, L.; Ducasse, S.; Bouraqadi, N.; and Tesone, P.\n\n\n \n\n\n\n In IWST19 - International workshop on Smalltalk Technologies, 2019. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Hern19a,\n\t  author = {Hern\\'andez Phillips, Carolina and Guillermo Polito and Luc Fabresse and  St\\'ephane Ducasse and Noury Bouraqadi and Pablo Tesone},\n\t  title = {Challenges in Debugging Bootstraps of Reflective Kernels},\n\t  booktitle = {IWST19 - International workshop on Smalltalk Technologies},\n\t  year = {2019},\n\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Hern19a-IWST-Bootstrapping.pdf},\n\t  hal-id = {hal-02297710},\n\t  hal-pdf = {https://hal.archives-ouvertes.fr/hal-02297710/document/},\n\t  annote = {internationalworkshop},\n\t  keywords = {IoT ; bootstrap ; language kernels}}\n\t\n\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Illicium A modular transpilation toolchain from Pharo to C.\n \n \n \n\n\n \n Misse-Chanabier, P.; Aranega, V.; Polito, G.; and Ducasse, S.\n\n\n \n\n\n\n In International workshop of Smalltalk Technologies (IWST'19), Köln, Germany, August 2019. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Miss19a,\n\t    author = {Misse-Chanabier, Pierre and Aranega, Vincent and Polito, Guillermo and Ducasse, St\\'ephane},\n\t    title = {Illicium A modular transpilation toolchain from Pharo to C},\n\t    booktitle = {International workshop of Smalltalk Technologies (IWST'19)},\n\t    year = {2019},\n\t    pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Miss19a-IWST-Transpilation.pdf},\n\t    address = {K{\\"o}ln, Germany},\n\t    month = aug,\n\t    annote = {internationalworkshop},\n\t    keywords = {kzVM lse-pub},\n\t    hal-pdf = {https://hal.archives-ouvertes.fr/hal-02297860/file/final_submission.pdf},\n\t    hal-url = {https://hal.archives-ouvertes.fr/hal-02297860},\n\t    hal-id = {hal-02297860}}\n\n\t  
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n GildaVM: a Non-Blocking I/O Architecture for the Cog VM.\n \n \n \n \n\n\n \n Polito, G.; Tesone, P.; Miranda, E.; and Simmons, D.\n\n\n \n\n\n\n In International Workshop on Smalltalk Technologies, Cologne, Germany, August 2019. \n \n\n\n\n
\n\n\n\n \n \n \"GildaVM:Paper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Poli19a,\n\t\t  author = {Polito, Guillermo and Tesone, Pablo and Miranda, Eliot and Simmons, David},\n\t\t  title = {GildaVM: a Non-Blocking I/O Architecture for the Cog VM},\n\t\t  booktitle = {{International Workshop on Smalltalk Technologies}},\n\t\t  year = {2019},\n\t\t  url = {https://hal.archives-ouvertes.fr/hal-02379275},\n\t\t  address = {Cologne, Germany},\n\t\t  month = aug,\n\t\t  annote = {internationalworkshop},\n\t\t  keywords = {lse-pub virtual machines ; multhreading ; non-blocking I/O ; foreign function calls},\n\t\t  hal-id = {hal-02379275}}\n\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Towards easy program migration using language virtualization.\n \n \n \n \n\n\n \n Rogliano, T.; Polito, G.; and Tesone, P.\n\n\n \n\n\n\n In International Workshop of Smalltalk Technology 2019, Köln, Germany, August 2019. \n \n\n\n\n
\n\n\n\n \n \n \"TowardsPaper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Rogl19a,\n\t\t  author = {Rogliano, Th{\\'e}o and Polito, Guillermo and Tesone, Pablo},\n\t\t  title = {{Towards easy program migration using language virtualization}},\n\t\t  booktitle = {{International Workshop of Smalltalk Technology 2019}},\n\t\t  year = {2019},\n\t\t  url = {https://hal.archives-ouvertes.fr/hal-02297756},\n\t\t  address = {K{\\"o}ln, Germany},\n\t\t  month = aug,\n\t\t  annote = {internationalworkshop},\n\t\t  keywords = {Migration ; modularity ; virtualization; lse-pub},\n\t\t  hal-pdf = {https://hal.archives-ouvertes.fr/hal-02297756/file/TowardsEasyVirtualization.pdf},\n\t\t  hal-id = {hal-02297756}}\n\n\t\t
\n
\n\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2018\n \n \n (6)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n Rotten Green Tests: a First Analysis.\n \n \n \n\n\n \n Delplanque, J.; Ducasse, S.; Black, A. P.; and Polito, G.\n\n\n \n\n\n\n Technical Report Inria, 2018.\n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@techreport{Delp18b,\n   author = {Delplanque, Julien and Ducasse, St\\'ephane and Black, Andrew P. and Polito, Guillermo},\n   title = {Rotten Green Tests: a First Analysis},\n   year = {2018},\n   pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers//Delp18b-RottenTests.pdf},\n   annote = {techreport},\n   abstract = {Unit tests are a tenant of agile programming methodologies, and are widely used to improve code quality and prevent code regression. A passing (green) test is usually taken as a robust sign that the code under test is valid. However, we have noticed that some green tests contain assertions that are never executed; these tests pass not because they assert properties that are true, but because they assert nothing at all. We call such tests Rotten Green Tests. Rotten Green Tests represent a worst case: they report that the code under test is valid, but in fact do nothing to test that validity, beyond checking that the code does not crash. We describe an approach to identify rotten green tests by combining simple static and dynamic analyses. Our approach takes into account test helper methods, inherited helpers, and trait compositions, and has been implemented in a tool called DrTest. We have applied DrTest to several test suites in Pharo 7.0, and identified many rotten tests, including some that have been " sleeping " in Pharo for at least 5 years.},\n   institution = {Inria},\n   keywords = {moose StefPub kzChecking kzTools lse-pub},\n   hal-id = {hal-01819302}}\n\n\n
\n
\n\n\n
\n Unit tests are a tenant of agile programming methodologies, and are widely used to improve code quality and prevent code regression. A passing (green) test is usually taken as a robust sign that the code under test is valid. However, we have noticed that some green tests contain assertions that are never executed; these tests pass not because they assert properties that are true, but because they assert nothing at all. We call such tests Rotten Green Tests. Rotten Green Tests represent a worst case: they report that the code under test is valid, but in fact do nothing to test that validity, beyond checking that the code does not crash. We describe an approach to identify rotten green tests by combining simple static and dynamic analyses. Our approach takes into account test helper methods, inherited helpers, and trait compositions, and has been implemented in a tool called DrTest. We have applied DrTest to several test suites in Pharo 7.0, and identified many rotten tests, including some that have been \" sleeping \" in Pharo for at least 5 years.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Physche: A Little Scheme in Pharo.\n \n \n \n \n\n\n \n Ducasse, S.; and Polito, G.\n\n\n \n\n\n\n 2018.\n \n\n\n\n
\n\n\n\n \n \n \"Physche:Paper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@booklet{Duca18d,\n  author = {St\\'ephane Ducasse and Guillermo Polito},\n  title = {Physche: A Little Scheme in Pharo},\n  pages = {50},\n  publisher = {Square Bracket Associates},\n  year = {2018},\n  url = {http://books.pharo.org},\n  pdf = {http://rmod-files.lille.inria.fr/Team/Books/2018-08-28-Physche.pdf},\n  annote = {booklet editor},\n  editor = {St\\'ephane Ducasse},\n  collection = {The Pharo TextBook Collection},\n  keywords = {kzSmalltalk lse-pub kzVulgarisation},\n  hal-id = {hal-01900327}}\n  \n  
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Out-Of-Place debugging: a debugging architecture to reduce debugging interference.\n \n \n \n \n\n\n \n Marra, M.; Polito, G.; and Gonzalez Boix, E.\n\n\n \n\n\n\n The Art, Science, and Engineering of Programming, 3(2). November 2018.\n \n\n\n\n
\n\n\n\n \n \n \"Out-Of-PlacePaper\n  \n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@article{Marr18a,\n\t    author = {Marra, Matteo and Polito, Guillermo and Gonzalez Boix, Elisa},\n\t    title = {{Out-Of-Place debugging: a debugging architecture to reduce debugging interference}},\n\t    journal = {{The Art, Science, and Engineering of Programming}},\n\t    volume = {3},\n\t    publisher = {{aosa, Inc.}},\n\t    year = {2018},\n\t    url = {https://hal.inria.fr/hal-01952790},\n\t    doi = {10.22152/programming-journal.org/2019/3/3},\n\t    pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Marr18a-Programming18-OutOfPlaceDebugging.pdf},\n\t    annote = {internationaljournal},\n\t    abstract = {Context Recent studies show that developers spend most of their programming time testing, verifying and debugging software. As applications become more and more complex, developers demand more advanced debugging support to ease the software development process. Inquiry Since the 70's many debugging solutions have been introduced. Amongst them, online debuggers provide good insight on the conditions that led to a bug, allowing inspection and interaction with the variables of the program. However, most of the online debugging solutions introduce debugging interference to the execution of the program, i.e. pauses, latency, and evaluation of code containing side-effects. Approach This paper investigates a novel debugging technique called out-of-place debugging. The goal is to minimize the debugging interference characteristic of online debugging while allowing online remote capabilities. An out-of-place debugger transfers the program execution and application state from the debugged application to the debugger application, each running in a different process. Knowledge On the one hand, out-of-place debugging allows developers to debug applications remotely, overcoming the need of physical access to the machine where the debugged application is running. On the other hand, debugging happens locally on the remote machine avoiding latency. That makes it suitable to be deployed on a distributed system and handle the debugging of several processes running in parallel. Grounding We implemented a concrete out-of-place debugger for the Pharo Smalltalk programming language. We show that our approach is practical by running several benchmarks, comparing our approach with a classic remote online debugger. We show that our prototype debugger outperforms a traditional remote debugger by 1000 times in several scenarios. Moreover, we show that the presence of our debugger does not impact the overall performance of an application. Importance This work combines remote debugging with the debugging experience of a local online debugger. Out-of-place debugging is the first online debugging technique that can minimize debugging interference while debugging a remote application. Yet, it still keeps the benefits of online debugging (e.g., step-by-step execution). This makes the technique suitable for modern applications which are increasingly parallel, distributed and reactive to streams of data from various sources like sensors, UI, network, etc.},\n\t    number = {2},\n\t    month = nov,\n\t    keywords = {debugging tools ; online debugging ; remote debugging ; distributed systems; lse-pub; pharo},\n\t    hal-id = {hal-01952790}}\n\n\t  
\n
\n\n\n
\n Context Recent studies show that developers spend most of their programming time testing, verifying and debugging software. As applications become more and more complex, developers demand more advanced debugging support to ease the software development process. Inquiry Since the 70's many debugging solutions have been introduced. Amongst them, online debuggers provide good insight on the conditions that led to a bug, allowing inspection and interaction with the variables of the program. However, most of the online debugging solutions introduce debugging interference to the execution of the program, i.e. pauses, latency, and evaluation of code containing side-effects. Approach This paper investigates a novel debugging technique called out-of-place debugging. The goal is to minimize the debugging interference characteristic of online debugging while allowing online remote capabilities. An out-of-place debugger transfers the program execution and application state from the debugged application to the debugger application, each running in a different process. Knowledge On the one hand, out-of-place debugging allows developers to debug applications remotely, overcoming the need of physical access to the machine where the debugged application is running. On the other hand, debugging happens locally on the remote machine avoiding latency. That makes it suitable to be deployed on a distributed system and handle the debugging of several processes running in parallel. Grounding We implemented a concrete out-of-place debugger for the Pharo Smalltalk programming language. We show that our approach is practical by running several benchmarks, comparing our approach with a classic remote online debugger. We show that our prototype debugger outperforms a traditional remote debugger by 1000 times in several scenarios. Moreover, we show that the presence of our debugger does not impact the overall performance of an application. Importance This work combines remote debugging with the debugging experience of a local online debugger. Out-of-place debugging is the first online debugging technique that can minimize debugging interference while debugging a remote application. Yet, it still keeps the benefits of online debugging (e.g., step-by-step execution). This makes the technique suitable for modern applications which are increasingly parallel, distributed and reactive to streams of data from various sources like sensors, UI, network, etc.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Scoped Extension Methods in Dynamically-Typed Languages.\n \n \n \n\n\n \n Polito, G.; Ducasse, S.; Fabresse, L.; and Teruel, C.\n\n\n \n\n\n\n The Art, Science, and Engineering of Programming, 2(1): 1-26. August 2018.\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@article{Poli17d,\n\t\t  author = {Guillermo Polito and St\\'ephane Ducasse and Luc Fabresse and Camille Teruel},\n\t\t  title = {Scoped Extension Methods in Dynamically-Typed Languages},\n\t\t  journal = {The Art, Science, and Engineering of Programming},\n\t\t  volume = {2},\n\t\t  pages = {1-26},\n\t\t  year = {2018},\n\t\t  doi = {10.22152/programming-journal.org/2018/2/1},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli17d-Programming-ScopedExtensions.pdf},\n\t\t  annote = {internationaljournal},\n\t\t  number = {1},\n\t\t  month = aug,\n\t\t  keywords = {lse-pub kzLanguageDesign},\n\t\t  hal-id = {hal-01609310}}\n\n\t\t
\n
\n\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Dynamic Software Update from Development to Production.\n \n \n \n\n\n \n Tesone, P.; Polito, G.; Fabresse, L.; Bouraqadi, N.; and Ducasse, S.\n\n\n \n\n\n\n Journal of Object Technology, 17: 1–36. 2018.\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@article{Teso17b,\n\t\t    author = {Pablo Tesone and Guillermo Polito and Luc Fabresse and Noury Bouraqadi and St\\'ephane Ducasse},\n\t\t    title = {Dynamic Software Update from Development to Production},\n\t\t    journal = {Journal of Object Technology},\n\t\t    volume = {17},\n\t\t    pages = {1--36},\n\t\t    publisher = {AITO - Association Internationale pour les Technologies Objets},\n\t\t    year = {2018},\n\t\t    doi = {10.5381/jot.2018.17.1.a2},\n\t\t    pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Teso17b-JOT-DynamicUpdate.pdf},\n\t\t    annote = {internationaljournal},\n\t\t    abstract = {Dynamic Software Update (DSU) solutions update applications while they are executing. These solutions are typically used in production to minimize application downtime, or in integrated development environments to provide live programming support. Each of these scenarios presents different challenges, forcing existing solutions to be designed with only one of these use cases in mind. For example, DSUs for live programming typically do not implement safe point detection or instance migration, while production DSUs require manual generation of patches and lack IDE integration. Also, these solutions have limited ability to update themselves or the language core libraries, and some of them present execution penalties outside the update window. We propose a DSU (gDSU) that works for both live programming and production environments. Our solution implements safe update point detection using call stack manipulation and a reusable instance migration mechanism to minimize manual intervention in patch generation. Moreover, it also offers updates of core language libraries and the update mechanism itself. This is achieved by the incremental copy of the modified objects and an atomic commit operation. We show that our solution does not affect the global performance of the application and it presents only a run-time penalty during the update window. Our solution is able to apply an update impacting 100,000 instances in 1 second. In this 1 second, only during 250 milliseconds the application is not responsive. The rest of the time the application runs normally while gDSU is looking for the safe update point. The update only requires to copy the elements that are modified.},\n\t\t    keywords = {pharo lse-pub},\n\t\t    hal-id = {hal-01920362}}\n\n\t\t  
\n
\n\n\n
\n Dynamic Software Update (DSU) solutions update applications while they are executing. These solutions are typically used in production to minimize application downtime, or in integrated development environments to provide live programming support. Each of these scenarios presents different challenges, forcing existing solutions to be designed with only one of these use cases in mind. For example, DSUs for live programming typically do not implement safe point detection or instance migration, while production DSUs require manual generation of patches and lack IDE integration. Also, these solutions have limited ability to update themselves or the language core libraries, and some of them present execution penalties outside the update window. We propose a DSU (gDSU) that works for both live programming and production environments. Our solution implements safe update point detection using call stack manipulation and a reusable instance migration mechanism to minimize manual intervention in patch generation. Moreover, it also offers updates of core language libraries and the update mechanism itself. This is achieved by the incremental copy of the modified objects and an atomic commit operation. We show that our solution does not affect the global performance of the application and it presents only a run-time penalty during the update window. Our solution is able to apply an update impacting 100,000 instances in 1 second. In this 1 second, only during 250 milliseconds the application is not responsive. The rest of the time the application runs normally while gDSU is looking for the safe update point. The update only requires to copy the elements that are modified.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Implementing Modular Class-based Reuse Mechanisms on Top of a Single Inheritance VM.\n \n \n \n \n\n\n \n Tesone, P.; Polito, G.; Fabresse, L.; Bouraqadi, N.; and Ducasse, S.\n\n\n \n\n\n\n In Symposium on Applied Computing (SAC'18), Pau, France, April 2018. \n \n\n\n\n
\n\n\n\n \n \n \"ImplementingPaper\n  \n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Teso18a,\n\t\t    author = {Tesone, Pablo and Polito, Guillermo and Fabresse, Luc and Bouraqadi, Noury and Ducasse, St\\'ephane},\n\t\t    title = {Implementing Modular Class-based Reuse Mechanisms on Top of a Single Inheritance VM},\n\t\t    booktitle = {Symposium on Applied Computing (SAC'18)},\n\t\t    year = {2018},\n\t\t    url = {https://hal.archives-ouvertes.fr/hal-01812612},\n\t\t    doi = {10.1145/3167132.3167244},\n\t\t    pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Teso18a-SAC-ExtensibleMetaclasses.pdf},\n\t\t    annote = {internationalconference},\n\t\t    abstract = {Code reuse is a good strategy to avoid code duplication and speed up software development. Existing object-oriented programming languages propose different ways of combining existing and new code such as e.g., single inheritance, multiple inheritance, Traits or Mixins. All these mechanisms present advantages and disadvantages and there are situations that require the use of one over the other. To avoid the complexity of implementing a virtual machine (VM), many of these mechanisms are often implemented on top of an existing high-performance VM, originally meant to run a single inheritance object-oriented language. These implementations require thus a mapping between the programming model they propose and the execution model provided by the VM. Moreover, reuse mechanisms are not usually composable, nor it is easy to implement new ones for a given language. In this paper, we propose a modular meta-level runtime architecture to implement and combine different code reuse mechanisms. This architecture supports dynamic combination of several mechanisms without affecting runtime performance in a single inheritance object-oriented VM. It includes moreover a reflective Meta-Object Protocol to query and modify classes using the programming logical model instead of the underlying low-level runtime model. Thanks to this architecture, we implemented Stateful Traits, Mixins, CLOS multiple inheritance, CLOS Standard Method Combinations and Beta prefixing in a modular and composable way.},\n\t\t    address = {Pau, France},\n\t\t    month = apr,\n\t\t    keywords = {lse-pub pharo kzInfrastructure kzLanguage},\n\t\t    hal-id = {hal-01812612}}\n\t\t\t\n\n\t\t\t
\n
\n\n\n
\n Code reuse is a good strategy to avoid code duplication and speed up software development. Existing object-oriented programming languages propose different ways of combining existing and new code such as e.g., single inheritance, multiple inheritance, Traits or Mixins. All these mechanisms present advantages and disadvantages and there are situations that require the use of one over the other. To avoid the complexity of implementing a virtual machine (VM), many of these mechanisms are often implemented on top of an existing high-performance VM, originally meant to run a single inheritance object-oriented language. These implementations require thus a mapping between the programming model they propose and the execution model provided by the VM. Moreover, reuse mechanisms are not usually composable, nor it is easy to implement new ones for a given language. In this paper, we propose a modular meta-level runtime architecture to implement and combine different code reuse mechanisms. This architecture supports dynamic combination of several mechanisms without affecting runtime performance in a single inheritance object-oriented VM. It includes moreover a reflective Meta-Object Protocol to query and modify classes using the programming logical model instead of the underlying low-level runtime model. Thanks to this architecture, we implemented Stateful Traits, Mixins, CLOS multiple inheritance, CLOS Standard Method Combinations and Beta prefixing in a modular and composable way.\n
\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2017\n \n \n (5)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n Analysis and exploration for new generation debuggers.\n \n \n \n\n\n \n Dupriez, T.; Polito, G.; and Ducasse, S.\n\n\n \n\n\n\n In Proceedings of the 12th Edition of the International Workshop on Smalltalk Technologies, of IWST '17, pages 5:1–5:6, New York, NY, USA, 2017. ACM\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Dupr17a,\n  author = {Thomas Dupriez and Guillermo Polito and St\\'ephane Ducasse},\n  title = {Analysis and exploration for new generation debuggers},\n  booktitle = {Proceedings of the 12th Edition of the International Workshop on Smalltalk Technologies},\n  pages = {5:1--5:6},\n  publisher = {ACM},\n  year = {2017},\n  doi = {10.1145/3139903.3139910},\n  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Dupr17a-IWST-NewGenerationDebuggers.pdf},\n  annote = {internationalworkshop},\n  abstract = {Locating and fixing bugs is a well-known time consuming task. Advanced approaches such as object-centric or back-in-time debuggers have been proposed in the literature, still in many scenarios developers are left alone with primitive tools such as manual breakpoints and execution stepping. In this position paper we explore several advanced on-line debugging techniques such as advanced breakpoints and on-line execution comparison, that could help developers solve complex debugging scenarios. We analyse the challenges and underlying mechanisms required by these techniques. We present some early but promising prototypes we built on the Pharo programming language. We finally identify future research paths by analysing existing research and connecting it to the techniques we presented before.},\n  hal-url = {https://hal.archives-ouvertes.fr/hal-01585338},\n  series = {IWST '17},\n  isbn = {978-1-4503-5554-4},\n  location = {Maribor, Slovenia},\n  articleno = {5},\n  numpages = {6},\n  acmid = {3139910},\n  address = {New York, NY, USA},\n  keywords = {Debugger ; Tool ; Stack ; Breakpoint ; Watchpoint; lse-pub kzInfrastructure},\n  hal-id = {hal-01585338}}\n\n
\n
\n\n\n
\n Locating and fixing bugs is a well-known time consuming task. Advanced approaches such as object-centric or back-in-time debuggers have been proposed in the literature, still in many scenarios developers are left alone with primitive tools such as manual breakpoints and execution stepping. In this position paper we explore several advanced on-line debugging techniques such as advanced breakpoints and on-line execution comparison, that could help developers solve complex debugging scenarios. We analyse the challenges and underlying mechanisms required by these techniques. We present some early but promising prototypes we built on the Pharo programming language. We finally identify future research paths by analysing existing research and connecting it to the techniques we presented before.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Debugging Cyber-Physical Systems with Pharo.\n \n \n \n \n\n\n \n Marra, M.; Boix, E. G.; Costiou, S.; Kerboeuf, M.; Plantec, A.; Polito, G.; and Ducasse, S.\n\n\n \n\n\n\n In Proceedings of the 12th Edition of the International Workshop on Smalltalk Technologies, of IWST '17, pages 8:1–8:10, New York, NY, USA, 2017. ACM\n \n\n\n\n
\n\n\n\n \n \n \"DebuggingPaper\n  \n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Mar17a,\n\t  author = {Matteo Marra and Elisa Gonzalez Boix and Steven Costiou and Micka\\"el Kerboeuf and Alain Plantec and Guillermo Polito and St\\'ephane Ducasse},\n\t  title = {Debugging Cyber-Physical Systems with Pharo},\n\t  booktitle = {Proceedings of the 12th Edition of the International Workshop on Smalltalk Technologies},\n\t  pages = {8:1--8:10},\n\t  publisher = {ACM},\n\t  year = {2017},\n\t  url = {https://hal.archives-ouvertes.fr/hal-01585349},\n\t  doi = {10.1145/3139903.3139913},\n\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Mar17a-IWST-DebuggingIoT.pdf},\n\t  annote = {internationalworkshop},\n\t  abstract = {Cyber-Physical Systems (CPS) integrate sensors and actua-tors to collect data and control entities in the physical world. Debugging CPS systems is hard due to the time-sensitive nature of a distributed applications combined with the lack of control on the surrounding physical environment. This makes bugs in CPS systems hard to reproduce and thus to fix. In this context, on-line debugging techniques are helpful because the debugger is connected to the device when an exception or crash occurs. This paper reports on our experiences on applying two different on-line debugging techniques for a CPS system: remote debugging using the Pharo remote debugger and our IDRA debugger. In contrast to traditional remote debug-ging, IDRA allows to on-line debug an application locally in another client machine by reproducing the runtime context where the bug manifested. Our qualitative evaluation shows that IDRA provides almost the same interaction capabilities than Pharo's remote debugger and is less intrusive when performing hot-modifications. Our benchmarks also show that IDRA is significantly faster than the Pharo remote debugger, although it increases the amount of data transferred over the network.},\n\t  series = {IWST '17},\n\t  isbn = {978-1-4503-5554-4},\n\t  location = {Maribor, Slovenia},\n\t  articleno = {8},\n\t  numpages = {10},\n\t  address = {New York, NY, USA},\n\t  keywords = {Cyber-Physical Systems ; software tools ; debugging; lse-pub kzInfrastructure},\n\t  hal-id = {hal-01585349}}\n\t  \n\n\t  
\n
\n\n\n
\n Cyber-Physical Systems (CPS) integrate sensors and actua-tors to collect data and control entities in the physical world. Debugging CPS systems is hard due to the time-sensitive nature of a distributed applications combined with the lack of control on the surrounding physical environment. This makes bugs in CPS systems hard to reproduce and thus to fix. In this context, on-line debugging techniques are helpful because the debugger is connected to the device when an exception or crash occurs. This paper reports on our experiences on applying two different on-line debugging techniques for a CPS system: remote debugging using the Pharo remote debugger and our IDRA debugger. In contrast to traditional remote debug-ging, IDRA allows to on-line debug an application locally in another client machine by reproducing the runtime context where the bug manifested. Our qualitative evaluation shows that IDRA provides almost the same interaction capabilities than Pharo's remote debugger and is less intrusive when performing hot-modifications. Our benchmarks also show that IDRA is significantly faster than the Pharo remote debugger, although it increases the amount of data transferred over the network.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n An Experiment with lexically-bound extension methods for a dynamic language.\n \n \n \n \n\n\n \n Ducasse, S.; Fabresse, L.; Polito, G.; and Teruel, C.\n\n\n \n\n\n\n Technical Report Inria Lille-Nord Europe, March 2017.\n \n\n\n\n
\n\n\n\n \n \n \"AnPaper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n  \n \n 1 download\n \n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@techreport{Poli17a,\n\t\t  author = {St\\'ephane Ducasse and Luc Fabresse and Guillermo Polito and Camille Teruel},\n\t\t  title = {An Experiment with lexically-bound extension methods for a dynamic language},\n\t\t  year = {2017},\n\t\t  url = {https://hal.inria.fr/hal-01483756},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers//Poli17a-TR-ExtensionMethods.pdf},\n\t\t  annote = {techreport},\n\t\t  abstract = {An extension method is a method declared in a package other than the package of its host class. Thanks to extension methods, developers can adapt classes they do not own to their needs: adding methods to core classes is a typical use case. This is particularly useful for adapting software and therefore increasing reusability. In most dynamically-typed languages, extension methods are globally visible. Because any developer can define extension methods for any class, naming conflicts occur: if two developers define an extension method with the same signature in the same class, only one extension method is visible and overwrites the other. Similarly, if two developers each define an extension method with the same name in a class hierarchy, one overrides the other. Existing solutions typically rely on a dedicated and slow method lookup algorithm to resolve conflicts at runtime. In this article, we present a model of scoped extension methods that minimizes accidental overrides and we present an implementation in Pharo that incurs little performance overhead. This implementation is based on lexical scope and hierarchy-first strategy for extension scoping.},\n\t\t  month = mar,\n\t\t  keywords = {modularity ; extension methods ; Pharo ; lse-pub kzLanguageDesign},\n\t\t  institution = {Inria Lille-Nord Europe},\n\t\t  hal-id = {tel-01352817}}\n\n\t\t
\n
\n\n\n
\n An extension method is a method declared in a package other than the package of its host class. Thanks to extension methods, developers can adapt classes they do not own to their needs: adding methods to core classes is a typical use case. This is particularly useful for adapting software and therefore increasing reusability. In most dynamically-typed languages, extension methods are globally visible. Because any developer can define extension methods for any class, naming conflicts occur: if two developers define an extension method with the same signature in the same class, only one extension method is visible and overwrites the other. Similarly, if two developers each define an extension method with the same name in a class hierarchy, one overrides the other. Existing solutions typically rely on a dedicated and slow method lookup algorithm to resolve conflicts at runtime. In this article, we present a model of scoped extension methods that minimizes accidental overrides and we present an implementation in Pharo that incurs little performance overhead. This implementation is based on lexical scope and hierarchy-first strategy for extension scoping.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n First-Class Undefined Classes for Pharo.\n \n \n \n \n\n\n \n Polito, G.; Ducasse, S.; and Fabresse, L.\n\n\n \n\n\n\n In Proceedings of the 12th Edition of the International Workshop on Smalltalk Technologies, of IWST '17, pages 9:1–9:8, New York, NY, USA, 2017. ACM\n \n\n\n\n
\n\n\n\n \n \n \"First-ClassPaper\n  \n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Poli17b,\n\t\t  author = {Guillermo Polito and St\\'ephane Ducasse and Luc Fabresse},\n\t\t  title = {First-Class Undefined Classes for Pharo},\n\t\t  booktitle = {Proceedings of the 12th Edition of the International Workshop on Smalltalk Technologies},\n\t\t  pages = {9:1--9:8},\n\t\t  publisher = {ACM},\n\t\t  year = {2017},\n\t\t  url = {https://hal.archives-ouvertes.fr/hal-01585305},\n\t\t  doi = {10.1145/3139903.3139914},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli17b-IWST-UndefinedClasses.pdf},\n\t\t  annote = {internationalworkshop},\n\t\t  abstract = {Loading code inside a Pharo image is a daily concern for a Pharo developer. Nevertheless, several problems may arise at loading time that can prevent the code to load or even worse let the system in an inconsistent state. In this paper, we focus on the problem of loading code that references a class that does not exist in the system. We discuss the different flavors of this problem, the limitations of the existing Undeclared mechanism and the heterogeneity of Pharo tools to solve it. Then, we propose an unified solution for Pharo that reifies Undefined Classes. Our model of Undefined Classes is the result of an objective selection among different alternatives. We then validate our solution through two cases studies: migrating old code and loading code with circular dependencies. This paper also presents the integration of this solution into Pharo regarding the needed Meta-Object Protocol for Undefined Classes and the required modifications of existing tools.},\n\t\t  series = {IWST '17},\n\t\t  isbn = {978-1-4503-5554-4},\n\t\t  location = {Maribor, Slovenia},\n\t\t  articleno = {9},\n\t\t  numpages = {8},\n\t\t  address = {New York, NY, USA},\n\t\t  inria = {RMOD},\n\t\t  keywords = {Software engineering ; Programming languages ; Pharo ; Reflection ; Dynamic Languages ; Partial Code Loading; lse-pub kzLanguageDesign},\n\t\t  hal-id = {hal-01585305}}\n\n\t\t
\n
\n\n\n
\n Loading code inside a Pharo image is a daily concern for a Pharo developer. Nevertheless, several problems may arise at loading time that can prevent the code to load or even worse let the system in an inconsistent state. In this paper, we focus on the problem of loading code that references a class that does not exist in the system. We discuss the different flavors of this problem, the limitations of the existing Undeclared mechanism and the heterogeneity of Pharo tools to solve it. Then, we propose an unified solution for Pharo that reifies Undefined Classes. Our model of Undefined Classes is the result of an objective selection among different alternatives. We then validate our solution through two cases studies: migrating old code and loading code with circular dependencies. This paper also presents the integration of this solution into Pharo regarding the needed Meta-Object Protocol for Undefined Classes and the required modifications of existing tools.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n \n Run-Fail-Grow: Creating Tailored Object-Oriented Runtimes.\n \n \n \n \n\n\n \n Polito, G.; Fabresse, L.; Bouraqadi, N.; and Ducasse, S.\n\n\n \n\n\n\n The Journal of Object Technology, 16(3): 2:1-36. 2017.\n \n\n\n\n
\n\n\n\n \n \n \"Run-Fail-Grow:Paper\n  \n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@article{Poli17c,\n\t\t  author = {Guillermo Polito and Luc Fabresse and Noury Bouraqadi and St\\'ephane Ducasse},\n\t\t  title = {Run-Fail-Grow: Creating Tailored Object-Oriented Runtimes},\n\t\t  journal = {The Journal of Object Technology},\n\t\t  volume = {16},\n\t\t  pages = {2:1-36},\n\t\t  year = {2017},\n\t\t  url = {https://hal.archives-ouvertes.fr/hal-01609295},\n\t\t  doi = {10.5381/jot.2017.16.3.a2},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli17c-JOT-Tornado.pdf},\n\t\t  annote = {internationaljournal},\n\t\t  abstract = {Producing a small deployment version of an application is a challenge because static abstractions such as packages cannot anticipate the use of their parts at runtime. Thus, an application often occupies more memory than actually needed. Tailoring is one of the main solutions to this problem i.e., extracting used code units such as classes and methods of an application. However, existing tailoring techniques are mostly based on static type annotations. These techniques cannot efficiently tailor applications in all their extent (e.g., runtime object graphs and metadata) nor be used in the context of dynamically-typed languages. We propose a run-fail-grow technique to tailor applications using their runtime execution. Run-fail-grow launches (a) a reference application containing the original application to tailor and (b) a nurtured application containing only a seed with a minimal set of code units the user wants to ensure in the final application. The nurtured application is executed, failing when it founds missing objects, classes or methods. On failure, the necessary elements are installed into the nurtured application from the reference one, and the execution resumes. The nurtured application is executed until it finishes, or until the developer explicitly finishes it, for example in the case of a web application. resulting in an object memory (i.e., a heap) with only objects, classes and methods required to execute the application. To validate our approach we implemented a tool based on Virtual Machine modifications, namely Tornado. Tornado succeeds to create very small memory footprint versions of applications e.g., a simple object-oriented heap of 11kb. We show how tailoring works on application code, base and third-party libraries even supporting human interaction with user G. interfaces. These experiments show memory savings ranging from 95\\% to 99\\%.},\n\t\t  number = {3},\n\t\t  keywords = {lse-pub kzLanguageDesign kzInfrastructure},\n\t\t  pdf-second = {http://www.jot.fm/issues/issue_2017_03/article2.pdf},\n\t\t  hal-id = {hal-01609295}}\n\n\t\t
\n
\n\n\n
\n Producing a small deployment version of an application is a challenge because static abstractions such as packages cannot anticipate the use of their parts at runtime. Thus, an application often occupies more memory than actually needed. Tailoring is one of the main solutions to this problem i.e., extracting used code units such as classes and methods of an application. However, existing tailoring techniques are mostly based on static type annotations. These techniques cannot efficiently tailor applications in all their extent (e.g., runtime object graphs and metadata) nor be used in the context of dynamically-typed languages. We propose a run-fail-grow technique to tailor applications using their runtime execution. Run-fail-grow launches (a) a reference application containing the original application to tailor and (b) a nurtured application containing only a seed with a minimal set of code units the user wants to ensure in the final application. The nurtured application is executed, failing when it founds missing objects, classes or methods. On failure, the necessary elements are installed into the nurtured application from the reference one, and the execution resumes. The nurtured application is executed until it finishes, or until the developer explicitly finishes it, for example in the case of a web application. resulting in an object memory (i.e., a heap) with only objects, classes and methods required to execute the application. To validate our approach we implemented a tool based on Virtual Machine modifications, namely Tornado. Tornado succeeds to create very small memory footprint versions of applications e.g., a simple object-oriented heap of 11kb. We show how tailoring works on application code, base and third-party libraries even supporting human interaction with user G. interfaces. These experiments show memory savings ranging from 95% to 99%.\n
\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2016\n \n \n (1)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n \n Instance Migration in Dynamic Software Update.\n \n \n \n \n\n\n \n Tesone, P.; Polito, G.; Fabresse, L.; Bouraqadi, N.; and Ducasse, S.\n\n\n \n\n\n\n In Meta'16, Amsterdam, Netherlands, October 2016. \n \n\n\n\n
\n\n\n\n \n \n \"InstancePaper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Teso16a,\n\t\t    author = {Tesone, Pablo and Polito, Guillermo and Fabresse, Luc and Bouraqadi, Noury and Ducasse, St\\'ephane},\n\t\t    title = {Instance Migration in Dynamic Software Update},\n\t\t    booktitle = {Meta'16},\n\t\t    year = {2016},\n\t\t    url = {https://hal.inria.fr/hal-01611600},\n\t\t    annote = {internalworkshop},\n\t\t    address = {Amsterdam, Netherlands},\n\t\t    month = oct,\n\t\t    keywords = {Object-oriented Languages ; Dynamic Software Update ;\tState Migration ; Object Oriented Programming ; DSU ;\tOOP ;\tPharo ;\tMeta-programming; lse-pub kzLanguageDesign kzInfrastructure kzPharo},\n\t\t    hal-pdf = {https://hal.inria.fr/hal-01611600/file/main.pdf},\n\t\t    hal-id = {hal-01611600}}\n\n\t\t  
\n
\n\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2015\n \n \n (4)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n \n DeltaImpactFinder: Assessing Semantic Merge Conflicts with Dependency Analysis.\n \n \n \n \n\n\n \n Dias, M.; Polito, G.; Cassou, D.; and Ducasse, S.\n\n\n \n\n\n\n In IWST'15: International Workshop on Smalltalk Technologies 2015, 2015. \n \n\n\n\n
\n\n\n\n \n \n \"DeltaImpactFinder:Paper\n  \n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Dias15b,\n  author = {Mart\\'in Dias and Guillermo Polito and Damien Cassou and St\\'ephane Ducasse},\n  title = {DeltaImpactFinder: Assessing Semantic Merge Conflicts with Dependency Analysis},\n  booktitle = {IWST'15: International Workshop on Smalltalk Technologies 2015},\n  year = {2015},\n  url = {https://hal.inria.fr/hal-01199035},\n  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Dias15b-IWST-DeltaImpactFinder.pdf},\n  abstract = {In software development, version control systems (VCS) provide branching and merging support tools. Such tools are popular among developers to concurrently change a codebase in separate lines and reconcile their changes automatically afterwards. However, two changes that are correct independently can introduce bugs when merged together. We call semantic merge conflicts this kind of bugs.\nChange impact analysis (CIA) aims at estimating the effects of a change in a codebase. In this paper, we propose to detect semantic merge conflicts using CIA. On a merge, DELTAIMPACTFINDER analyzes and compares the impact of a change in its origin and destination branches. We call the difference between these two impacts the delta-impact. If the delta-impact is empty, then there is no indicator of a semantic merge conflict and the merge can continue automatically. Otherwise, the delta-impact contains what are the sources of possible conflicts.},\n  annote = {internationalworkshop},\n  keywords = {pharo lse-pub kzMerging kzMeta},\n  hal-id = {hal-01199035}}\n\n
\n
\n\n\n
\n In software development, version control systems (VCS) provide branching and merging support tools. Such tools are popular among developers to concurrently change a codebase in separate lines and reconcile their changes automatically afterwards. However, two changes that are correct independently can introduce bugs when merged together. We call semantic merge conflicts this kind of bugs. Change impact analysis (CIA) aims at estimating the effects of a change in a codebase. In this paper, we propose to detect semantic merge conflicts using CIA. On a merge, DELTAIMPACTFINDER analyzes and compares the impact of a change in its origin and destination branches. We call the difference between these two impacts the delta-impact. If the delta-impact is empty, then there is no indicator of a semantic merge conflict and the merge can continue automatically. Otherwise, the delta-impact contains what are the sources of possible conflicts.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n A Bootstrapping Infrastructure to Build and Extend Pharo-Like Languages.\n \n \n \n\n\n \n Polito, G.; Ducasse, S.; Fabresse, L.; and Bouraqadi, N.\n\n\n \n\n\n\n In Onward! 2015, 2015. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Poli15a,\n\t\t  author = {Polito, Guillermo and Ducasse, St\\'ephane and Fabresse, Luc and Bouraqadi, Noury},\n\t\t  title = {A Bootstrapping Infrastructure to Build and Extend Pharo-Like Languages},\n\t\t  booktitle = {Onward! 2015},\n\t\t  year = {2015},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli15a-Onward-Bootstrapping.pdf},\n\t\t  abstract = {Bootstrapping is well known in the context of compilers, where a bootstrapped compiler can compile its own source code. Bootstrapping is a beneficial engineering practice because it raises the level of abstraction of a program making it easier to understand, optimize, evolve, etc. Bootstrapping a reflective object-oriented language is however more challenging, as we need also to initialize the runtime of the language with its initial objects and classes besides writing its compiler.\n\t\tIn this paper, we present a novel bootstrapping infrastructure for Pharo-like languages that allows us to easily extend and modify such languages. Our bootstrapping process relies on a first-class runtime. A first-class runtime is a meta-object that represents a program's runtime and provides a MOP to easily load code into it and manipulate its objects. It decouples the virtual machine (VM) and language concerns by introducing a clear VM-language interface. Using this process, we show how we succeeded to bootstrap a Smalltalk-based language named Candle and then extend it with traits in less than 250 lines of high-level Smalltalk code. We also show how we can bootstrap with minimal effort two other languages (Pharo and MetaTalk) with similar execution semantics but different object models.},\n\t\t  annote = {internationalconference},\n\t\t  hal-id = {hal-01185812},\n\t\t  keywords = {lse-pub globalstate kzLanguageDesign kzReflection stefpub},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli15a-Onward-Bootstrapping.pdf}}\n\n\t\t
\n
\n\n\n
\n Bootstrapping is well known in the context of compilers, where a bootstrapped compiler can compile its own source code. Bootstrapping is a beneficial engineering practice because it raises the level of abstraction of a program making it easier to understand, optimize, evolve, etc. Bootstrapping a reflective object-oriented language is however more challenging, as we need also to initialize the runtime of the language with its initial objects and classes besides writing its compiler. In this paper, we present a novel bootstrapping infrastructure for Pharo-like languages that allows us to easily extend and modify such languages. Our bootstrapping process relies on a first-class runtime. A first-class runtime is a meta-object that represents a program's runtime and provides a MOP to easily load code into it and manipulate its objects. It decouples the virtual machine (VM) and language concerns by introducing a clear VM-language interface. Using this process, we show how we succeeded to bootstrap a Smalltalk-based language named Candle and then extend it with traits in less than 250 lines of high-level Smalltalk code. We also show how we can bootstrap with minimal effort two other languages (Pharo and MetaTalk) with similar execution semantics but different object models.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Virtualization Support for Dynamic Core Library Update.\n \n \n \n\n\n \n Polito, G.; Ducasse, S.; Fabresse, L.; Bouraqadi, N.; and Mattone, M.\n\n\n \n\n\n\n In Onward! 2015, 2015. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Poli15b,\n\t\t  author = {Polito, Guillermo and Ducasse, St\\'ephane and Fabresse, Luc and Bouraqadi, Noury and Mattone, Max},\n\t\t  title = {Virtualization Support for Dynamic Core Library Update},\n\t\t  booktitle = {{Onward!} 2015},\n\t\t  year = {2015},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli15b-Onward-CoreLibrariesHotUpdate.pdf},\n\t\t  abstract = {Dynamically updating language runtime and core libraries such as collections and threading is challenging since the update mechanism uses such libraries at the same time that it modifies them. To tackle this challenge, we present Dy- namic Core Library Update (DCU) as an extension of Dy- namic Software Update (DSU) and our approach based on a virtualization architecture. Our solution supports the up- date of core libraries as any other normal library, avoiding the circular dependencies between the updater and the core libraries. Our benchmarks show that there is no evident performance overhead in comparison with a default execution. Finally, we show that our approach can be applied to real life scenario by introducing a critical update inside a web application with 20 simulated concurrent users.},\n\t\t  annote = {internationalconference},\n\t\t  hal-id = {hal-01185819},\n\t\t  keywords = {lse-pub globalstate kzLanguageDesign kzReflection stefpub}}\n\n\t\t
\n
\n\n\n
\n Dynamically updating language runtime and core libraries such as collections and threading is challenging since the update mechanism uses such libraries at the same time that it modifies them. To tackle this challenge, we present Dy- namic Core Library Update (DCU) as an extension of Dy- namic Software Update (DSU) and our approach based on a virtualization architecture. Our solution supports the up- date of core libraries as any other normal library, avoiding the circular dependencies between the updater and the core libraries. Our benchmarks show that there is no evident performance overhead in comparison with a default execution. Finally, we show that our approach can be applied to real life scenario by introducing a critical update inside a web application with 20 simulated concurrent users.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Virtualization Support for Application Runtime Specialization and Extension.\n \n \n \n\n\n \n Polito, G.\n\n\n \n\n\n\n Ph.D. Thesis, University Lille 1 - Sciences et Technologies - France, April 2015.\n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n\n\n\n
\n
@phdthesis{Poli15d,\n\t\t  author = {Guillermo Polito},\n\t\t  title = {Virtualization Support for Application Runtime Specialization and Extension},\n\t\t  year = {2015},\n\t\t  school = {University Lille 1 - Sciences et Technologies - France},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/PhDs/PhD-2015-Polito.pdf},\n\t\t  hal-id = {tel-01251173v1},\n\t\t  abstract = {An application runtime is the set of software elements that represent an application during its execution. Application runtimes should be adaptable to different contexts. Advances in computing technology both in hardware and software indeed demand it. For example, on one hand we can think about extending a programming language to enhance the developers' productivity. On the other hand we can also think about transparently reducing the memory footprint of applications to make them fit in constrained resource scenarios e.g., low networks or limited memory availability. We propose Espell, a virtualization infrastructure for object-oriented high-level language runtimes. Espell provides a general purpose infrastructure to control and manipulate object-oriented runtimes in different situations. A first-class representation of an object-oriented runtime provides a high-level API for the manipulation of such runtime. A hypervisor uses this first-class object and manipulates it either directly or by executing arbitrary expressions into it. We show with our prototype that this infrastructure supports language bootstrapping and application runtime tailoring. Using bootstrapping we describe an object-oriented high-level language initialization in terms of itself. A bootstrapped language takes advantage of its own abstractions and is easier to extend. With application runtime tailoring we generate specialized applications by extracting the elements of a program that are used during execution. A tailored application encompasses only the classes and methods it needs and avoids the code bloat that appears from the usage of third-party libraries and frameworks.},\n\t\t  month = apr}\n\n\t\t
\n
\n\n\n
\n An application runtime is the set of software elements that represent an application during its execution. Application runtimes should be adaptable to different contexts. Advances in computing technology both in hardware and software indeed demand it. For example, on one hand we can think about extending a programming language to enhance the developers' productivity. On the other hand we can also think about transparently reducing the memory footprint of applications to make them fit in constrained resource scenarios e.g., low networks or limited memory availability. We propose Espell, a virtualization infrastructure for object-oriented high-level language runtimes. Espell provides a general purpose infrastructure to control and manipulate object-oriented runtimes in different situations. A first-class representation of an object-oriented runtime provides a high-level API for the manipulation of such runtime. A hypervisor uses this first-class object and manipulates it either directly or by executing arbitrary expressions into it. We show with our prototype that this infrastructure supports language bootstrapping and application runtime tailoring. Using bootstrapping we describe an object-oriented high-level language initialization in terms of itself. A bootstrapped language takes advantage of its own abstractions and is easier to extend. With application runtime tailoring we generate specialized applications by extracting the elements of a program that are used during execution. A tailored application encompasses only the classes and methods it needs and avoids the code bloat that appears from the usage of third-party libraries and frameworks.\n
\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2014\n \n \n (2)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n Understanding Pharoś global state to move programs through time and space.\n \n \n \n\n\n \n Polito, G.; Bouraqadi, N.; Ducasse, S.; and Fabresse, L.\n\n\n \n\n\n\n In IWST - International Workshop on Smalltalk Technology, Co-located within the 22th International Smalltalk Conference - 2014, 2014. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Poli14b,\n\t\t  author = {Polito, Guillermo and Bouraqadi, Noury and Ducasse, St\\'ephane and Fabresse, Luc},\n\t\t  title = {Understanding Pharo\\'s global state to move programs through time and space},\n\t\t  booktitle = {IWST - International Workshop on Smalltalk Technology, Co-located within the 22th International Smalltalk Conference - 2014},\n\t\t  year = {2014},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli14b-IWST-GlobalStateClassification.pdf},\n\t\t  abstract = {Code mobility is a mechanism that allows the migration of running programs between different environments. Such migration includes amongst others the migration of application data and resources. Application\\'s data is is usually composed by elements of different nature: from printers and files, to framework and domain objects. This application data will be transported along with the code of its program in space (when serialized and deployed in another environment) or time (when a new session is started in a different point of time). The main problem when moving around code resides, in our understanding, to global state. While unreferenced leaf objects are garbage collected, those referenced (transitively) by some global object will remain alive. In order to support code mobility in time and space, we need to understand how global application data is used. With this purpose, we study and classify Pharo\\'s global state. This classification uncovers some common patterns and provides a first insight on how global state should be managed, specially in code mobility scenarios. As a minor contribution, we also discuss solutions to each of the found categories.},\n\t\t  annote = {internationalworkshop},\n\t\t  audience = {international},\n\t\t  hal-id = {hal-01070964},\n\t\t  keywords = {lse-pub globalstate stefpub kzEvolution kzPharo}}\n\n\t\t
\n
\n\n\n
\n Code mobility is a mechanism that allows the migration of running programs between different environments. Such migration includes amongst others the migration of application data and resources. Applicationś data is is usually composed by elements of different nature: from printers and files, to framework and domain objects. This application data will be transported along with the code of its program in space (when serialized and deployed in another environment) or time (when a new session is started in a different point of time). The main problem when moving around code resides, in our understanding, to global state. While unreferenced leaf objects are garbage collected, those referenced (transitively) by some global object will remain alive. In order to support code mobility in time and space, we need to understand how global application data is used. With this purpose, we study and classify Pharoś global state. This classification uncovers some common patterns and provides a first insight on how global state should be managed, specially in code mobility scenarios. As a minor contribution, we also discuss solutions to each of the found categories.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Bootstrapping Reflective Systems: The Case of Pharo.\n \n \n \n\n\n \n Polito, G.; Ducasse, S.; Fabresse, L.; Bouraqadi, N.; and van Ryseghem, B.\n\n\n \n\n\n\n Science of Computer Programming, 96: 141-155. 2014.\n \n\n\n\n
\n\n\n\n \n\n \n \n doi\n  \n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@article{Poli14c,\n\t\t  author = {Polito, Guillermo and Ducasse, St\\'ephane and Fabresse, Luc and Bouraqadi, Noury and van Ryseghem, Benjamin},\n\t\t  title = {Bootstrapping Reflective Systems: The Case of Pharo},\n\t\t  journal = {Science of Computer Programming},\n\t\t  volume = {96},\n\t\t  pages = {141-155},\n\t\t  publisher = {Elsevier},\n\t\t  year = {2014},\n\t\t  doi = {10.1016/j.scico.2013.10.008},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli14c-BootstrappingASmalltalk-ScienceOfComputerProgramming.pdf},\n\t\t  abstract = {Bootstrapping is a technique commonly known by its usage in language definition by the introduction of a compiler written in the same language it compiles.\n\t\t\tThis process is important to understand and modify the definition of a given language using the same language, taking benefit of the abstractions and expression power it provides. A bootstrap, then, supports the evolution of a language. However, the infrastructure of reflective systems like Smalltalk includes, in addition to a compiler, an environment with several self-references. A reflective system bootstrap should consider all its infrastructural components.\n\t\t\tIn this paper, we propose a definition of bootstrap for object-oriented reflective systems, we describe the architecture and components it should contain and we analyze the challenges it has to overcome. Finally, we present a reference bootstrap process for a reflective system and Hazelnut, its implementation for bootstrapping the Pharo Smalltalk-inspired system.},\n\t\t  annote = {internationaljournal},\n\t\t  hal-id = {hal-00903724},\n\t\t  keywords = {lse-pub virtualization metacircularities recovery isolation kzReflection stefpub}}\n\n\t\t
\n
\n\n\n
\n Bootstrapping is a technique commonly known by its usage in language definition by the introduction of a compiler written in the same language it compiles. This process is important to understand and modify the definition of a given language using the same language, taking benefit of the abstractions and expression power it provides. A bootstrap, then, supports the evolution of a language. However, the infrastructure of reflective systems like Smalltalk includes, in addition to a compiler, an environment with several self-references. A reflective system bootstrap should consider all its infrastructural components. In this paper, we propose a definition of bootstrap for object-oriented reflective systems, we describe the architecture and components it should contain and we analyze the challenges it has to overcome. Finally, we present a reference bootstrap process for a reflective system and Hazelnut, its implementation for bootstrapping the Pharo Smalltalk-inspired system.\n
\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2013\n \n \n (1)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n Virtual Smalltalk Images: Model and Applications.\n \n \n \n\n\n \n Polito, G.; Ducasse, S.; Fabresse, L.; and Bouraqadi, N.\n\n\n \n\n\n\n In IWST - International Workshop on Smalltalk Technology, Co-located within the 21th International Smalltalk Conference - 2013, 2013. \n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@inproceedings{Poli13a,\n\t\t  author = {Polito, Guillermo and Ducasse, St\\'ephane and Fabresse, Luc and Bouraqadi, Noury},\n\t\t  title = {Virtual Smalltalk Images: Model and Applications},\n\t\t  booktitle = {IWST - International Workshop on Smalltalk Technology, Co-located within the 21th International Smalltalk Conference - 2013},\n\t\t  year = {2013},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers/Poli13a-IWST13-ObjectSpacesVirtualization.pdf},\n\t\t  abstract = {Reflective architectures are a powerful solution for code browsing, debugging or in-language process handling. However, these reflective architectures show some limitations in edge cases of self-modification and self-monitoring. Modifying the modifier process or monitoring the monitor process in a reflective system alters the system itself, leading to the impossibility to perform some of those tasks properly. In this paper we analyze the problems of reflective architectures in the context of image based object-oriented languages and solve them by providing a first-class representation of an image: a virtualized image.\n\t\tWe present Oz, our virtual image solution. In Oz, a virtual image is represented by an object space. Through an object space, an image can manipulate the internal structure and control the execution of other images. An Oz object space allows one to introspect and modify execution information such as processes, contexts, existing classes and objects. We show how Oz solves the edge cases of reflective architectures by adding a third participant, and thus, removing the self modification and self-observation constraints.},\n\t\t  annote = {internationalworkshop},\n\t\t  audience = {international},\n\t\t  hal-id = {hal-00924932},\n\t\t  keywords = {lse-pub virtualization metacircularities recovery isolation kzReflection StefPub}}\n\n\t\t
\n
\n\n\n
\n Reflective architectures are a powerful solution for code browsing, debugging or in-language process handling. However, these reflective architectures show some limitations in edge cases of self-modification and self-monitoring. Modifying the modifier process or monitoring the monitor process in a reflective system alters the system itself, leading to the impossibility to perform some of those tasks properly. In this paper we analyze the problems of reflective architectures in the context of image based object-oriented languages and solve them by providing a first-class representation of an image: a virtualized image. We present Oz, our virtual image solution. In Oz, a virtual image is represented by an object space. Through an object space, an image can manipulate the internal structure and control the execution of other images. An Oz object space allows one to introspect and modify execution information such as processes, contexts, existing classes and objects. We show how Oz solves the edge cases of reflective architectures by adding a third participant, and thus, removing the self modification and self-observation constraints.\n
\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2012\n \n \n (2)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n Semantics and Security Issues in JavaScript.\n \n \n \n\n\n \n Ducasse, S.; Petton, N.; Polito, G.; and Cassou, D.\n\n\n \n\n\n\n Technical Report RMod – INRIA Lille-Nord Europe, 2012.\n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@techreport{Duca12a,\n  author = {Ducasse, St\\'ephane and Petton, Nicolas and Polito, Guillermo and Cassou, Damien},\n  title = {Semantics and Security Issues in JavaScript},\n  year = {2012},\n  abstract = {There is a plethora of research articles describing the deep semantics of JavaScript. Nevertheless, such articles are often difficult to grasp for readers not familiar with formal semantics. In this report, we propose a digest of the semantics of JavaScript centered around security concerns. This document proposes an overview of the JavaScript language and the misleading semantic points in its design. The first part of the document describes the main characteristics of the language itself. The second part presents how those characteristics can lead to problems. It finishes by showing some coding patterns to avoid certain traps and presents some ECMAScript 5 new features.},\n  annote = {techreport},\n  institution = {RMod -- INRIA Lille-Nord Europe},\n  keywords = {JavaScript Dynamic Language Security Isolation Semantics Web HTTP lse-pub stefPub kzLanguageDesign}}\n  \n
\n
\n\n\n
\n There is a plethora of research articles describing the deep semantics of JavaScript. Nevertheless, such articles are often difficult to grasp for readers not familiar with formal semantics. In this report, we propose a digest of the semantics of JavaScript centered around security concerns. This document proposes an overview of the JavaScript language and the misleading semantic points in its design. The first part of the document describes the main characteristics of the language itself. The second part presents how those characteristics can lead to problems. It finishes by showing some coding patterns to avoid certain traps and presents some ECMAScript 5 new features.\n
\n\n\n
\n\n\n
\n \n\n \n \n \n \n \n Semantics and Security Issues in JavaScript.\n \n \n \n\n\n \n Ducasse, S.; Petton, N.; Polito, G.; and Cassou, D.\n\n\n \n\n\n\n Technical Report Inria Lille-Nord Europe, December 2012.\n Deliverable Resilience FUI 12: 7.3.2.1 Failles de sécurité en JavaScript / JavaScript security issues\n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@techreport{Duca12z,\n  author = {St\\'ephane Ducasse and Nicolas Petton and Guillermo Polito and Damien Cassou},\n  title = {Semantics and Security Issues in JavaScript},\n  year = {2012},\n  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers//Duca12z-deliverable-7321-FUI12.pdf},\n  annote = {techreport},\n  institution = {Inria Lille-Nord Europe},\n  keywords = {kzLanguageDesign stefPub lse-pub},\n  month = dec,\n  note = {Deliverable Resilience FUI 12: 7.3.2.1 Failles de s\\'ecurit\\'e en JavaScript / JavaScript security issues}}\n  \n
\n
\n\n\n\n
\n\n\n\n\n\n
\n
\n\n
\n
\n  \n 2011\n \n \n (1)\n \n \n
\n
\n \n \n
\n \n\n \n \n \n \n \n Extended results of Tornado: A Run-Fail-Grow approach for Dynamic Application Tayloring.\n \n \n \n\n\n \n Polito, G.; Ducasse, S.; Bouraqadi, N.; and Fabresse, L.\n\n\n \n\n\n\n Technical Report RMod – INRIA Lille-Nord Europe, 2011.\n \n\n\n\n
\n\n\n\n \n\n \n\n \n link\n  \n \n\n bibtex\n \n\n \n  \n \n abstract \n \n\n \n\n \n \n \n \n \n \n \n\n  \n \n \n \n \n\n\n\n
\n
@techreport{Poli14a,\n\t\t  author = {Polito, Guillermo and Ducasse, St\\'ephane and Bouraqadi, Noury and Fabresse, Luc},\n\t\t  title = {{Extended results of Tornado: A Run-Fail-Grow approach for Dynamic Application Tayloring}},\n\t\t  year = {2011},\n\t\t  pdf = {http://rmod-files.lille.inria.fr/Team/Texts/Papers//Poli14-TechReport-Tornado-INRIA.pdf},\n\t\t  abstract = {Producing a small deployment version of an application is a challenge because static abstractions such as packages cannot anticipate the use of their parts. As such, an application often occupies more memory than actually needed. To solve this problem we propose Tornado, a technique to dynamically tailor applications to only embed code (classes and methods) they use. Tornado uses a run-fail-grow approach to prepare an application for deployment. It launches minimal version of an application and installs a minimal set of statements that will start the user's application. This application is run and these statements are executed. When the application fails because there are classes or methods missing, the necessary code is installed. The application is executed until it reaches a stable point, allowing possibly human interaction for applications with UIs. Thus, Tornado creates minimal memory footprint versions of applications by tailoring the whole application's code, including run-time and third party libraries. We used Tornado to tailor two different applications. We succeeded to tailor a hello world application to occupy 1% of its original size. We also experimented with a Seaside web application tailoring in one case only the application's and framework's code and the whole application's code in the other case. In this latter example, we reached memory savings of about 97%. In this report we present an overview on Tornado, and we give details of the results we obtained.},\n\t\t  annote = {techreport},\n\t\t  institution = {RMod -- INRIA Lille-Nord Europe},\n\t\t  keywords = {kzReflection kzRemodularisation},\n\t\t  x-pays = {FR}}\n\n\t\t
\n
\n\n\n
\n Producing a small deployment version of an application is a challenge because static abstractions such as packages cannot anticipate the use of their parts. As such, an application often occupies more memory than actually needed. To solve this problem we propose Tornado, a technique to dynamically tailor applications to only embed code (classes and methods) they use. Tornado uses a run-fail-grow approach to prepare an application for deployment. It launches minimal version of an application and installs a minimal set of statements that will start the user's application. This application is run and these statements are executed. When the application fails because there are classes or methods missing, the necessary code is installed. The application is executed until it reaches a stable point, allowing possibly human interaction for applications with UIs. Thus, Tornado creates minimal memory footprint versions of applications by tailoring the whole application's code, including run-time and third party libraries. We used Tornado to tailor two different applications. We succeeded to tailor a hello world application to occupy 1% of its original size. We also experimented with a Seaside web application tailoring in one case only the application's and framework's code and the whole application's code in the other case. In this latter example, we reached memory savings of about 97%. In this report we present an overview on Tornado, and we give details of the results we obtained.\n
\n\n\n
\n\n\n\n\n\n
\n
\n\n\n\n\n
\n\n\n \n\n \n \n \n \n\n
\n"}; document.write(bibbase_data.data);