SlideShare a Scribd company logo
Perlsonal
Perl 6 compiler
or
How to speed up
 your Perl 6 app
How to speed up
  your Perl 6 app
    and make it
10 000 times faster
-O fun
Personal Perl 6 compiler
Let’s take a simple

   programme
Let’s take a simple
but CPU consuming
   programme
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{








return
0
unless
$n
%
$d;




}









return
1;
}
$
perl6
$
perl6
is_prime.p6
$
perl6
is_prime.p6
37
$
perl6
is_prime.p6
37
1
$
perl6
is_prime.p6
38
0
$
perl6
is_prime.p6
15511
$
perl6
is_prime.p6
15511
1

     20 seconds with Rakudo :-(
Perl 6 can be fast!
Perl 6 can be fast!
Perl 6 can be fast!
Boost it!
Boost it!
OK, go to boost.org :-)
struct
p6grammar:
public
grammar<p6grammar>
{




template<typename
ScannerT>




struct
definition
{








definition(p6grammar
const&
self)
{
struct
p6grammar:
public
grammar<p6grammar>
{




template<typename
ScannerT>




struct
definition
{








definition(p6grammar
const&
self)
{












program
















=
statement_list
>>
end_p;
struct
p6grammar:
public
grammar<p6grammar>
{




template<typename
ScannerT>




struct
definition
{








definition(p6grammar
const&
self)
{












program
















=
statement_list
>>
end_p;












statement_list

















=
*statement;
struct
p6grammar:
public
grammar<p6grammar>
{




template<typename
ScannerT>




struct
definition
{








definition(p6grammar
const&
self)
{












program
















=
statement_list
>>
end_p;












statement_list

















=
*statement;












statement
















=
statement_code



















>>
!statement_separator;












statement_code
















=
comment
















|
statement_control

















|
sub_def
















|
sub_call
















|
expression;












statement_code
















=
comment
















|
statement_control

















|
sub_def
















|
sub_call
















|
expression;












comment
















=
ch_p('#')



















>>
lexeme_d[*~ch_p('n')];






















statement_code
















=
comment
















|
statement_control

















|
sub_def
















|
sub_call
















|
expression;












comment
















=
ch_p('#')



















>>
lexeme_d[*~ch_p('n')];












sub_call
















=
sub_name



















>>
!sub_arguments;













sub_body
struct
p6grammar:
public
grammar<p6grammar>
{
                                                      











argument                                   















=
ch_p('{')[&a_sub_def_body_start]





template<typename
ScannerT>
struct
definition
{
                                                      















=
expression                           >>
!statement_list
>>
ch_p('}');








definition(p6grammar
const&
self)
{
                                                      















|
variable;                            




























program
                                                      











                                           











statement_control
















=
statement_list
>>
end_p;
                                                      











variable                                   















=
for_cycle













                                                      















=
array                                















|
conditional_block;












statement_list

                                                      















|
scalar;                              
































=
*statement;
                                                      















                                       











conditional_block

















                                                      











scalar                                     















=
(str_p("if")
|
str_p("unless"))












statement
                                                      















=
constant                             [&a_condition_start]
>>
expression[&a_condition_end]

















=
statement_code
>>
!
                                                      















|
ch_p('$')
>>
identifier[&a_scalar]   >>
code_block[&a_conditional_block_end];
statement_separator[&a_statement];
                                                      















|
array_element;                       

































                                                      











                                           











code_block












statement_code
                                                      











array                                      















=
ch_p('{')
>>
statement_list
>>

















=
comment
                                                      















=
simple_array                         ch_p('}');
















|
statement_control

                                                      















|
global_array;                        
































|
sub_def
                                                      















                                       











for_cycle
















//|
(sub_call[&a_sub_call_start]

                                                      











simple_array                               















=
str_p("for")[&a_for_cycle_start]
>>
!statement_modifier)[&a_sub_call_end]
                                                      















=
ch_p('@')
>>
(identifier
>>
         















>>
(range
>>
!(str_p("‐>")
>>

















|
sub_call
                                                      ~eps_p('['))[&a_array];                                ch_p('$')
>>
identifier[&a_for_cycle_variable]))
















|
expression;
                                                                                                             [&a_for_cycle_range]













                                                      











global_array                               















>>













comment
                                                      















=
str_p("@*")
>>
(identifier
>>
       for_cycle_body[&a_for_cycle_body];
















=
ch_p('#')
>>

                                                      ~eps_p('['))[&a_global_array];                         
















lexeme_d[*~ch_p('n')];
                                                      











                                           











range

















                                                      











array_element                              















=
ch_p('(')
>>
range_content
>>













statement_separator
                                                      















=
simple_array_element                 ch_p(')')
















=
ch_p(';');
                                                      















|
global_array_element;                















|
range_content;













                                                      















                                       




























sub_call
                                                      











simple_array_element                       











range_content
















=
(sub_name
>>
!sub_arguments)
                                                      















=
(ch_p('@')
>>
                       















=
expression
>>
str_p("..")
[&a_sub_called];
                                                      array_element_name_and_index)[&a_array_element];       [&a_range_sep]
>>
expression;

















                                                                                                             
























sub_name
                                                      











global_array_element                       











expression
















=
builtin_sub_name
                                                      















=
(str_p("@*")
>>
                     















=
ch_p('(')[&a_paren]
>>

















|
identifier[&a_sub_name]
                                                      array_element_name_and_index)                          expression_content

>>
ch_p(')')[&a_paren]
[&a_sub_calling];
                                                      [&a_global_array_element];                             















|
expression_content;

















                                                      











                                           




























builtin_sub_name
                                                      











array_element_name_and_index               











expression_content
















=
str_p("say")[&a_builtin_say]
                                                      















=
                                     















=
scalar
>>
*(math_op[&a_math_op]
>>

















|
str_p("print")[&a_builtin_print]
                                                      identifier[assign_a(array_element_name)]               expression)
















|
str_p("return")
                                                      

















>>
ch_p('[')
>>
array_index          















|
sub_call;
[&a_builtin_return];
                                                      

















>>
ch_p(']');                        

































                                                      



















                                   











math_op












identifier
                                                      











array_index                                















=
ch_p('+')
















=
lexeme_d[+(alpha_p
|
'_')
>>

                                                      















=
                                     















|
ch_p('‐')
>>
eps_p(~ch_p('>'))
*(alnum_p
|
'_')];
                                                      int_p[assign_a(array_element_index)];                  















|
ch_p('*')

















                                                      















                                       















|
ch_p('/')












sub_arguments
                                                      











constant                                   















|
ch_p('%');
















=
ch_p('(')
>>
!argument_list
>>

                                                      















=
real_p[&a_constant];                 












ch_p(')')
                                                      















                                       











for_cycle_body
















|
argument_list;
                                                      











sub_def                                    















=
sub_body;

















                                                      















=
str_p("sub")[&a_sub_def_start]       




























argument_list
                                                      















>>
sub_name                            











statement_modifier
















=
list_p(argument,
ch_p(',')
                                                      















>>
!                                   















=
(str_p("unless")
|
str_p("if"))
>>

[&a_argument_list_sep]);
                                                      sub_arguments[&a_sub_def_arguments_end]                expression;

















                                                      















>>
sub_body[&a_sub_def_end];
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{

















return
0
unless
$n
%
$d;













}









return
1;
}
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{

















return
0
unless
$n
%
$d;













}









return
1;
}
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{








unless
$n
%
$d
{












return
0;








}




}









return
1;
}
Programme 1

Checks if the argument is a prime
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{








unless
$n
%
$d
{












return
0;








}




}









return
1;
}
./p++
<
t/is_prime.p6
#include<iostream>
#include<string>

using
namespace
std;

typedef
int
variable_t;
typedef
int
scalar_t;
typedef
int
range_boundary_t;

variable_t
sub_is_prime(scalar_t
var_scalar_n)
{




for
(range_boundary_t
var_scalar_d
=
2;
var_scalar_d
<=
var_scalar_n
‐
1
var_scalar_d++)
{




if(!(var_scalar_n
%
var_scalar_d))
{




return
0;
}




}




return
1;
}

int
main(int
argn,
char**
var_global_array_ARGS)
{




cout
<<
sub_is_prime(atoi(var_global_array_ARGS[1
+
0]))
<<
"n";




return
0;
}
say
is_prime(@*ARGS[0]);




cout
<<
sub_is_prime(
    






atoi(var_global_array_ARGS[1
+
0])
    


)





<<
"n";
sub
is_prime($n)
{




variable_t
sub_is_prime(scalar_t
var_scalar_n)
{
for
2
..
$n
‐
1
‐>
$d
{





for
(range_boundary_t
var_scalar_d
=
2;







var_scalar_d
<=
var_scalar_n
‐
1;






var_scalar_d++)
{
$
time
./is_prime
15511
1
$
time
./is_prime
15511
1

real
 0m0.002s
Programme 2

 Checks if the argument is a prime
and displays the first denominator
say
is_prime(@*ARGS[0]);

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{








unless
$n
%
$d












say
$d;












return
0;








}




}









return
1;
}
Programme 3

Generates prime numbers below 1 000 000
S2 recommends


@primes
=





grep
*.prime,
2..*;
for
2
..
1000000
‐>
$n
{




if
is_prime($n)
{








say
$n;




}
}

sub
is_prime($n)
{




for
2
..
$n
‐
1
‐>
$d
{








unless
$n
%
$d
{











return
0;








}




}




return
1;
}
Sparse ideas behind p6c
1. C++‘s type casts
my
$var
=
100;
say
$var;

$var
=
"string";
say
$var;

my
$var
=
100;
say
$var;

$var
=
"string";
say
$var;



variable_var.set(100);
cout
<<
variable_var;

variable_var.set("string");
cout
<<
variable_var;
class
PerlVariable
{



.
.
.
public:



operator
int();



operator
string();
}
2. Intensive use of C++ compiler
class
MyClass
{



has
$member;



method
meth()
{...}
}
class
MyClass
{



has
$member;



method
meth()
{...}
}

class
MyClass
{
public:




PerlVariable
member_member;




void
meth_method();
}
3. What to implement
(base principle)
a) Write Perl 6 programme
I’d like to have in production
a) Write Perl 6 programme
I’d like to have in production

b) Implement that part
of the compiler
a) Write Perl 6 programme
I’d like to have in production

b) Implement that part
of the compiler
(following STD.pm)
svn://svn.shitov.ru/p6c
http://perl6.ru/p6c
svn://svn.shitov.ru/p6c
http://perl6.ru/p6c

         __END__

  Andrew Shitov | mail@andy.sh
Ad

More Related Content

What's hot (19)

Sorting arrays in PHP
Sorting arrays in PHPSorting arrays in PHP
Sorting arrays in PHP
Vineet Kumar Saini
 
Java script introducation & basics
Java script introducation & basicsJava script introducation & basics
Java script introducation & basics
H K
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix it
Rafael Dohms
 
Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)
Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)
Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)
James Titcumb
 
What are arrays in java script
What are arrays in java scriptWhat are arrays in java script
What are arrays in java script
Miguel Silva Loureiro
 
Arrays in PHP
Arrays in PHPArrays in PHP
Arrays in PHP
Vineet Kumar Saini
 
Climbing the Abstract Syntax Tree (IPC Fall 2017)
Climbing the Abstract Syntax Tree (IPC Fall 2017)Climbing the Abstract Syntax Tree (IPC Fall 2017)
Climbing the Abstract Syntax Tree (IPC Fall 2017)
James Titcumb
 
Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)
Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)
Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)
James Titcumb
 
Closure, Higher-order function in Swift
Closure, Higher-order function in SwiftClosure, Higher-order function in Swift
Closure, Higher-order function in Swift
SeongGyu Jo
 
Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기
진성 오
 
Climbing the Abstract Syntax Tree (phpDay 2017)
Climbing the Abstract Syntax Tree (phpDay 2017)Climbing the Abstract Syntax Tree (phpDay 2017)
Climbing the Abstract Syntax Tree (phpDay 2017)
James Titcumb
 
Scripting3
Scripting3Scripting3
Scripting3
Nao Dara
 
PHP Unit 4 arrays
PHP Unit 4 arraysPHP Unit 4 arrays
PHP Unit 4 arrays
Kumar
 
Perl6 one-liners
Perl6 one-linersPerl6 one-liners
Perl6 one-liners
Andrew Shitov
 
The underestimated power of KeyPaths
The underestimated power of KeyPathsThe underestimated power of KeyPaths
The underestimated power of KeyPaths
Vincent Pradeilles
 
Climbing the Abstract Syntax Tree (DPC 2017)
Climbing the Abstract Syntax Tree (DPC 2017)Climbing the Abstract Syntax Tree (DPC 2017)
Climbing the Abstract Syntax Tree (DPC 2017)
James Titcumb
 
Php array
Php arrayPhp array
Php array
Nikul Shah
 
Php Using Arrays
Php Using ArraysPhp Using Arrays
Php Using Arrays
mussawir20
 
Functions
FunctionsFunctions
Functions
Ankit Dubey
 
Java script introducation & basics
Java script introducation & basicsJava script introducation & basics
Java script introducation & basics
H K
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix it
Rafael Dohms
 
Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)
Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)
Climbing the Abstract Syntax Tree (Bulgaria PHP 2016)
James Titcumb
 
