[Pharo-dev] Re: Inovation Technology Award Submission: Polyphemus

2022-08-16 Thread Noury Bouraqadi
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

2022-08-16 Thread Marcus Denker


> 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

2022-08-16 Thread Sven Van Caekenberghe
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

2022-08-16 Thread Guillermo Polito

  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

2022-08-16 Thread pmissech

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 !