root/docs/02Architecture.pod

Revision 7808, 1.5 kB (checked in by iblech, 3 years ago)

* Usual svn props.
* t/pugsbugs/class_name_and_attribute_name_confliction.t: More investigation --

the main cause for failing is now clear (look inside the file).

  • Property svn:mime-type set to text/plain; charset=UTF-8
  • Property svn:eol-style set to native
  • Property svn:eol-type set to native
Line 
1Pugs Apocryphon 2: Architecture
2
3- Reason of Pugs
4 - make Perl 6 programs run
5 - Explain the Perl6 parts more; assume no Haskell
6- What is the difference between how Perl 5 and Perl 6 runs programs?
7 - Separate parse/compilation/runtime phase
8- What does the Parser do?
9 - match the source with regexes defined in Perl 6 Grammar
10 - which is just a set of regexes to match language parts
11 - does not check "1=2" or any other compile time errors
12 - either parses into syntax tree, or report syntax error
13 - the syntax tree may be completely bogus
14- What does the Compiler do?
15 - decide the "meaning" of syntax trees
16 - translate various special forms into the same underlying operations
17- What is "PIL"?
18 - Pugs Intermediate Language
19 - very few node types
20 - Verbs: Apply (function call), Assign, Bind (give new name)
21 - Nouns: Literals, Expression
22 - expression: inline assembly, variables, thunks, code
23 - (explain the PIL forms more, with examples)
24- Why "PIL"?
25 - doesn't care how program was "written", only what it "means"
26 - Don't program in PIL because it's very verbose
27 - But it represents anything Perl programs can do
28 - It only has five operations (also known as "nodes")
29- The PIL evaluator
30 - At this moment is the reference implementation of how Perl 6 works
31 - Will eventually be written entirely in Perl 6
32 - Will be one of the many backends in the end, among Parrot, Perl 5, and others
33- The Code generator
34 - translates PIL operations into target languages
35 - the underlying language still have to provide a runtime and builtin functions
36
Note: See TracBrowser for help on using the browser.