Climbing the Abstract Syntax Tree (IPC Fall 2017)
Climbing the Abstract Syntax Tree (IPC Fall 2017)Climbing the Abstract Syntax Tree (IPC Fall 2017)
Climbing the Abstract Syntax Tree (IPC Fall 2017)
James Titcumb
 
Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)
Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)
Climbing the Abstract Syntax Tree (CodeiD PHP Odessa 2017)
James Titcumb
 
Closure, Higher-order function in Swift
Closure, Higher-order function in SwiftClosure, Higher-order function in Swift
Closure, Higher-order function in Swift
SeongGyu Jo
 
Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기
진성 오
 
Climbing the Abstract Syntax Tree (phpDay 2017)
Climbing the Abstract Syntax Tree (phpDay 2017)Climbing the Abstract Syntax Tree (phpDay 2017)
Climbing the Abstract Syntax Tree (phpDay 2017)
James Titcumb
 
Scripting3
Scripting3Scripting3
Scripting3
Nao Dara
 
PHP Unit 4 arrays
PHP Unit 4 arraysPHP Unit 4 arrays
PHP Unit 4 arrays
Kumar
 
The underestimated power of KeyPaths
The underestimated power of KeyPathsThe underestimated power of KeyPaths
The underestimated power of KeyPaths
Vincent Pradeilles
 
