[Pharo-dev] Re: Inovation Technology Award Submission: Polyphemus
Thank you Pierre for the submission :-) Noury On Aug 16 2022, at 10:36 am, pmissech wrote: > Hello, > > Although i will not be able to attend ESUG'22, a friend agreed to > present one of our projects to the innovation award. > **Polyphemus** is a VM related, but public aims at any kind of developers. > Particularly, the video submission talks about how to look at an image > and how to **recover** dead images. > Feel free to contact me if you have any questions ! > Enjoy (and vote for Polyphemus!). > > 5 minutes video, Innovation Technology Award submission: > https://youtu.be/zf3cCtNW830 > Repository: github.com/hogoww/Polyphemus/ > Additionnal information on image recovery: > https://github.com/hogoww/Polyphemus/blob/main/Documentation/ResurrectingDeadImages/ResurrectingDeadImages.pdf > > Cheers !
[Pharo-dev] Re: Pharo's syntax highlighter
> On 6 Aug 2022, at 07:26, Pierre Misse Chanabier > wrote: > > I do not know the syntax highlighter, but I know the AST fairly well. > The first two points are fairly easy: > > Color method temp variables and block parameter variables differently. > Currently they are identified too generally as just #variables. They are > therefore always the same color. Can someone point me to the parser classes > that extract these features? > > Color differently Classes and other globals? I'm trying to find this > distinction as well in the parser classes. If someone familiar with the > parsing and related GUI classes can give me some pointers, I'll do the work. > > Let the user assign colors to the first 7 levels of parentheses and first 7 > levels of brackets. > > > 1) There is no differences in the AST about temporary / arguments declaration. > They are both at the level of the sequence node of the method/block (the > body). > Thankfully we can ask for the parent and have a case for each. > You'd have to modify visitTemporaryDeclarationNode:. > > 2) There is no difference in the AST between classes / Globals. > Because Classes are in fact Globals. > You'd have to ask for the (self class environment classAt: aGlobal name) > ifNotNil: [ class behavior ] ifNil: [ global behavior ]. > This is true, but kid of not: the AST does not distinguish kind of variables, as this is not Grammar but “Semantics”. That is, every variables use (definition, read, write) just gets one (new) instance of RBVariableNode. But: we do name analysis for the AST. This means that the AST that you have in hand is always annotated with semantic information. For Variables this means that every RBVariableNode instance has a “semantic variable” attached to it that models the Variable. (See Hierarchy of the class “Variable”). Here now we get what we expect: for e.g. a temp there is *one* instance or a temp variable, and all the instances of RBVariableNode that are about that variable reference the one instance. With this, we can actually distinguish all the kinds of variables. (we pushed this so far that actually the compiler just asks the variable to generate bytecode, for example). For ease of use, we have added test methods to RBVariableNode lile isTempVariable, isClassVariable, isInstanceVariable and so on. > A quick look seem that the behavior of the syntax highlighter is in the > IconStyler class. > (again, don't know it, just checking this out quickly). The main part of the syntax highlighter is class SHRBTextStyler. This is “just” a visitor on the AST (by including the trait TRBProgramNodeVisitor). For example, the method called via the #visitVariableNode: method is this: resolveStyleFor: aVariableNode aVariableNode binding ifNil: [^#default]. aVariableNode isArgumentVariable ifTrue: [ ^#methodArg]. aVariableNode isTempVariable ifTrue: [ ^#tempVar]. aVariableNode isGlobalVariable ifTrue: [ ^#globalVar]. "here we should add support for #classVar" aVariableNode isClassVariable ifTrue: [ ^#globalVar]. aVariableNode isInstanceVariable ifTrue: [ ^#instVar]. "for now we use temp variable here, we could now color them with their own color" aVariableNode isWorkspaceVariable ifTrue: [ ^#tempVar]. (self class formatIncompleteIdentifiers and: [ aVariableNode hasIncompleteIdentifier ]) ifTrue:[ ^#incompleteIdentifier] . "Note: if formatIncompleteIdentifiers is true, a non-exisiting variable might be incomplete" aVariableNode isUndeclaredVariable ifTrue: [ ^#undefinedIdentifier ]. ^#invalid. This shows that we, right now, do not distinguish globals from class variables, but all that would be very easy to add, as the annotated AST has all that information. (I always wanted to rewrite that method to just delegate to the aVariableNode and from there delatete to the Variable subclass and add a #styleSymbol method there, would make all that even simpler). Marcus
[Pharo-dev] Re: about object serialization and deserialization
Hi Stef, > On 15 Aug 2022, at 20:25, stephane ducasse wrote: > > Hi guys > > It is interesting to think about the design and use of object deserializers. > > https://www.slideshare.net/frohoff1/deserialize-my-shorts-or-how-i-learned-to-start-worrying-and-hate-java-object-deserialization > > <2204.09388.pdf> Interesting, and indeed, a big problem (especially denial of service attacks). Step one is to be conscious of the problem (which exists across all language/formats). Step two could be to add some sanity checks (limits) to parsers. Would be a nice subject for a (student) project. Sven
[Pharo-dev] MPLR 2022 -- Call for Participation
Call for Participation MPLR 2022 - 19th International Conference on Managed Programming Languages & Runtimes September 14-15, 2022 in Brussels, Belgium https://soft.vub.ac.be/mplr22/ Follow us @MPLR_Conf The 19th International Conference on Managed Programming Languages & Runtimes (MPLR, formerly ManLang) is a premier forum for presenting and discussing novel results in all aspects of managed programming languages and runtime systems, which serve as building blocks for some of the most important computing systems in use, ranging from small-scale (embedded and real-time systems) to large-scale (cloud-computing and big-data platforms) and anything in between (desktop, mobile, IoT, and wearable applications). This year, MPLR will be held at the campus of the Vrije Universiteit Brussel(VUB) in Brussels, Belgium. Keynotes Performance Optimizations in the .NET GC Dr. Maoni Stephens, Microsoft, USA Static Compilation of JavaScript Dr. Manuel Serrano, Inria Sophia-Antipolis, France Accepted Papers --- Automatic Array Transformation to Columnar Storage at Run Time Lukas Makor et al. Compressed Forwarding Tables Reconsidered Jonas Norlinder et al. Event-Based Out-of-place Debugging Tom Lauwaerts et al. Machine-Learning-Based Self-Optimizing Compiler Heuristics Raphael Mosaner et al. SecSharp: Towards Efficient Trusted Execution in Managed Languages Gilang Mentari Hamidy et al. A Model Checking Framework for a New Collector Framework Bochen Xu et al. Porting a JIT compiler to RISC-V: Challenges and Opportunities Quentin Ducasse et al. Analyzing and Predicting Energy Consumption of Garbage Collectors in OpenJDK Marina Shimchenko et al. Better Understanding the Costs and Benefits of Automatic Memory Management Kunal Sareen et al. Dynamic Taint Analysis with Label-Defined Semantics Jacob Kreindl et al. Attendance -- Thanks to our generous sponsors, we were able to significantly reduce this year’s registration fees. Early Registration Fees: Students: 175 Euro Regular: 250 Euro In addition to the conference participation, the registration includes: - 2-day transportation ticket in the Brussels area - welcome reception on Wednesday, September 14 - guided tour to the city hall and conference banquet on Thursday, September 15 More details, and link to registration system: https://soft.vub.ac.be/mplr22/registration/ Important Dates --- Early Registration: 23 August 2022 Conference Dates: 14-15 September 2022
[Pharo-dev] Inovation Technology Award Submission: Polyphemus
Hello, Although i will not be able to attend ESUG'22, a friend agreed to present one of our projects to the innovation award. **Polyphemus** is a VM related, but public aims at any kind of developers. Particularly, the video submission talks about how to look at an image and how to **recover** dead images. Feel free to contact me if you have any questions ! Enjoy (and vote for Polyphemus!). 5 minutes video, Innovation Technology Award submission: https://youtu.be/zf3cCtNW830 Repository: github.com/hogoww/Polyphemus/ Additionnal information on image recovery: https://github.com/hogoww/Polyphemus/blob/main/Documentation/ResurrectingDeadImages/ResurrectingDeadImages.pdf Cheers !