]> Repositorios git - scryer-prolog.git/log
scryer-prolog.git
5 years agoMore improvement on mod from CLP(Z)
notoria [Thu, 13 Aug 2020 08:38:57 +0000 (10:38 +0200)]
More improvement on mod from CLP(Z)

5 years agoImproved mod in CLP(Z)
notoria [Mon, 10 Aug 2020 19:00:54 +0000 (21:00 +0200)]
Improved mod in CLP(Z)

This is still a work in progress.

5 years agoupdate prolog_parser version (#657)
Mark Thom [Sat, 8 Aug 2020 22:29:35 +0000 (16:29 -0600)]
update prolog_parser version (#657)

5 years agoMerge branch 'master' of https://github.com/mthom/scryer-prolog
Mark Thom [Sat, 8 Aug 2020 19:12:09 +0000 (13:12 -0600)]
Merge branch 'master' of https://github.com/mthom/scryer-prolog

5 years agofix bugs in PausedPrologStream (#661)
Mark Thom [Sat, 8 Aug 2020 19:11:09 +0000 (13:11 -0600)]
fix bugs in PausedPrologStream (#661)

5 years agoMerge pull request #656 from notoria/try_from_number
Mark Thom [Sat, 8 Aug 2020 15:24:29 +0000 (12:24 -0300)]
Merge pull request #656 from notoria/try_from_number

Fixed some conversion issues

5 years agoMerge pull request #660 from triska/shorter_crypto
Mark Thom [Sat, 8 Aug 2020 15:23:40 +0000 (12:23 -0300)]
Merge pull request #660 from triska/shorter_crypto

Shorten and improve implementation of several cryptographic routines

5 years agoensure proper lengths of key and initialization vector
Markus Triska [Thu, 6 Aug 2020 21:27:49 +0000 (23:27 +0200)]
ensure proper lengths of key and initialization vector

This avoids crashes when using unsuitable lengths.

5 years agoremove entailed constraint
Markus Triska [Thu, 6 Aug 2020 21:17:08 +0000 (23:17 +0200)]
remove entailed constraint

5 years agouse self.deref(...) (see #653)
Markus Triska [Thu, 6 Aug 2020 18:12:57 +0000 (20:12 +0200)]
use self.deref(...) (see #653)

5 years agouse atom_argument_to_string
Markus Triska [Thu, 6 Aug 2020 18:12:23 +0000 (20:12 +0200)]
use atom_argument_to_string

5 years agoFixed some conversion issues
notoria [Thu, 6 Aug 2020 09:39:55 +0000 (11:39 +0200)]
Fixed some conversion issues

5 years agofix crash in CryptoPasswordHash (#653), conversion of Rational integers in number_cha...
Mark Thom [Thu, 6 Aug 2020 06:17:55 +0000 (00:17 -0600)]
fix crash in CryptoPasswordHash (#653), conversion of Rational integers in number_chars/2 (#655)

5 years agoMerge pull request #654 from triska/aad
Mark Thom [Thu, 6 Aug 2020 05:40:51 +0000 (02:40 -0300)]
Merge pull request #654 from triska/aad

ADDED: library(crypto): Support for additional authenticated data (AAD).

5 years agoshorten, and increase readability
Markus Triska [Wed, 5 Aug 2020 18:31:56 +0000 (20:31 +0200)]
shorten, and increase readability

5 years agouse "octet" as a string literal, reducing the number of arguments
Markus Triska [Wed, 5 Aug 2020 18:10:58 +0000 (20:10 +0200)]
use "octet" as a string literal, reducing the number of arguments

5 years agoADDED: library(crypto): Support for additional authenticated data (AAD).
Markus Triska [Wed, 5 Aug 2020 18:09:07 +0000 (20:09 +0200)]
ADDED: library(crypto): Support for additional authenticated data (AAD).

Additional authenticated data can now be specified with the new
aad(Chars) option for encryption and decryption. It is authenticated,
but not encrypted.

5 years agoupdate prolog_parser to 0.8.67 (#648)
Mark Thom [Wed, 5 Aug 2020 05:35:10 +0000 (23:35 -0600)]
update prolog_parser to 0.8.67 (#648)

5 years agounify '[]' with proper [] in atom_chars/2 (#569)
Mark Thom [Tue, 4 Aug 2020 01:29:53 +0000 (19:29 -0600)]
unify '[]' with proper [] in atom_chars/2 (#569)

5 years agoreconcile '[]' and [] (#644), solve remaining conformity issues (#648), move (--...
Mark Thom [Mon, 3 Aug 2020 05:35:53 +0000 (23:35 -0600)]
reconcile '[]' and [] (#644), solve remaining conformity issues (#648), move (-->) from dcgs.pl to builtins.pl (#649)

5 years agoMerge pull request #647 from notoria/newline
Mark Thom [Fri, 31 Jul 2020 21:19:12 +0000 (18:19 -0300)]
Merge pull request #647 from notoria/newline

Improved readline

5 years agoImproved readline
notoria [Fri, 31 Jul 2020 16:12:38 +0000 (18:12 +0200)]
Improved readline

5 years agoMerge pull request #645 from triska/curve25519
Mark Thom [Thu, 30 Jul 2020 13:29:20 +0000 (10:29 -0300)]
Merge pull request #645 from triska/curve25519

ADDED: library(crypto): ECDH key exchange over Curve25519 (X25519)

5 years agoADDED: library(crypto): ECDH key exchange over Curve25519 (X25519)
Markus Triska [Wed, 29 Jul 2020 21:14:16 +0000 (23:14 +0200)]
ADDED: library(crypto): ECDH key exchange over Curve25519 (X25519)

5 years agothe indexer now categorizes partial strings only as lists (#623, #642)
Mark Thom [Mon, 27 Jul 2020 22:43:43 +0000 (16:43 -0600)]
the indexer now categorizes partial strings only as lists (#623, #642)

5 years agoMerge pull request #639 from triska/flush_output
Mark Thom [Sat, 25 Jul 2020 16:20:45 +0000 (13:20 -0300)]
Merge pull request #639 from triska/flush_output

ENHANCED: flush output for impure I/O (format/[2,3], portray_clause/1 etc.)

5 years agoENHANCED: flush output for impure I/O (format/[2,3], portray_clause/1 etc.)
Markus Triska [Sat, 25 Jul 2020 07:47:59 +0000 (09:47 +0200)]
ENHANCED: flush output for impure I/O (format/[2,3], portray_clause/1 etc.)

Without this, we do not get a (timely) prompt in cases like:

    ?- format("press a key: ", []), get_single_char(C).

whereas for example write/1 already works in such cases:

    ?- write('press a key: '), get_single_char(C).
    press a key:

5 years agoMerge pull request #638 from triska/base64
Mark Thom [Thu, 23 Jul 2020 22:49:12 +0000 (19:49 -0300)]
Merge pull request #638 from triska/base64

ADDED: chars_base64/3 for efficient bidirectional Base64 conversion.

5 years agothrow an error if a character cannot be encoded
Markus Triska [Wed, 22 Jul 2020 22:35:23 +0000 (00:35 +0200)]
throw an error if a character cannot be encoded

5 years agobetter error handling for options
Markus Triska [Wed, 22 Jul 2020 22:27:31 +0000 (00:27 +0200)]
better error handling for options

5 years agouse newly available chars_base64/3
Markus Triska [Wed, 22 Jul 2020 18:19:56 +0000 (20:19 +0200)]
use newly available chars_base64/3

5 years agoADDED: chars_base64/3 for efficient bidirectional Base64 conversion.
Markus Triska [Wed, 22 Jul 2020 18:17:46 +0000 (20:17 +0200)]
ADDED: chars_base64/3 for efficient bidirectional Base64 conversion.

5 years agoMerge pull request #636 from triska/path_segments
Mark Thom [Sun, 19 Jul 2020 16:16:27 +0000 (13:16 -0300)]
Merge pull request #636 from triska/path_segments

ADDED: path_segments/2 for portable reasoning about path components.

5 years agoADDED: path_segments/2 for portable reasoning about path components.
Markus Triska [Sun, 19 Jul 2020 09:07:03 +0000 (11:07 +0200)]
ADDED: path_segments/2 for portable reasoning about path components.

The platform-specific directory separator is taken into account.
The clean representation of segments as a list simplifies reasoning.

5 years agoMerge pull request #633 from triska/file_time
Mark Thom [Sat, 18 Jul 2020 15:40:53 +0000 (12:40 -0300)]
Merge pull request #633 from triska/file_time

ADDED: file_creation_time/2 and file_access_time/2.

5 years agoMerge pull request #631 from cduret/lib_csv
Mark Thom [Sat, 18 Jul 2020 15:40:28 +0000 (12:40 -0300)]
Merge pull request #631 from cduret/lib_csv

add write_csv & change skip_header to with_header option

5 years agoMerge pull request #635 from triska/more_links
Mark Thom [Sat, 18 Jul 2020 15:40:09 +0000 (12:40 -0300)]
Merge pull request #635 from triska/more_links

DOC: add more links to libraries, and include iso_ext in the enumeration

5 years agoDOC: add more links to libraries, and include iso_ext in the enumeration
Markus Triska [Sat, 18 Jul 2020 06:09:52 +0000 (08:09 +0200)]
DOC: add more links to libraries, and include iso_ext in the enumeration

5 years agolook up operator precedence when arity does not match what the atom records, don...
Mark Thom [Fri, 17 Jul 2020 17:02:58 +0000 (11:02 -0600)]
look up operator precedence when arity does not match what the atom records, don't print brackets around outermost '+' (#629)

5 years agoADDED: file_creation_time/2 and file_access_time/2.
Markus Triska [Fri, 17 Jul 2020 16:48:39 +0000 (18:48 +0200)]
ADDED: file_creation_time/2 and file_access_time/2.

The code can be simplified once if- and while-let-chains are available:

    https://github.com/rust-lang/rust/issues/53667

5 years agoMerge pull request #632 from triska/path_canonical
Mark Thom [Fri, 17 Jul 2020 00:03:13 +0000 (21:03 -0300)]
Merge pull request #632 from triska/path_canonical

ADDED: path_canonical/2, obtaining the canonical absolute path.

5 years agoset domain_error exception & use format/3 with setup_call_cleanup/3 for stream writing
Cyrille Duret [Thu, 16 Jul 2020 23:21:40 +0000 (01:21 +0200)]
set domain_error exception & use format/3 with setup_call_cleanup/3 for stream writing

5 years agoENHANCED: Reorder fields in time stamps so that (@<)/2 is meaningful.
Markus Triska [Thu, 16 Jul 2020 21:33:52 +0000 (23:33 +0200)]
ENHANCED: Reorder fields in time stamps so that (@<)/2 is meaningful.

5 years agoADDED: file_modification_time/2, obtaining a time stamp.
Markus Triska [Thu, 16 Jul 2020 20:56:10 +0000 (22:56 +0200)]
ADDED: file_modification_time/2, obtaining a time stamp.

This addresses a remaining aspect of #511.

5 years agoADDED: path_canonical/2, obtaining the canonical absolute path.
Markus Triska [Wed, 15 Jul 2020 18:24:26 +0000 (20:24 +0200)]
ADDED: path_canonical/2, obtaining the canonical absolute path.

This addresses a remaining aspect of #511.

5 years agoset throw() to follow ISO recommendations
Cyrille Duret [Wed, 15 Jul 2020 16:26:57 +0000 (18:26 +0200)]
set throw() to follow ISO recommendations

5 years agoadd write_csv & change skip_header to with_header option
794404 [Wed, 15 Jul 2020 11:02:30 +0000 (13:02 +0200)]
add write_csv & change skip_header to with_header option

5 years agoMerge pull request #630 from triska/delete_file
Mark Thom [Tue, 14 Jul 2020 23:26:51 +0000 (20:26 -0300)]
Merge pull request #630 from triska/delete_file

ADDED: delete_file/1, addressing a remaining aspect of #511

5 years agoADDED: working_directory/2, addressing a remaining aspect of #511
Markus Triska [Tue, 14 Jul 2020 20:37:05 +0000 (22:37 +0200)]
ADDED: working_directory/2, addressing a remaining aspect of #511

5 years agoADDED: delete_file/1, addressing a remaining aspect of #511
Markus Triska [Tue, 14 Jul 2020 20:16:15 +0000 (22:16 +0200)]
ADDED: delete_file/1, addressing a remaining aspect of #511

5 years agoMerge pull request #626 from triska/compact_crypto
Mark Thom [Sun, 12 Jul 2020 15:17:58 +0000 (12:17 -0300)]
Merge pull request #626 from triska/compact_crypto

ENHANCED: library(crypto): Retain the compact representation of strings.

5 years agomention symmetric encryption and ChaCha20-Poly1305
Markus Triska [Sun, 12 Jul 2020 09:58:39 +0000 (11:58 +0200)]
mention symmetric encryption and ChaCha20-Poly1305

5 years agoENHANCED: library(crypto): Retain the compact representation of strings.
Markus Triska [Sun, 12 Jul 2020 08:07:56 +0000 (10:07 +0200)]
ENHANCED: library(crypto): Retain the compact representation of strings.

This avoids the costly (in terms of space requirements!) conversion of
compact lists of characters to lists of integers, making hashing, HKDF,
encryption, decryption, signing and signature verification an order of
magnitude more efficient (primarily in terms of space, also in time).

This makes library(crypto) suitable to process also very large files.

5 years agoMerge pull request #625 from triska/os
Mark Thom [Sun, 12 Jul 2020 02:50:01 +0000 (23:50 -0300)]
Merge pull request #625 from triska/os

ADDED: library(os), reasoning about environment variables.

5 years agouse newly available character type in must_be/2
Markus Triska [Sat, 11 Jul 2020 17:52:01 +0000 (19:52 +0200)]
use newly available character type in must_be/2

5 years agoADDED: library(os), reasoning about environment variables.
Markus Triska [Sat, 11 Jul 2020 16:41:18 +0000 (18:41 +0200)]
ADDED: library(os), reasoning about environment variables.

Together with library(files), this addresses #511.

5 years agoslight update to the BiMetaTrans README
Mark Thom [Fri, 10 Jul 2020 21:22:15 +0000 (15:22 -0600)]
slight update to the BiMetaTrans README

5 years agoupdate bimetatrans tests
Mark Thom [Fri, 10 Jul 2020 16:26:48 +0000 (10:26 -0600)]
update bimetatrans tests

5 years agoadd bimetatrans README
Mark Thom [Fri, 10 Jul 2020 02:53:13 +0000 (20:53 -0600)]
add bimetatrans README

5 years agoMerge pull request #621 from notoria/tabling
Mark Thom [Fri, 3 Jul 2020 17:40:52 +0000 (14:40 -0300)]
Merge pull request #621 from notoria/tabling

Tabling

5 years agoEnhanced the implementation
notoria [Wed, 1 Jul 2020 11:14:12 +0000 (13:14 +0200)]
Enhanced the implementation

The restriction has been removed by using read_library_path from
cfd15f4e027b4df216e723bbd35facac28a09a1c.

5 years agoAllowing paths in use_module(library(..)) (#604)
notoria [Wed, 1 Jul 2020 08:22:17 +0000 (10:22 +0200)]
Allowing paths in use_module(library(..)) (#604)

In a module, the path is restricted in being an atom.

5 years agoRevert "allow paths in use_module(library(..)) (#604)"
notoria [Wed, 1 Jul 2020 08:07:26 +0000 (10:07 +0200)]
Revert "allow paths in use_module(library(..)) (#604)"

This reverts commit cfd15f4e027b4df216e723bbd35facac28a09a1c.

5 years agoRevert "build.rs recursively delves into directories during library bake stage, corre...
notoria [Wed, 1 Jul 2020 08:06:20 +0000 (10:06 +0200)]
Revert "build.rs recursively delves into directories during library bake stage, correct misnamed file at machine/mod.rs:455 (#617)"

This reverts commit c1b577f2c7a148b13c1692ab8ac741aa57b0ac43.

5 years agoMerge pull request #606 from triska/files
Mark Thom [Tue, 30 Jun 2020 16:34:39 +0000 (13:34 -0300)]
Merge pull request #606 from triska/files

ADDED: library(files), for reasoning about files and directories.

5 years agobuild.rs recursively delves into directories during library bake stage, correct misna...
Mark Thom [Mon, 29 Jun 2020 06:58:10 +0000 (00:58 -0600)]
build.rs recursively delves into directories during library bake stage, correct misnamed file at machine/mod.rs:455 (#617)

5 years agoMerge pull request #613 from cduret/csv_lib
Mark Thom [Sat, 27 Jun 2020 19:28:10 +0000 (16:28 -0300)]
Merge pull request #613 from cduret/csv_lib

add csv library

5 years agoadd csv library
Cyrille Duret [Thu, 25 Jun 2020 19:13:29 +0000 (21:13 +0200)]
add csv library

5 years agodirectory_files/2: throw representation error if into_string() fails
Markus Triska [Sat, 20 Jun 2020 08:12:14 +0000 (10:12 +0200)]
directory_files/2: throw representation error if into_string() fails

Suggested by @notoria in #606. Many thanks!

5 years agocomment on indexing, addressing a comment by @pmoura in #606
Markus Triska [Wed, 24 Jun 2020 20:29:22 +0000 (22:29 +0200)]
comment on indexing, addressing a comment by @pmoura in #606

If indexing is needed for lists of characters, it should be added to
the engine.

5 years agoADDED: library(files), for reasoning about files and directories.
Markus Triska [Fri, 19 Jun 2020 16:20:31 +0000 (18:20 +0200)]
ADDED: library(files), for reasoning about files and directories.

5 years agoMerge pull request #608 from triska/xml
Mark Thom [Mon, 22 Jun 2020 15:21:35 +0000 (12:21 -0300)]
Merge pull request #608 from triska/xml

ADDED: load_xml/3 to load XML files from streams, files and strings.

5 years agolibrary(format) is not used in this example
Markus Triska [Sun, 21 Jun 2020 07:44:57 +0000 (09:44 +0200)]
library(format) is not used in this example

5 years agoADDED: load_xml/3 to load XML files from streams, files and strings.
Markus Triska [Sun, 21 Jun 2020 06:35:08 +0000 (08:35 +0200)]
ADDED: load_xml/3 to load XML files from streams, files and strings.

5 years agoMerge pull request #607 from triska/xpath
Mark Thom [Sat, 20 Jun 2020 17:46:52 +0000 (14:46 -0300)]
Merge pull request #607 from triska/xpath

ADDED: library(xpath) for convenient analysis of HTML and XML documents.

5 years agoimport member/2 from library(lists)
Markus Triska [Sat, 20 Jun 2020 17:07:43 +0000 (19:07 +0200)]
import member/2 from library(lists)

This is needed when processing redirects.

5 years agoADDED: library(xpath) for convenient analysis of HTML and XML documents.
Markus Triska [Sat, 20 Jun 2020 10:25:13 +0000 (12:25 +0200)]
ADDED: library(xpath) for convenient analysis of HTML and XML documents.

5 years agoMerge pull request #596 from triska/sgml
Mark Thom [Fri, 19 Jun 2020 15:59:06 +0000 (12:59 -0300)]
Merge pull request #596 from triska/sgml

ADDED: library(sgml), providing load_html/3 to parse HTML documents

5 years agoMerge pull request #605 from notoria/debug
Mark Thom [Fri, 19 Jun 2020 15:58:26 +0000 (12:58 -0300)]
Merge pull request #605 from notoria/debug

Added library(debug)

5 years agoAdded an entry in README
notoria [Fri, 19 Jun 2020 15:48:55 +0000 (17:48 +0200)]
Added an entry in README

5 years agoAdded library(debug)
notoria [Fri, 19 Jun 2020 15:18:59 +0000 (17:18 +0200)]
Added library(debug)

5 years agoADDED: library(sgml), providing load_html/3 to parse HTML documents
Markus Triska [Sun, 14 Jun 2020 14:52:46 +0000 (16:52 +0200)]
ADDED: library(sgml), providing load_html/3 to parse HTML documents

5 years agoMerge pull request #592 from triska/http_open
Mark Thom [Fri, 19 Jun 2020 14:30:23 +0000 (11:30 -0300)]
Merge pull request #592 from triska/http_open

ADDED: library(http/http_open), opening HTTP and HTTPS streams for reading

5 years agoMerge branch 'master' of https://github.com/mthom/rusty-wam
Mark Thom [Fri, 19 Jun 2020 06:58:43 +0000 (00:58 -0600)]
Merge branch 'master' of https://github.com/mthom/rusty-wam

5 years agoallow paths in use_module(library(..)) (#604)
Mark Thom [Fri, 19 Jun 2020 06:57:56 +0000 (00:57 -0600)]
allow paths in use_module(library(..)) (#604)

5 years agoclarify meaning of AssertItems and QueryItems in BiMetaTrans source-level documentation
Mark Thom [Fri, 19 Jun 2020 05:47:54 +0000 (23:47 -0600)]
clarify meaning of AssertItems and QueryItems in BiMetaTrans source-level documentation

5 years agoMerge pull request #602 from triska/put_char
Mark Thom [Thu, 18 Jun 2020 15:16:47 +0000 (12:16 -0300)]
Merge pull request #602 from triska/put_char

put_char/[1,2]: throw type errors for atoms that are not characters

5 years agoput_char/[1,2]: throw type errors for atoms that are not characters
Markus Triska [Wed, 17 Jun 2020 22:09:33 +0000 (00:09 +0200)]
put_char/[1,2]: throw type errors for atoms that are not characters

Example:

    ?- put_char(hello).
    %@ caught: error(type_error(character,hello),put_char/2)

5 years agoMerge pull request #597 from triska/faster_format
Mark Thom [Wed, 17 Jun 2020 21:48:49 +0000 (18:48 -0300)]
Merge pull request #597 from triska/faster_format

ENHANCED: much faster format/3 for text streams

5 years agoADDED: library(http/http_open), opening HTTP and HTTPS streams for reading
Markus Triska [Sat, 13 Jun 2020 07:32:08 +0000 (09:32 +0200)]
ADDED: library(http/http_open), opening HTTP and HTTPS streams for reading

Example:

   ?- http_open("https://github.com/mthom/scryer-prolog", Stream, []),
      length(Ls, 10),
      maplist(get_char(Stream), Ls).

Yielding:

   %@    Stream = '$stream'(0x7fba4c59ef10), Ls = "\n\n\n\n\n<!DOC"
   %@ ;  false.

5 years agocover Addr::Fixnum when not referenced as an Addr::Con, undefine dynamic predicate...
Mark Thom [Wed, 17 Jun 2020 01:03:07 +0000 (19:03 -0600)]
cover Addr::Fixnum when not referenced as an Addr::Con, undefine dynamic predicate definitions from within modules too (#588)

5 years agoMerge branch 'master' of https://github.com/mthom/rusty-wam
Mark Thom [Wed, 17 Jun 2020 00:47:53 +0000 (18:47 -0600)]
Merge branch 'master' of https://github.com/mthom/rusty-wam

5 years agofix copy_partial_string bug (#572)
Mark Thom [Wed, 17 Jun 2020 00:47:39 +0000 (18:47 -0600)]
fix copy_partial_string bug (#572)

5 years agoENHANCED: much faster format/3 for text streams
Markus Triska [Tue, 16 Jun 2020 19:13:03 +0000 (21:13 +0200)]
ENHANCED: much faster format/3 for text streams

This is now also used by format/2 to emit output on the terminal,
and significantly speeds up toplevel output of long strings.

5 years agoMerge pull request #590 from triska/read_line_to_chars
Mark Thom [Tue, 16 Jun 2020 03:06:01 +0000 (00:06 -0300)]
Merge pull request #590 from triska/read_line_to_chars

ADDED: read_line_to_chars/3, reading up to and including "\n" from a stream

5 years agochange the plurality of AssertItem(s), QueryItem(s) in bimetatrans.pl
Mark Thom [Mon, 15 Jun 2020 22:38:27 +0000 (16:38 -0600)]
change the plurality of AssertItem(s), QueryItem(s) in bimetatrans.pl

5 years agoMerge pull request #595 from triska/faster_format
Mark Thom [Sun, 14 Jun 2020 15:37:06 +0000 (12:37 -0300)]
Merge pull request #595 from triska/faster_format

ENHANCED: faster format/3 when writing to binary streams

5 years agouse format/3 to benefit from efficiency improvements
Markus Triska [Sun, 14 Jun 2020 08:50:21 +0000 (10:50 +0200)]
use format/3 to benefit from efficiency improvements

5 years agoENHANCED: faster format/3 when writing to binary streams
Markus Triska [Sun, 14 Jun 2020 08:06:27 +0000 (10:06 +0200)]
ENHANCED: faster format/3 when writing to binary streams

This is also more secure, since it does not change the atom table
and therefore leaves little trace of what was processed.

5 years agoMerge pull request #589 from triska/lazy_pio
Mark Thom [Sun, 14 Jun 2020 00:09:19 +0000 (21:09 -0300)]
Merge pull request #589 from triska/lazy_pio

ENHANCED: Read more characters at once, significantly speeding up library(pio)