Climbing the Abstract Syntax Tree (DPC 2017)
Climbing the Abstract Syntax Tree (DPC 2017)Climbing the Abstract Syntax Tree (DPC 2017)
Climbing the Abstract Syntax Tree (DPC 2017)
James Titcumb
 
Php Using Arrays
Php Using ArraysPhp Using Arrays
Php Using Arrays
mussawir20
 

Similar to Personal Perl 6 compiler (20)

Php tips-and-tricks4128
Php tips-and-tricks4128Php tips-and-tricks4128
Php tips-and-tricks4128
PrinceGuru MS
 
PHP tips and tricks
PHP tips and tricks PHP tips and tricks
PHP tips and tricks
Damien Seguy
 
PHP and MySQL Tips and tricks, DC 2007
PHP and MySQL Tips and tricks, DC 2007PHP and MySQL Tips and tricks, DC 2007
PHP and MySQL Tips and tricks, DC 2007
Damien Seguy
 
Structured data type
Structured data typeStructured data type
Structured data type
Omkar Majukar
 
Chapter 2 wbp.pptx
Chapter 2 wbp.pptxChapter 2 wbp.pptx
Chapter 2 wbp.pptx
40NehaPagariya
 
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Dhivyaa C.R
 
UNIT IV (4).pptx
UNIT IV (4).pptxUNIT IV (4).pptx
UNIT IV (4).pptx
DrDhivyaaCRAssistant
 
