Code Monkey home page Code Monkey logo

p5-devel-iperl's People

Contributors

dlukes avatar iynehz avatar joelandman avatar manwar avatar startstarz avatar szabgab avatar thomasjm avatar tofjw avatar zmughal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

p5-devel-iperl's Issues

ZMQ portability

  • need to see if ZMQ can be installed on all systems
  • perhaps http://p3rl.org/ZMQ::FFI may help?
  • The IPython messaging protocol uses ZeroMQ. This might make the kernel not as portable as it could
    be. There are several solutions to this.
    • Create a new wire protocol entirely using Perl and sockets. Frontends that support this protocol
      would need to be written.
    • Try to ensure ZeroMQ works everywhere. There exist the Alien::ZeroMQ and ZeroMQ::FFI distributions
      which could help avoid compilation on some platforms.
  • Make sure Alien::ZMQ works everywhere. Perhaps it can use Alien::Base.
  • lestrrat-p5/ZMQ#13, chazmcgarvey/p5-Alien-ZMQ#1

support kernel spec for IPython 3.0

See ipython/ipython#6126 to see how live notebook switching works.

/home/zaki/sw_projects/p5-Devel-IPerl/ipython/IPython/kernel/manager.py:91: UserWarning: Setting kernel_cmd is deprecated, use kernel_spec to start different kernels.
warnings.warn("Setting kernel_cmd is deprecated, use kernel_spec to "
IPython Console 3.0.0-dev

IPython profile: perl

Convert notebooks to POD

  • Convert images (to files?).
  • Add a link to nbviewer version.
  • Integrate with GitHub.
  • options to include stderr/stdout

Add B::Keywords to dependencies

Just installed Devel::IPerl on a 5.20 threaded perl on OS X 10.11.1. The install went through after getting Cairo to install; needed to reinstall cairo via homebrew.

Running a jupyter notebook went into a kernel death spiral until I installed B::Keywords.

It's working now! Woo!

issue saving the notebook after redefined subroutine

if a subroutine is saved in a cell and then recompiled, the notebook can't be saved. The redefined subroutine issue is avoidable, but it may be a common issue.

Notebook Validation failed: [u'Subroutine kgd_tp redefined at reply input line 12.\n'] is not of type u'string':
[
"Subroutine kgd_tp redefined at reply input line 12.\n"
]

Async output streams

  • Handling output streams in an async way is currently not supported.
    For example:
      for (0..2) {
         say "test";
         sleep 2;
      }

will take 6 seconds to run before it prints out "test" 3 times. I am assuming the best way
to do this is to spawn a child process with redirected output handles and monitor its output.
Perhaps by using IO::Pty. It is important to keep in mind how portable that
may be.

stty: stdin isn't a terminal

using the command line from a cell with back ticks worked for me before (e.g. perldoc Foo::Bar), but not with the most recent changes.

TOP=`readlink -f "$TOP"`

The readlink line in the iperl script is causing the kernel to crash on my os x machine. I commented out the line and it works well for me.

Test suite

  • Start IPython console with IPerl
  • Run a single line of code via the console and get an expected output.
  • Test I/O under both Devel::REPL and Reply (using only plugins install with core Perl)

Code snippets

  • use strict;
  • lexical variables
  • package variables
  • define function
  • for loop

HTML widget system

Bidirectional JS

  • I want to see bidirectional interactive JS working with IPerl. It would be neat to be able to
    be able to use Xtk for volume rendering and be able to get events
    back to Perl code and then call back to JS .

Figure out the workflow for autoreload

  • CPAN modules that might help: Module::Reload, Module::Reload::Selective, Class::Unload, again, Module::Refresh, Class::Refresh
  • How well does this work with Moo[se]?

IPython extension: http://ipython.org/ipython-doc/stable/config/extensions/autoreload.html

package Experiment {
use Moo;

has [ qw( param1 param2 param3 ) ] => ( is => 'rw' );
has data => ( is => 'rw' );

};

I should be able to come back later and add another attribute to the Moo class and not have it give me the error: You cannot overwrite a locally defined method (attribute_name) with an accessor at...

pretty-print variables?

I know in IPerl we can use DDP or Data::Dumper and explicitly call p() or Dumper() to pretty-print variables. But can we make it behave like the reply or re.pl in that it automatically does pretty-print on entering a variable or evaluating an expression?

Test Unicode for STDOUT output

use v5.16;
use utf8::all;
say "\x{2019}";
use v5.16;
use Statistics::NiceR;

$r = Statistics::NiceR->new;
say $r->eval_parse( 'summary( lm( Sepal.Width ~ Sepal.Length, iris ) )' );

mpld3 support

  • Support for D3.js using a matplotlib API is available through mpld3.
    It may be possible to provide a Perl API to the same JS.

Multimedia I/O

  • Replace the small proof-of-concept content sniffing display hook
    with a pluggable system that has better support for MIME types and
    user configuration. It currently uses libmagic, so this needs to compile on all platforms.
    The Julia multimethod approach with MIME types and type pattern matching may be the way to go.
    See the multimedia I/O section
    of the base standard library. I am thinking that Type::Tiny could
    be useful here.

Improved `iperl` startup script

  • The shell script for starting iperl (bin/iperl) needs to be converted to Perl for portability.
    I think that it should just be a wrapper around the ipython command except that it will also
    help create and load Perl profiles.

ZeroMQ kernel shutdown error

  • Upon shutdown of the language kernel, ZeroMQ gives the following error:

        Bad file descriptor (epoll.cpp:67)
    

    I have a feeling this is because a part of the kernel is trying to read from a socket after
    the frontend has closed it.

The big split: jupyter notebook

I'm having difficulty opening old iperl notebooks jupyter notebook after installing ipython4. I can load and reload a new iperl notebook.

Software Carpentry curriculum

A Perl Back End

The IPython Notebook doesn't have to use Python as the back-end process:
they've defined a JSON-based protocol for communicating with arbitrary processes,
and people have already built a replacement back-end in Julia (and are working on one in R).
There are lots of Perl programmers in science;
a Perl back-end would probably get a lot of love.

tests, docs, refactoring

  • As always, the code needs more documentation, refactoring, logging, debugging tools and testing.
    The testing will require making a small frontend client. I think it needs more tests before it can
    go on CPAN and the only way to figure out what those tests should be like is by using the code.

PDL::Graphics::Gnuplot plugin bugs

Needs more work:

  • multiplot does not work: Error: "Can't set hardcopy while in multiplot mode!"
  • outputs "(killed gnuplot)" to STDERR when replotting. Trying to capture this causes issues.

Configurable REPL backends

Now that both Devel::REPL and Reply are both supported, there needs to be a way of configuring how those are started up.

  • choose which backend to use
  • choose which plugins to load for that particular REPL

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.