Perl 6 - the future is here, just unevenly distributed

IRC log for #perl11, 2014-10-18

| Channels | #perl11 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
05:18 bulk88_2 joined #perl11
05:55 willthechill joined #perl11
05:57 bulk88 joined #perl11
06:00 rurban joined #perl11
06:48 rurban willthechill: They are describing your architecture here: http://pythonhosted.org/hope/arch.html
06:49 rurban > you can RPerl call "JIT a restricted subset of perl5"
06:50 willthechill looking
06:51 willthechill yes that is similar
06:51 willthechill definitely similar
06:51 willthechill good for them, too bad it's Python, haha!  :)
06:51 rurban the AST looks strange though: http://pythonhosted.org/hope/example.html
06:52 rurban looks more like a proper P2 AST
06:52 willthechill my AST is built using eyapp
06:52 willthechill $VAR1 = bless( {
06:52 willthechill 'children' => [
06:52 willthechill bless( {
06:52 willthechill 'children' => [
06:52 willthechill bless( {
06:52 willthechill 'children' => [
06:52 willthechill bless( {
06:52 willthechill 'children' => [
06:53 willthechill 'package',
06:53 willthechill bless( {
06:53 willthechill 'children' => [
06:53 willthechill 'RPerl::Test::EmptyModule::Package_00_Good'
06:53 willthechill ]
06:53 willthechill }, 'WordScoped_214' ),
06:53 willthechill ';',
06:53 willthechill bless( {
06:53 willthechill 'children' => [
06:53 willthechill 'use strict;',
06:53 willthechill 'use warnings;',
06:53 willthechill
06:53 willthechill hmmm guess it doesn't paste so well
06:53 willthechill :P
06:53 rurban but they have type-analysis going on. they detect if a function returns 2 different types and fail then. http://pythonhosted.org/hope/lang.html#return-statement
06:54 rurban this is compile-time
06:55 willthechill CompileUnit_4(_PLUS_LIST(Module_16(Package_26(STRING,WordScoped_214(STRING),STRING,Header_27(STRING,STRING,STRING,STRING,STRING,STRING),_STAR_LIST,_STAR_LIST,_STAR_LIST,_PLUS_LIST(Subroutine_57(STRING,Type_218(STRING),STRING,STRING,_OPTIONAL,_PLUS_LIST(Operation_98(Expression_144(Literal_220(STRING)),STRING)),STRING,STRING)),STRING,STRING))))
06:55 willthechill $VAR1 = bless( {
06:55 willthechill 'children' => [
06:55 willthechill bless( {
06:55 willthechill 'children' => [
06:55 willthechill bless( {
06:55 willthechill 'children' => [
06:55 willthechill bless( {
06:55 willthechill 'children' => [
06:55 willthechill 'package',
06:55 willthechill bless( {
06:55 willthechill 'children' => [
06:55 willthechill 'RPerl::Test::EmptyModule::Package_00_Good'
06:55 willthechill ]
06:55 willthechill }, 'WordScoped_214' ),
06:55 willthechill ';',
06:55 willthechill bless( {
06:55 willthechill 'children' => [
06:55 willthechill 'use strict;',
06:55 willthechill 'use warnings;',
06:55 willthechill 'use RPerl;',
06:55 willthechill 'our $VERSION =',
06:55 willthechill '0.001_000',
06:55 willthechill ';'
06:55 willthechill ]
06:56 willthechill }, 'Header_27' ),
06:56 willthechill bless( {
06:56 willthechill 'children' => []
06:56 willthechill }, '_STAR_LIST' ),
06:56 willthechill bless( {
06:56 willthechill 'children' => []
06:56 willthechill }, '_STAR_LIST' ),
06:56 willthechill bless( {
06:56 willthechill 'children' => []
06:56 willthechill }, '_STAR_LIST' ),
06:56 willthechill bless( {
06:56 willthechill 'children' => [
06:56 willthechill bless( {
06:56 willthechill 'children' => [
06:56 willthechill 'our',
06:56 willthechill bless( {
06:56 willthechill
06:56 willthechill there that kinda worked better, but it cut the paste short
06:56 willthechill that's an RPerl AST
06:56 willthechill RPerl is using compile-time data types as well, obviously, but not just scalar and array like the python people
06:56 willthechill we have REAL types!  :D
06:57 rurban sound overly strict to me. they should either create a union type int+float on the fly, or type the function declaration => int and catch that error that way.
06:57 willthechill BOOO too much magic!
06:57 rurban But I guess that's too hard to C++
06:58 willthechill real types only!
06:58 rurban we have the problem with strings mainly
06:58 willthechill integer, float, string, array, hash
06:58 willthechill bool and character if you must have it
06:58 willthechill void is valid too
06:59 willthechill scalar is bad because it is not a real type
06:59 rurban I'll add list for perl6/p2 (lazy lists)
06:59 willthechill but I will probably have no choice but to allow it eventually
06:59 willthechill no lists are confusing, arrays only
06:59 willthechill only the grammar should know and care what a list is
06:59 rurban scalar is just union { int, num, str, bool, ref }
07:02 willthechill https://github.com/wbraswell/rperl/blob/master/lib/RPerl/Grammar.eyp#L161
07:02 willthechill yes I know scalar is just a union, it is a UNION OF EVIL MAGIC
07:02 willthechill people who think they need scalars are really just practicing terrible programming
07:04 rurban and I forgot object
07:04 rurban which has it's own magic
07:04 willthechill OH YES you are 100% correct, we must allow object type!
07:05 willthechill object is very much allowed and beloved in RPerl
07:05 willthechill because it is a low-magic object equivalent to a C++ object!  :D
07:07 travis-ci RPerl build passed. Will Braswell says 'Grammar Test Modules, Empty Package Separator'
07:07 travis-ci http://travis-ci.org/wbraswell/rperl/builds/38331035 https://github.com/wbraswell/rperl/compare/360cdd272b5e...68c9316c397a
07:11 rurban add you: https://news.ycombinator.com/item?id=8474842
07:12 rurban correct summary?
07:16 willthechill yes I would say that's correct
07:16 willthechill I also hesitate to call it JIT, your assessment of the term JIT as somewhat ambiguous is correct
07:18 willthechill I've already stated to you in the past that I will consider adding "JIT" to a future version of RPerl, which I define as the ability for RPerl to compile very fast (once it is boot-strapping I assume) and compile smaller Compile Units (currently must be whole package or class)
07:18 willthechill so in other words, when RPerl can run fast enough and fine-grained enough that it can compile a single subroutine or even less than a single subroutine, and do so DURING RUNTIME because the compile stage is so fast, then I will call it JIT, because it really will be JIT
07:19 willthechill low-magic JIT!  different than most other JIT which seems to be focused on high magic, since JIT seems to be one of the only ways to make high-magic code run decently fast
07:26 rurban joined #perl11
07:45 rurban joined #perl11
07:52 rurban yes, the compilation should be shorter than a GC. I do the same with Perfect::Hash, 0.2sec compilation time
07:52 rurban if it's under 400ms I can call it JIT
07:58 willthechill where did you come up with 400ms as the JIT threshold?
09:19 rurban that about the typical GC time needed in java
09:19 rurban my GC times are 4-10ms
09:20 rurban But I went with the worst case
09:20 rurban 10ms is max hard real-time latency
09:21 rurban so you don't recognize if it's a GC pause or a JIT pause
09:22 rurban got coros now almost working in parrot
09:43 basiliscos joined #perl11
11:36 rurban joined #perl11
12:08 basiliscos joined #perl11
13:26 rurban joined #perl11
13:55 basiliscos joined #perl11
14:42 Mirjam joined #perl11
14:55 mirjam joined #perl11
15:05 mirjam joined #perl11
15:43 rurban joined #perl11
16:29 basiliscos joined #perl11
16:40 basiliscos joined #perl11

| Channels | #perl11 index | Today | | Search | Google Search | Plain-Text | summary