Alexey Tsoy Meta Programming in C++ 16.11.17
Alexey Tsoy Meta Programming in C++ 16.11.17Alexey Tsoy Meta Programming in C++ 16.11.17
Alexey Tsoy Meta Programming in C++ 16.11.17
LogeekNightUkraine
 
ภาษาซี
ภาษาซีภาษาซี
ภาษาซี
kramsri
 
CHAPTER 5
CHAPTER 5CHAPTER 5
CHAPTER 5
mohd_mizan
 
presentation_arrays_1443553113_140676.ppt
presentation_arrays_1443553113_140676.pptpresentation_arrays_1443553113_140676.ppt
presentation_arrays_1443553113_140676.ppt
NamakkalPasanga
 
ภาษาซี
ภาษาซีภาษาซี
ภาษาซี
kramsri
 
Array Methods.pptx
Array Methods.pptxArray Methods.pptx
Array Methods.pptx
stargaming38
 
Arrays syntax and it's functions in php.pptx
Arrays syntax and it's  functions in php.pptxArrays syntax and it's  functions in php.pptx
Arrays syntax and it's functions in php.pptx
NikhilVij6
 
Array
ArrayArray
Array
Kathmandu University
 
Programming Fundamentals Arrays and Strings
Programming Fundamentals   Arrays and Strings Programming Fundamentals   Arrays and Strings
Programming Fundamentals Arrays and Strings
imtiazalijoono
 
