Your SlideShare is downloading. ×
0
PL/Parrot
San Francisco Perl Mongers
May 25, 2010
     Copyright © 2010
     David Fetter david.fetter@pgexperts.com
     ...
Um, WTF?!?
People To Blame
Parrot
Parrot
• A Virtual Machine for Dynamic Languages
Parrot
• A Virtual Machine for Dynamic Languages
• Register-based
Parrot
• A Virtual Machine for Dynamic Languages
• Register-based
• Really, really #&^%#@%^ cool
Parrot
• A Virtual Machine for Dynamic Languages
• Register-based
• Really, really #&^%#@%^ cool
 • Pluggable!
Parrot
• A Virtual Machine for Dynamic Languages
• Register-based
• Really, really #&^%#@%^ cool
 • Pluggable!
 • Interope...
Parrot
• A Virtual Machine for Dynamic Languages
• Register-based
• Really, really #&^%#@%^ cool
 • Pluggable!
 • Interope...
PostgreSQL
PostgreSQL

• If you gotta ask,
PostgreSQL

• If you gotta ask,
• you ain't never gonna know.
PostgreSQL

• If you gotta ask,
• you ain't never gonna know.
• (apologies to Louis Armstrong)
Why?
Why?

• Writing, Debugging and Maintaing PLs is a
Why?

• Writing, Debugging and Maintaing PLs is a
• Pain
Why?

• Writing, Debugging and Maintaing PLs is a
• Pain
• In
Why?

• Writing, Debugging and Maintaing PLs is a
• Pain
• In
• The
Why?

• Writing, Debugging and Maintaing PLs is a
• Pain
• In
• The
• As^Wneck
Why?
Why?


•   PL
Why?


•
PL
•
Toolkit
Why?
Why?

•   Don't
Why?

•   Don't
•   Repeat
Why?

•   Don't
•   Repeat
•   Yourself!
Why?


•   Write in PL/Perl6
•   Call from PL/Python
What


•   First things first:
•   PL/PIR
<EMBED>
Parrot Embed In Flux
Parrot Embed In Flux

• Parrot trunk!
Parrot Embed In Flux

• Parrot trunk!
• PostgreSQL master!
</EMBED>
<HLL>
•   HLL API not implemented yet, so:
•   HLL API not implemented yet, so:

    •   PL/PIR (mostly ok)
•   HLL API not implemented yet, so:

    •   PL/PIR (mostly ok)

    •   PL/PIRU (rough edges)
•   HLL API not implemented yet, so:

    •   PL/PIR (mostly ok)

    •   PL/PIRU (rough edges)

•   OBTW
•   HLL API not implemented yet, so:

    •   PL/PIR (mostly ok)

    •   PL/PIRU (rough edges)

•   OBTW

•   PL/Specifica...
</HLL>
<MARSHAL>
PostgreSQL Data Types
PostgreSQL Data Types

• We support basic data types!
PostgreSQL Data Types

• We support basic data types!
• Working on time types.
PostgreSQL Data Types

• We support basic data types!
• Working on time types.
• Parrot needs bytea/time object...
</MARSHAL>
What It Looks Like
CREATE FUNCTION test_float_add(float)
RETURNS float
LANGUAGE plparrot
AS $$
    .param num x
    x += 5...
What It Looks Like
CREATE FUNCTION text_concat(text)
RETURNS text
LANGUAGE plparrot
AS $$
    $S1 = 'PL/'
    $S2 = 'Parro...
Access Control
Access Control


•   HAVE:
Access Control


•HAVE:
 • Filesystem access: DENIED!
Access Control
Access Control

• WANT
Access Control

• WANT
 • Configurable Controls
Access Control

• WANT
 • Configurable Controls
 • Network Access Control
Access Control

• WANT
 • Configurable Controls
 • Network Access Control
 • TESTS
What We Have Now
What We Have Now
  • An actual PL, PIRU
What We Have Now
  • An actual PL, PIRU
  • TAP tests via pgTap
What We Have Now
  • An actual PL, PIRU
  • TAP tests via pgTap
  • A Git Repo
What We Have Now
  • An actual PL, PIRU
  • TAP tests via pgTap
  • A Git Repo
  • An Issue Tracker
What We Have Now
  • An actual PL, PIRU
  • TAP tests via pgTap
  • A Git Repo
  • An Issue Tracker
  • #plparrot on Freen...
What We Have Now
  • An actual PL, PIRU
  • TAP tests via pgTap
  • A Git Repo
  • An Issue Tracker
  • #plparrot on Freen...
What We'll Do Soon
What We'll Do Soon


• BETTAR Argument Passing
What We'll Do Soon


• BETTAR Argument Passing
• MOAR Data Type Marshalling
What We'll Do Soon


• BETTAR Argument Passing
• MOAR Data Type Marshalling
• TESTS. LOTS OF TESTS
What We Want
What We Want

