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

1,054 views

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
1,054
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

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



















  • This is where we'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'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


  • 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

    ×