Arrays and function basic c programming notes
Arrays and function basic c programming notesArrays and function basic c programming notes
Arrays and function basic c programming notes
GOKULKANNANMMECLECTC
 
삼성 바다 앱개발 실패 노하우 2부
삼성 바다 앱개발 실패 노하우 2부삼성 바다 앱개발 실패 노하우 2부
삼성 바다 앱개발 실패 노하우 2부
mosaicnet
 
Intoduction to php arrays
Intoduction to php arraysIntoduction to php arrays
Intoduction to php arrays
baabtra.com - No. 1 supplier of quality freshers
 
Array functions using php programming language.pptx
Array functions using php programming language.pptxArray functions using php programming language.pptx
Array functions using php programming language.pptx
NikhilVij6
 
Php tips-and-tricks4128
Php tips-and-tricks4128Php tips-and-tricks4128
Php tips-and-tricks4128
PrinceGuru MS
 
PHP tips and tricks
PHP tips and tricks PHP tips and tricks
PHP tips and tricks
Damien Seguy
 
PHP and MySQL Tips and tricks, DC 2007
PHP and MySQL Tips and tricks, DC 2007PHP and MySQL Tips and tricks, DC 2007
PHP and MySQL Tips and tricks, DC 2007
Damien Seguy
 
Structured data type
Structured data typeStructured data type
Structured data type
Omkar Majukar
 
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Regular expressions, Session and Cookies by Dr.C.R.Dhivyaa Kongu Engineering ...
Dhivyaa C.R
 
Alexey Tsoy Meta Programming in C++ 16.11.17
Alexey Tsoy Meta Programming in C++ 16.11.17Alexey Tsoy Meta Programming in C++ 16.11.17
Alexey Tsoy Meta Programming in C++ 16.11.17
LogeekNightUkraine
 
ภาษาซี
ภาษาซีภาษาซี
ภาษาซี
kramsri
 
presentation_arrays_1443553113_140676.ppt
presentation_arrays_1443553113_140676.pptpresentation_arrays_1443553113_140676.ppt
presentation_arrays_1443553113_140676.ppt
NamakkalPasanga
 
ภาษาซี
ภาษาซีภาษาซี
ภาษาซี
kramsri
 
Array Methods.pptx
Array Methods.pptxArray Methods.pptx
Array Methods.pptx
stargaming38
 
Arrays syntax and it's functions in php.pptx
Arrays syntax and it's  functions in php.pptxArrays syntax and it's  functions in php.pptx
Arrays syntax and it's functions in php.pptx
NikhilVij6
 
Programming Fundamentals Arrays and Strings
Programming Fundamentals   Arrays and Strings Programming Fundamentals   Arrays and Strings
Programming Fundamentals Arrays and Strings
imtiazalijoono
 
Arrays and function basic c programming notes
Arrays and function basic c programming notesArrays and function basic c programming notes
Arrays and function basic c programming notes
GOKULKANNANMMECLECTC
 
삼성 바다 앱개발 실패 노하우 2부
삼성 바다 앱개발 실패 노하우 2부삼성 바다 앱개발 실패 노하우 2부
삼성 바다 앱개발 실패 노하우 2부
mosaicnet
 
Array functions using php programming language.pptx
Array functions using php programming language.pptxArray functions using php programming language.pptx
Array functions using php programming language.pptx
NikhilVij6
 
Ad

More from Andrew Shitov (20)

Perl jobs market in 2024, how good is it?
Perl jobs market in 2024, how good is it?Perl jobs market in 2024, how good is it?
Perl jobs market in 2024, how good is it?
Andrew Shitov
 
Creating a compiler in Perl 6
Creating a compiler in Perl 6Creating a compiler in Perl 6
Creating a compiler in Perl 6
Andrew Shitov
 
