NAME
Evo - Evo - the next generation development framework
VERSION
version 0.0229
DESCRIPTION
This framework opens a new age of perl programming It provides rewritten and postmodern features like
[almost ready] Rewritten sexy Evo::Export
[almost ready] Post modern code injection programming Evo::Class instead of traditional OO
[almost ready] Fast non recursive Evo::Promise, 100% "Promise/Spec A" compatible. + Nice syntax via experimental Evo::Prm
(experimental) Exception handling in pure perl: Evo::Eval, "try catch" alternative. Like
Try::Tiny, but without its bugs and much faster(experimental) Evo::Ee - a role that provides "EventEmitter" abilities
(experimental, not ready)
Boa- new sexy testing framework and runner for both blocking and non-blocking tests (Unit testing + functional testing). 10-100 times faster than traditionalproveand has a"watch"mode.(not started yet) Base modules for non-blocking client/server programming
SYNOPSYS
# enables strict, warnings, utf8, :5.22, signatures, postderef
use Evo;
STATE
This module is under active development. It changes often and a lot! Get involved https://github.com/alexbyk/perl-evo
Also there are many gaps in documentation.
VIM

Vim ultisnips with Evo support can be found here: https://github.com/alexbyk/vim-ultisnips-perl
IMPORTING
Load Module and call import method, emulating caller.
use Evo 'Foo'; # use Foo
use Evo 'Foo ()'; # use Foo();
use Evo 'FooClass foo1 foo2'; # use FooClass qw(foo1 foo2);
Used to make package header shorter
use Evo '-Eval *; My::App'; # use Evo::Eval '*'; use My::App;
All examples above also import string; experimental and other from Evo::Default
SHORTCUTS
:: => (append to current)
/:: => (append to parent)
- => Evo (append to Evo)
shortcuts
Shortcuts are used to make life easier during code refactoring (and your module shorter) in Evo::Export and "with" in Evo::Class
- is replaced by Evo
use Evo '-Promise promise'; # "Evo::Promise promise"
: and :: depend on the package name where they're used
:: means relative to the current module as a child
package My::App;
use Evo '::Bar'; # My::App::Bar
/ means parent and /:: means it's a sibling module (child of the parent of the current module)
package My::App;
use Evo '/::Bar'; # My::Bar
IMPORTS
With or without options, use Evo loads Evo::Default:
-Default
use strict;
use warnings;
use feature ':5.22';
use experimental 'signatures';
use feature 'postderef';
I have decided that using 5.22 and some of the experimental features it brings has many benefits and is worth it. This list will be expanded in the future, I hope
-Loaded
This marks inline or generated classes as loaded, so can be used with require or use. So this code won't die. Used for test and examples in the documentation
require My::Inline;
{
package My::Inline;
use Evo -Loaded;
sub foo {'foo'}
}
AUTHOR
alexbyk.com
COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by alexbyk.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.