• Sandboxing
What We Want

• Sandboxing
• HLLs
What We Want

• Sandboxing
• HLLs
• MOAR DEVELOPERZ
What We Want

• Sandboxing
• HLLs
• MOAR DEVELOPERZ
• Users!
Next:

http://groups.google.com/group/plparrot
http://github.com/leto/plparrot
http://pl.parrot.org/
Thanks!
San Francisco Perl Mongers
May 25, 2010

   Copyright © 2010
   David Fetter david.fetter@pgexperts.com
   All Rig...
PL/Parrot San Francisco Perl Mongers 2010/05/25
PL/Parrot San Francisco Perl Mongers 2010/05/25
PL/Parrot San Francisco Perl Mongers 2010/05/25
Upcoming SlideShare
Loading in...5
×

PL/Parrot San Francisco Perl Mongers 2010/05/25

777

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
777
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • We&apos;d like to thank EnterpriseDB for dulling your wits this morning
  • Thanks, Sarah! :)
  • Normally, one doesn&apos;t think of bleeding-edge features on an RDBMS
    ...except that This. Is. Postgres!
    we&apos;ll figure out where we&apos;re dining tonight
  • and Daniel Arbelo Arrocha, whose picture we were too lazy to get in time for this talk



















  • This is where we&apos;re going. PL Neutrality. Original Parrot Project
  • Parrot Intermediate Representation (like an assembly language, but way cooler)


  • Parrot trunk (yep. it has a trunk)
    PDD10

  • Parrot trunk (yep. it has a trunk)
    PDD10


  • Say what they are, name a few
  • PL/Squaak first. PL/LOLCODE may be next (outside the Parrot tree).
    HAAAAAAALLLLLLLLLLLLLLP!
  • PL/Squaak first. PL/LOLCODE may be next (outside the Parrot tree).
    HAAAAAAALLLLLLLLLLLLLLP!
  • PL/Squaak first. PL/LOLCODE may be next (outside the Parrot tree).
    HAAAAAAALLLLLLLLLLLLLLP!
  • PL/Squaak first. PL/LOLCODE may be next (outside the Parrot tree).
    HAAAAAAALLLLLLLLLLLLLLP!
  • PL/Squaak first. PL/LOLCODE may be next (outside the Parrot tree).
    HAAAAAAALLLLLLLLLLLLLLP!


  • Beg for help
    Current plan is to fall through to bytea.
  • Beg for help
    Current plan is to fall through to bytea.
  • Beg for help
    Current plan is to fall through to bytea.

  • UNTRUSTED for now. Need more trust.
    PL/ParrotU will be a synonym for PL/PIRU
  • Bet you didn&apos;t think assembler code could manipulate strings this way :)
  • PG needs a PL access control document
  • PG needs a PL access control document
  • PG needs a PL access control document
  • PG needs a PL access control document
  • PG needs a PL access control document
  • PG needs a PL access control document






  • those would include performance
  • those would include performance
  • those would include performance
  • We want opcode removal just like PL/Perl did.
    Have you upgraded yet?
    Naughty, naughty
  • We want opcode removal just like PL/Perl did.
    Have you upgraded yet?
    Naughty, naughty
  • We want opcode removal just like PL/Perl did.
    Have you upgraded yet?
    Naughty, naughty
  • We want opcode removal just like PL/Perl did.
    Have you upgraded yet?
    Naughty, naughty


  • Transcript of "PL/Parrot San Francisco Perl Mongers 2010/05/25"

    1. 1. PL/Parrot San Francisco Perl Mongers May 25, 2010 Copyright © 2010 David Fetter david.fetter@pgexperts.com All Rights Reserved
    2. 2. Um, WTF?!?
    3. 3. People To Blame
    4. 4. Parrot
    5. 5. Parrot • A Virtual Machine for Dynamic Languages
    6. 6. Parrot • A Virtual Machine for Dynamic Languages • Register-based
    7. 7. Parrot • A Virtual Machine for Dynamic Languages • Register-based • Really, really #&^%#@%^ cool
    8. 8. Parrot • A Virtual Machine for Dynamic Languages • Register-based • Really, really #&^%#@%^ cool • Pluggable!
    9. 9. Parrot • A Virtual Machine for Dynamic Languages • Register-based • Really, really #&^%#@%^ cool • Pluggable! • Interoperable!
    10. 10. Parrot • A Virtual Machine for Dynamic Languages • Register-based • Really, really #&^%#@%^ cool • Pluggable! • Interoperable! • Dynamic!
    11. 11. PostgreSQL
    12. 12. PostgreSQL • If you gotta ask,
    13. 13. PostgreSQL • If you gotta ask, • you ain't never gonna know.
    14. 14. PostgreSQL • If you gotta ask, • you ain't never gonna know. • (apologies to Louis Armstrong)
    15. 15. Why?
    16. 16. Why? • Writing, Debugging and Maintaing PLs is a
    17. 17. Why? • Writing, Debugging and Maintaing PLs is a • Pain
    18. 18. Why? • Writing, Debugging and Maintaing PLs is a • Pain • In
    19. 19. Why? • Writing, Debugging and Maintaing PLs is a • Pain • In • The
    20. 20. Why? • Writing, Debugging and Maintaing PLs is a • Pain • In • The • As^Wneck
    21. 21. Why?
    22. 22. Why? • PL
    23. 23. Why? • PL • Toolkit
    24. 24. Why?
    25. 25. Why? • Don't
    26. 26. Why? • Don't • Repeat
    27. 27. Why? • Don't • Repeat • Yourself!
    28. 28. Why? • Write in PL/Perl6 • Call from PL/Python
    29. 29. What • First things first: • PL/PIR
    30. 30. <EMBED>
    31. 31. Parrot Embed In Flux
    32. 32. Parrot Embed In Flux • Parrot trunk!
    33. 33. Parrot Embed In Flux • Parrot trunk! • PostgreSQL master!
    34. 34. </EMBED>
    35. 35. <HLL>
    36. 36. • HLL API not implemented yet, so:
    37. 37. • HLL API not implemented yet, so: • PL/PIR (mostly ok)
    38. 38. • HLL API not implemented yet, so: • PL/PIR (mostly ok) • PL/PIRU (rough edges)
    39. 39. • HLL API not implemented yet, so: • PL/PIR (mostly ok) • PL/PIRU (rough edges) • OBTW
    40. 40. • HLL API not implemented yet, so: • PL/PIR (mostly ok) • PL/PIRU (rough edges) • OBTW • PL/Specification
    41. 41. </HLL>
    42. 42. <MARSHAL>
    43. 43. PostgreSQL Data Types
    44. 44. PostgreSQL Data Types • We support basic data types!
    45. 45. PostgreSQL Data Types • We support basic data types! • Working on time types.
    46. 46. PostgreSQL Data Types • We support basic data types! • Working on time types. • Parrot needs bytea/time object...
    47. 47. </MARSHAL>
    48. 48. What It Looks Like CREATE FUNCTION test_float_add(float) RETURNS float LANGUAGE plparrot AS $$ .param num x x += 5 .return(x) $$;
    49. 49. What It Looks Like CREATE FUNCTION text_concat(text) RETURNS text LANGUAGE plparrot AS $$ $S1 = 'PL/' $S2 = 'Parrot' $S3 = $S1 . $S2 .return($S3) $$;
    50. 50. Access Control
    51. 51. Access Control • HAVE:
    52. 52. Access Control •HAVE: • Filesystem access: DENIED!
    53. 53. Access Control
    54. 54. Access Control • WANT
    55. 55. Access Control • WANT • Configurable Controls
    56. 56. Access Control • WANT • Configurable Controls • Network Access Control
    57. 57. Access Control • WANT • Configurable Controls • Network Access Control • TESTS
    58. 58. What We Have Now
    59. 59. What We Have Now • An actual PL, PIRU
    60. 60. What We Have Now • An actual PL, PIRU • TAP tests via pgTap
    61. 61. What We Have Now • An actual PL, PIRU • TAP tests via pgTap • A Git Repo
    62. 62. What We Have Now • An actual PL, PIRU • TAP tests via pgTap • A Git Repo • An Issue Tracker
    63. 63. What We Have Now • An actual PL, PIRU • TAP tests via pgTap • A Git Repo • An Issue Tracker • #plparrot on Freenode
    64. 64. What We Have Now • An actual PL, PIRU • TAP tests via pgTap • A Git Repo • An Issue Tracker • #plparrot on Freenode • Enthusiasm!
    65. 65. What We'll Do Soon
    66. 66. What We'll Do Soon • BETTAR Argument Passing
    67. 67. What We'll Do Soon • BETTAR Argument Passing • MOAR Data Type Marshalling
    68. 68. What We'll Do Soon • BETTAR Argument Passing • MOAR Data Type Marshalling • TESTS. LOTS OF TESTS
    69. 69. What We Want
    70. 70. What We Want • Sandboxing
    71. 71. What We Want • Sandboxing • HLLs
    72. 72. What We Want • Sandboxing • HLLs • MOAR DEVELOPERZ
    73. 73. What We Want • Sandboxing • HLLs • MOAR DEVELOPERZ • Users!
    74. 74. Next: http://groups.google.com/group/plparrot http://github.com/leto/plparrot http://pl.parrot.org/
    75. 75. Thanks! San Francisco Perl Mongers May 25, 2010 Copyright © 2010 David Fetter david.fetter@pgexperts.com All Rights Reserved
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×