Talk: The Present and Future of Pharo

1,447 views

Published on

SCG, University of Bern. CHOOSE Talk: "The present and future of Pharo" 14.07.2009

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,447
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Talk: The Present and Future of Pharo

    1. 1. The present and future of Pharo
    2. 2. What? A progressive, open-source Smalltalk platform for professional use.
    3. 3. What? A flexible environment to support the research of new language concepts.
    4. 4. What? Pharo = Language + IDE Pure Object-Oriented Language Dynamically Typed
    5. 5. History Based on Squeak Smalltalk + Major Cleanups (MVC, eToys) + New UI Look / TrueType + Tools + Block Closures + Lots of bugfixes and small improvements
    6. 6. 699 Bug-reports closed 377 Updates Release Planned: August 2009
    7. 7. Getting Started (if needed)
    8. 8. Pier
    9. 9. Pier
    10. 10. Smalltalk with OO-Database Pharo is the IDE
    11. 11. Future
    12. 12. ...cleaner
    13. 13. ...smaller
    14. 14. ...faster
    15. 15. (of course)
    16. 16. Enable Evolution
    17. 17. Enable Experiments
    18. 18. Examples - Compiler - Slots - JIT and AOStA
    19. 19. Old Compiler - From 1976 - Not OO - Hard to understand. Hard to change We need a better Compiler!
    20. 20. New Compiler - Originally by Anthony Hannan - Based on Visitors - Reusable and Pluggable Backend (IRBuilder) - Uses RB AST - SmaCC Parser Easier to understand. Easier to change
    21. 21. New Compiler Scanner Semantic Code code AST AST Bytecode / Parser Analysis Generation Code generation in detail Build Bytecode AST IR Bytecode IR Generation ASTTranslator IRTranslator IRBuilder BytecodeBuilder
    22. 22. Plans... - New BlockClosure Format - Plugin architecture: Parser, Checker, CodeGen - Use RB Parser (Faster, Error messages)
    23. 23. Examples - Compiler - Slots - JIT and AOStA
    24. 24. Instance Vars - Not objects - Change behavior? - Change memory layout? Instance state should be more powerful!
    25. 25. Slots - Are objects - Allow custom subclasses - Change behavior and memory layout Without Performance penalty!
    26. 26. Auto-Accessor MopObject subclass: #SlotExample slots: '{AutoAccessorSlot named: #hello}' classVariableNames: '' poolDictionaries: '' category: 'SlotExamples' Create accessor-methods at compile-time
    27. 27. Active Slot MopObject subclass: #SlotExample slots: '{ActiveSlot named: #hello action: [Beeper beep]}' classVariableNames: '' poolDictionaries: '' category: 'SlotExamples' Evaluate block on read
    28. 28. Sparse Slot MopObject subclass: #SlotExample slots: '{SparseSlot named: #a. SparseSlot named: #b. SparseSlot named: #c}' classVariableNames: '' poolDictionaries: '' category: 'SlotExamples' Store values in one Dictionary
    29. 29. iVar Slot MopObject subclass: #SlotExample slots: '{IVarSlot named: #a} classVariableNames: '' poolDictionaries: '' category: 'SlotExamples' Normal instance Variable
    30. 30. Auto-Accessor MopObject subclass: #SlotExample slots: '{AutoAccessorSlot named: #hello}' classVariableNames: '' poolDictionaries: '' category: 'SlotExamples' Create accessor-methods at compiled-time
    31. 31. Slot subclass: #AutoAccessorSlot instanceVariableNames: '' .... postCreationAction self generateGetter. self generateSetter. generateGetter class compile: (String streamContents: [:stream |stream nextPutAll: self name; crtab; nextPutAll: '^', self name asString])
    32. 32. Active Slot MopObject subclass: #SlotExample slots: '{ActiveSlot named: #hello action: [Beeper beep]}' classVariableNames: '' poolDictionaries: '' category: 'SlotExamples' Evaluate block on read
    33. 33. Active Slot AutoAccessorSlot subclass: #ActiveSlot instanceVariableNames: 'action' .... emitReadUsing: methodBuilder methodBuilder pushLiteral: action; send: #value. super emitReadUsing: methodBuilder
    34. 34. Status - First Prototype - Integration with ClassBuilder - Compatibility with iVars - Explore different designs
    35. 35. Examples - Compiler - Slots - JIT and AOStA
    36. 36. VM - Virtual Machine uses Interpreter - JIT Compiler under development (Eliot Miranda) How to optimize even more?
    37. 37. AOStA - Provide API for accessing runtime data - PIC: Polymorphic Inline Cache Record class per send instruction - Hotness Counter Where do we spend time?
    38. 38. AOStA PIC BC 2 SSA 2 BC SSA OPT SSA BC SSA BC Optimize SSA-Form (Static Single Assignment)
    39. 39. AOStA - Use PIC-Data for specialization - Inline often-called methods - Special Bytecode for primitive types (Floats)
    40. 40. AOStA - Bytecode-to-Bytecode optimization - Purely realized in Smaltalk - Accessible in the image. Reflection?
    41. 41. More... - Improve Tools - Real Modules - Reflection - .......
    42. 42. Join Us! Goal: learning and having fun http://pharo-project.org

    ×