Fun with Raspberry PI (and Perl)
Fun with Raspberry PI (and Perl)Fun with Raspberry PI (and Perl)
Fun with Raspberry PI (and Perl)
Andrew Shitov
 
Perl6 in-production
Perl6 in-productionPerl6 in-production
Perl6 in-production
Andrew Shitov
 
Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6
Andrew Shitov
 
AllPerlBooks.com
AllPerlBooks.comAllPerlBooks.com
AllPerlBooks.com
Andrew Shitov
 
Perl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel ComputingPerl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel Computing
Andrew Shitov
 
The Joy of Smartmatch
The Joy of SmartmatchThe Joy of Smartmatch
The Joy of Smartmatch
Andrew Shitov
 
YAPC::Europe 2013
YAPC::Europe 2013YAPC::Europe 2013
YAPC::Europe 2013
Andrew Shitov
 
Perl 7, the story of
Perl 7, the story ofPerl 7, the story of
Perl 7, the story of
Andrew Shitov
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистов
Andrew Shitov
 
Как очистить массив
Как очистить массивКак очистить массив
Как очистить массив
Andrew Shitov
 
What's new in Perl 5.14
What's new in Perl 5.14What's new in Perl 5.14
What's new in Perl 5.14
Andrew Shitov
 
Что нового в Perl 5.14
Что нового в Perl 5.14Что нового в Perl 5.14
Что нового в Perl 5.14
Andrew Shitov
 
Perl6 grammars
Perl6 grammarsPerl6 grammars
Perl6 grammars
Andrew Shitov
 
Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6
Andrew Shitov
 
There's more than one way to empty it
There's more than one way to empty itThere's more than one way to empty it
There's more than one way to empty it
Andrew Shitov
 
Perl 6 by example
Perl 6 by examplePerl 6 by example
Perl 6 by example
Andrew Shitov
 
How to clean an array
How to clean an arrayHow to clean an array
How to clean an array
Andrew Shitov
 
Perl 5.10 и 5.12
Perl 5.10 и 5.12Perl 5.10 и 5.12
Perl 5.10 и 5.12
Andrew Shitov
 
Perl jobs market in 2024, how good is it?
Perl jobs market in 2024, how good is it?Perl jobs market in 2024, how good is it?
Perl jobs market in 2024, how good is it?
Andrew Shitov
 
Creating a compiler in Perl 6
Creating a compiler in Perl 6Creating a compiler in Perl 6
Creating a compiler in Perl 6
Andrew Shitov
 
Fun with Raspberry PI (and Perl)
Fun with Raspberry PI (and Perl)Fun with Raspberry PI (and Perl)
Fun with Raspberry PI (and Perl)
Andrew Shitov
 
Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6Параллельные вычисления в Perl 6
Параллельные вычисления в Perl 6
Andrew Shitov
 
Perl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel ComputingPerl 6 for Concurrency and Parallel Computing
Perl 6 for Concurrency and Parallel Computing
Andrew Shitov
 
The Joy of Smartmatch
The Joy of SmartmatchThe Joy of Smartmatch
The Joy of Smartmatch
Andrew Shitov
 
Perl 7, the story of
Perl 7, the story ofPerl 7, the story of
Perl 7, the story of
Andrew Shitov
 
Язык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистовЯзык программирования Go для Perl-программистов
Язык программирования Go для Perl-программистов
Andrew Shitov
 
Как очистить массив
Как очистить массивКак очистить массив
Как очистить массив
Andrew Shitov
 
What's new in Perl 5.14
What's new in Perl 5.14What's new in Perl 5.14
What's new in Perl 5.14
Andrew Shitov
 
Что нового в Perl 5.14
Что нового в Perl 5.14Что нового в Perl 5.14
Что нового в Perl 5.14
Andrew Shitov
 
Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6Text in search queries with examples in Perl 6
Text in search queries with examples in Perl 6
Andrew Shitov
 
There's more than one way to empty it
There's more than one way to empty itThere's more than one way to empty it
There's more than one way to empty it
Andrew Shitov
 
How to clean an array
How to clean an arrayHow to clean an array
How to clean an array
Andrew Shitov
 
Ad

Recently uploaded (20)

Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 

Personal Perl 6 compiler