0.232 2023-11-29
[Test Fix]
* Fix a test bug of IPv6 test skip.
0.231 2023-10-22
[Changes]
* Add IO::Socket#Sockaddr field.
* Throw an exception when PeerAddr and Listen option in IO::Socket::IP#init are used together.
* Throw an exception when Peer and Local option in IO::Socket::Unix#init are used together.
[Incompatible Changes]
* Change arguments of IO::Socket#connect method.
[Before]
protected method connect : void ($sockaddr : Sys::Socket::Sockaddr);
[After]
protected method connect : void ();
* Change arguments of IO::Socket#bind method.
[Before]
protected method bind : void ($sockaddr : Sys::Socket::Sockaddr);
[After]
protected method bind : void ();
0.230 2023-10-22
[Changes]
* Operate non-blocking getaddrinfo using Net::DNS::Native.
[Requirement Changes]
* Require SPVM::Net::DNS::Native 0.001.
[New Features]
* Add IO::Socket::IP#create_sockaddr method.
* Add IO::Socket::IP::Import::IPv4#create_sockaddr method.
* Add IO::Socket::IP::Import::IPv6#create_sockaddr method.
0.229 2023-10-19
[Requirement Changes]
* Require SPVM::Go 0.008.
[Test Improvement]
* Add tests for IO::Socekt::IP#accept method.
* Add tests for accept timeout and read timeout for IO::Socket::IP.
0.228 2023-10-18
[Requirement Changes]
* Require SPVM::Sys 0.528.
[Bug Fix]
* Fix a bug checking Errno->EINTR instead of Sys::Socket::Errno->EINTR.
0.227 2023-10-17
[Bug Fix]
* Fix a bug that IO::Socket#connect method do not retry connect operation when a retry is needed.
[Document Improvement]
* Fix and improve docs for IO::Socket#connect method.
* Fix and improve docs for IO::Socket#accept method.
* Fix and improve docs for IO::Socket#recvfrom method.
* Fix and improve docs for IO::Socket#sendto method.
0.226 2023-10-16
[New Features]
* Add V6Only option to IO::Socket::IP#init method.
[Imcompatible Changes]
* AutoFlush field is moved from IO::Handle to IO::File.
* set_autoflush method is moved from IO::Handle to IO::File.
* autoflush method is moved from IO::Handle to IO::File.
* Default values of options for IO::Socket#init method are changed.
Domain = 0
Proto = 0
Type = 0
Listen = 0
* The type of IO::Socket::IP#ReuseAddr becomes byte.
* The type of IO::Socket::IP#ReusePort becomes byte.
* The type of IO::Socket::IP#Broadcast becomes byte.
[Document Improvement]
* Improve docs for IO::Socket.
* Add IO::open link to docs for IO::Dir class.
* Add IO::opendir link to docs for IO::File class.
[Document Fix]
* Fix a doc that IO::Socket#close returned int type instead of void type.
0.225 2023-10-15
[Requirement Changes]
* Require SPVM 0.990021
[Incompatibe Changes]
* IO::Socket::IP#set_blocking method throw an exception if a true value is given.
* IO::Socket::IP#new dose not set SOCK_RAW Type for IPPROTO_ICMP Proto. This is Perl's IO::Socket::IP compatible beheivior.
[Document Improvement]
* Improve docs for IO::Socket::IP
* Improve docs for IO::Socket::IP::Import::IPv4.
* Improve docs for IO::Socket::IP::Import::IPv6.
[Test Improvement]
* Add tests for IO::Socket::IP.
0.224 2023-10-11
[Bug Fix]
* Fix a bug that IO::Socket::INET does not call DESTROY method in IO::Socket.
* Fix a bug that IO::Socket::INET6 does not call DESTROY method in IO::Socket.
* Fix a bug that IO::Socket::UNIX does not call DESTROY method in IO::Socket.
[Incompatible Changes]
* The default value of LocalPort option becomes 0.
* The default value of PeerPort option becomes 0.
[Document Improvement]
* Improve docs for IO::Socekt::IP.
[Test Improvement]
* Improve IPv6 tests.
0.223 2023-10-11
[Test Improvement]
* Improve tests for IO::Socket::UNIX.
[Internal Changes]
* IO::Socket::UNIX#option_names becomes protected method.
[Document Improvement]
* Add docs for IO::Socket::UNIX.
* Improve docs for IO::Socket::INET.
* Improve docs for IO::Socket::INET6.
[Document Improvement]
* Add docs for IO::Socket::UNIX.
* Improve docs for IO::Socket::INET.
* Improve docs for IO::Socket::INET6.
[Imcompatible Changes]
* Changes the beheivior of options in IO::Socket::UNIX.
Domain field is always set to AF_UNIX.
Type field is set to SOCK_STREAM if Type option is not specified.
Proto field is always set to 0.
* Listen default value becomes 0 from -1.
[Exception Changes]
* IO::Socket::UNIX#new thrown an exception.
"Peer option must be sepcified if this socket is a clienet socket. Listen option must be a positive number if this socket is a server socket.
* IO::Socket::IP#new thrown an exception.
"PeerAddr option must be sepcified if this socket is a clienet socket. Listen option must be a positive number if this socket is a server socket.
0.222 2023-10-10
[Internal Changes]
* Remove IO::File#configure method.
[Bug Fix]
* Fix a bug that IO::File#new_from_fd returns IO::Handle instead of IO::File.
* Fix a bug that IO::Socket::UNIX does not work well.
[Incompatible Changes]
* Remove IO::Handle#new method and IO::Handle becomes an abstruct class.
* IO::File#fdopen method becomes a protected method.
* IO::Socket#listen method becomes a protected method.
* IO::Socket#bind method becomes a protected method.
* IO::Socket#connect method becomes a protected method.
* IO::Socket#socket method becomes a protected method.
0.221 2023-10-10
[Internal Changes]
* IO::Handle#set_blocking method always perform a system call.
* configure method is implemented in IO::File class and it is called from new and new_from_fd method.
* configure method is called in new method in IO::Socket::IP, IO::Socket::INET, IO::Socket::INET6.
* Remove configure method from IO::Handle.
* Remove FieldsInitOnly option from IO::Handle#init method.
[Incompatible Changes]
* Blocking option ins IO::Socket and its child classes is not allowed. Its blocking mode is always non-blocking mode.
* IO::Socket is an abstract class, and remove new method.
[Bug Fix]
* Fix a bug that IO::Socket and its child classes are not non-blocking mode.
* Fix a bug that acceptted client is not non-blocking mode.
0.220001 2023-10-09
[Test Fix]
* Disable server tests for IO::Socket::IP for Windows segfault for now.
0.220 2023-10-09
[New Features]
* Add IO#open method.
* Add IO#opendir method.
[Test Improvement]
* Add tests for IO::Socket::IP server features with goroutines.
0.219 2023-06-14
[Support Changes]
* Does not support 32bit systems.
[Requirement Changes]
* Require SPVM::Sys 0.524.
* Require Perl v5.20.3.
* Remove Test::TCP requirement.
* Remove IO 1.55 requirement.
* Remove Mojolicious requirement.
[New Features]
* Add IO::Socket#accept method. This has existed, but not documented.
* Add IO::Socket::IP#accept method.
* Add IO::Socket::INET#accept method.
* Add IO::Socket::INET6#accept method.
* Add IO::Socket::UNIX#accept method.
[Incompatible Changes]
* The return type of IO::Socket::INET is changed from IO::Socket::IP to IO::Socket::INET.
* The return type of IO::Socket::INET6 is changed from IO::Socket::IP to IO::Socket::INET6.
[Bug Fix]
* Fix the bug that IO::Handle#set_blocking method set Blocking field to a wrong value.
0.218 2023-06-03
[Requirement Changes]
* Require SPVM::Sys 0.520.
0.217 2023-06-01
[New Features]
* Add IO::Socket#sendto method.
* Add IO::Socket#recvfrom method.
[Test Improvement]
* Add tests for IO::Select using a test HTTP server.
[Incompatible Changes]
* Remove an argument of IO::Socket#shutdown method.
[Before]
method shutdown : void ($sockfd : int, $how : int);
[After]
method shutdown : void ($how : int);
* IO::Socket#close method throw an excetpion if the socket is not opened.
* Remove IO::Socket#peername field. The return value of peername method is not cached.
* Remove the argument $to of IO::Socket#send method.
[Before]
method send : int ($buffer : string, $flags : int = 0, $to : Sys::Socket::Sockaddr = undef, $length : int = -1, $buf_offset : int = 0);
[After]
method send : int ($buffer : string, $flags : int = 0, $length : int = -1, $buf_offset : int = 0);
[Changes]
* The following method in IO::Socket class becomes public.
socket
connect
listen
bind
accept
[Requirement Changes]
* Require SPVM::Sys 0.517.
0.216 2023-05-29
[Requirement Changes]
* Require SPVM::Sys 0.516.
[New Features]
* Add IO::Poll class.
0.215 2023-05-24
[New Features]
* Add IO::Dir class.
[Requirement Changes]
* Require SPVM::Sys 0.515.
0.214 2023-05-21
[Imcompatible Changes]
* handles field in IO::Select is renamed to fds_list.
* The type of add method in IO::Select is changed from int to void.
* The type of remove method in IO::Select is changed from int to void.
* handles method in IO::Select is renamed to fds.
[New Features]
* Add count method to IO::Select class.
* An argument in IO::Select#can_read method becomes an optional argument. Negative value means block indefinitely.
[Before]
method can_read : int[] ($timeout : double);
[After]
method can_read : int[] ($timeout : double = -1);
* An argument in IO::Select#can_write method becomes an optional argument. Negative value means block indefinitely.
[Before]
method can_write : int[] ($timeout : double);
[After]
method can_write : int[] ($timeout : double = -1);
* An argument in IO::Select#can_has_exception method becomes an optional argument. Negative value means block indefinitely.
[Before]
method can_has_exception : int[] ($timeout : double);
[After]
method can_has_exception : int[] ($timeout : double = -1);
0.213 2023-05-20
[Imcompatible Changes]
* stream field in IO::File is renamed to FileStream.
* input_file_nubmer field in IO::File is renamed to InputLineNumber.
* close method in IO::File set FD field to -1, instead of setting FileStream to undef.
* Change the following methods in the IO::File.
- static method new : IO::File ($file_name : string = undef, $open_mode : object of string|Int = undef, $perm : int = -1);
+ static method new : IO::File ($file_name : string = undef, $open_mode : string = undef);
- static method new_from_fd : IO::Handle ($fd : int, $open_mode : string = undef);
+ static method new_from_fd : IO::Handle ($fd : int, $open_mode : string);
- method open : void ($file_name : string, $open_mode : object of string|Int, $perm : int = -1);
+ method open : void ($file_name : string, $open_mode : string);
* Remove printflush method from IO::File.
* Remove set_input_line_number from IO::File.
[Bug Fix]
* Fix the bug that AutoFlush option does not work .
0.212 2023-05-17
[Buf Fix]
* Fix the bug that IO::Socket::INET uses IPv6 addrinfo.
[New Features]
* Add the IO::Socket::INET6 class.
[Imcompatible Changes]
* The default value of Listen option is changed from 5 to -1.
* "Blocking" option is removed from IO::Socket because socket is always non-blocking to work with goroutine.
* Remove socketpair method in IO::Socket class.
* socket method in IO::Socket become protected, and the doc is removed.
* connect, listen, bind, accept methods in IO::Socket become protected, and the docs are removed.
* Remove new_from_instance from IO::Socket, IO::Socket::IP, IO::Socket::Unix.
* fd field in IO::Handle is renamed to FD.
* autoflush field in IO::Handle is renamed to AutoFlush.
* Blocking field is moved from IO::Socket to IO::Handle.
* Remove sysread and sysread method from IO::Handle and IO::Socket.
* trancate method in IO::Handle class throws excetpion. This implementation is moved to IO::File.
* sync method in IO::Handle class throws excetpion. This implementation is moved to IO::File.
0.211002 2023-12-07
[Prerequirement Changes]
* Require SPVM::Sys 0.510.
0.211001 2023-11-18
[Internal Changes]
* Do not use Sys->select for the future breaking backword compatible.
0.211 2023-11-18
[Incompatible Changes]
* The return types of the following methods becomes void.
[IO::Handle]
sync
print
printf
say
close
truncate
[IO::File]
close
flush
printflush
open
fdopen
[IO::Socket]
close
setsockopt
connect
listen
bind
shutdown
socket
* Remove the set_sockopt method from the IO::Socket class.
* Remove the getsockopt method from the IO::Socket class.
* The type of Timeout field in the IO::Socket becomes double.
[Changes]
* The write method in the IO::File returns written length.
0.210 2023-11-18
[Prerequirement Changes]
* Require SPVM::Go 0.005.
0.209 2023-11-16
[Prerequirement Changes]
* Require SPVM::Sys 0.497.
* Require SPVM::Go 0.003.
[New Features]
* Add $lengtht and $buf_offset argument to the send method in the IO::Socket class.
method send : int ($buffer : string, $flags : int = 0, $to : Sys::Socket::Sockaddr = undef, $length : int = -1, $buf_offset : int = 0);
* Add $buf_offset argument to the recv method in the IO::Socket class.
method recv : int ($buffer : mutable string, $length : int = -1, $flags : int = 0, $buf_offset : int = 0);
[Internal Changes]
* The the read method in the IO::Socket calls revc method.
* The the write method in the IO::Socket calls send method.
* The the sysread method in the IO::Socket calls revc method.
* The the syswrite method in the IO::Socket calls send method.
[New Features and Incompatible Changes]
* The socket of IO::Socket is set to non-blocking mode.
* IO::Socket supports goroutine of Go.
0.208 2023-09-11
[Prerequirement Changes]
* Require SPVM::Sys 0.490.
[Incompatibe Changes]
* The following methods are moved from the IO::File class to the IO::Handle class.
method sync : int ();
method stat : Sys::IO::Stat ();
method truncate : int ($legnth : long);
* The sync method in the IO::Handle class is changed. If succedd, returns 1.
* The following methods in IO::File class are changed.
- static method new : IO::File ($file_name : string = undef, $open_mode : string = undef);
+ static method new : IO::File ($file_name : string = undef, $open_mode : object of string|Int = undef, $perm : int = 0);
- method open : void ($file_name : string, $open_mode : string);
+ method open : int ($file_name : string, $open_mode : object of string|Int, $perm : int = 0);
* The write method in the IO::Handle return if succedd.
* The following methods in the IO::Socket class are changed.
+ method sockopt : int ($level : int, $optname : int);
+ method set_sockopt : int ($level : int, $optname : int, $optval : int);
0.207 2023-09-04
[Prerequirement Changes]
* Require SPVM::Sys 0.486.
* Require SPVM 0.989040.
[New Features]
* The IO::Socket::UNIX class is added.
[Changes]
* The implementation of fileno method is improved.
[Incompatibe Changes]
* input_output_number is incremented.
* The following fields and methods in the IO::Socket class are added, deleted, or changed.
- has timeout : protected ro int;
+ has Timeout : protected int;
+ method timeout : int ();
- has sockdomain : protected ro int;
+ has Domain : protected int;
+ method sockdomain : int ();
- has socktype : protected ro int;
+ has Type : protected int;
+ method socktype : int ();
- has protocol : protected ro int;
+ has Proto : protected ro int;
+ method protocol : int ();
- has listen_backlog : protected int;
+ has Listen : protected int;
- method peerport : int ();
- method peerhost : string ();
- has peername : protected ro Sys::Socket::Sockaddr;
+ has peername : protected Sys::Socket::Sockaddr;
+ method peername : Sys::Socket::Sockaddr ();
* The following fields and methods in the IO::File class are added, deleted, or changed.
+ method input_line_number : long ();
+ method set_input_line_number : void ($input_line_number : long);
+ method truncate : int ($legnth : long);
+ method stat : Sys::IO::Stat ();
+ method sync : int ();
- method opened : int ();
* The following fields and methods in the IO::Handle class are added, deleted, or changed.
- method blocking : void ($blocking : int);
+ method blocking : int ();
+ method set_blocking : void ($blocking : int);
- has blocking_flag : rw protected int;
+ has nonblocking : protected int;
- has opened : ro protected int;
+ method opened : int ();
method truncate : int ($legnth : long) throws an exception.
method sync : int () throws an exception.
- method stat : int ($stat : Sys::IO::Stat);
+ method stat : Sys::IO::Stat ();
* fd field in IO::Socket class is moved to IO::Handle class.
* write method in IO::Socket class call syswrite method.
* read method in IO::Socket class call sysread method.
* print method calls write method.
0.206 2023-09-04
[Prerequirement Changes]
* SPVM::Sys 0.485 is required.
0.205 2023-09-04
[Prerequirement Changes]
* SPVM::Sys 0.484 is required.
0.204003 2023-08-22
[Changes]
* Type comments of the ioctl method in the IO::Handle are changed.
- method ioctl : int ($request : int, $request_arg : object = undef of Byte|Short|Int|Long|Float|Double|object);
+ static method ioctl : int ($fd : int, $request : int, $request_arg_ref : object of byte[]|short[]|int[]|long[]|float[]|double[]|object = undef);
[Bug Fix]
* A bug is fixed: The blocking method in the IO::Handle has not work well in Windows.
0.204002 2023-08-22
[Bug Fix]
* A bug is fixed. FIONBIO has not been defined.
0.204001 2023-08-22
[Prerequirement Changes]
* SPVM::Sys 0.482 is required.
0.204 2023-08-18
[New Features]
The following methods are added to IO::Socket.
+ method write : int ($string : string, $length : int = -1, $offset : int = 0);
+ method read : int ($string : mutable string, $length : int = -1, $offset : int = 0);
[Incompatibe Changes]
The following methods are removed from IO::File and IO::Handle.
method syswrite : int ($buffer : string, $length : int, $offset : int = 0);
method sysread : int ($buffer : mutable string, $length : int, $offset : int = 0);
[Changes]
The following methods in IO::File and IO::Handle are changed.
- method write : int ($buffer : string, $length : int, $offset : int = 0);
+ method write : int ($string : string, $length : int = -1, $offset : int = 0);
- method read : int ($buffer : mutable string, $length : int, $offset : int = 0);
+ method read : int ($string : mutable string, $length : int = -1, $offset : int = 0);
0.203 2023-08-15
[New Features]
The following method is added to IO::Socket.
method peerport : int ();
method peerhost : string ();
0.202001 2023-05-29
[Prerequirement Changes]
* SPVM 0.986+ is required.
0.202 2023-05-23
[Incompatibe Changes]
* The definition of the following methods in the IO::Handle class are changed.
[Before]
method printf : int ($format : string, $args : object[]...);
[After]
method printf : int ($format : string, $args : object[]);
0.201 2023-05-23
[License Change]
* The license is changed to MIT License.
[Prerequirement Changes]
* SPVM 0.981+ is required.
[New Features]
* The version string can be got.
0.20 2023-03-20
[Internal Compatible Changes]
* Use SPVM::ExchangeAPI method instead of SPVM functions.
0.19 2023-03-15
[Prerequirement Changes]
* SPVM::Sys 0.43+ is needed.
0.18 2023-03-06
[Prerequirement Changes]
* SPVM 0.9695+ is needed.
[Changes]
* Removed the unused IO::Util class.
[Incompatible Changes]
* Removed IO::Handle::Interface.
* Removed IO::Socket::Interface.
* Removed the has_interfaces method in the IO::Handle.
0.17 2023-03-06
[Changes]
* The definition of the init method in the IO::File is changed.
[Before]
protected method init : void ();
[After]
protected method init : void ($options = undef : object[]);
0.16 2023-02-14
[Bug Fix]
* Fixed the bug that the close method in the IO::File doesn't set the stream undef.
0.15 2023-02-08
[Prerequirement Changes]
* SPVM 0.9691+ is needed.
0.14 2022-12-03
[Prerequrement Changes]
* SPVM::IO needs SPVM 0.9664+.
* SPVM::IO needs SPVM::Sys 0.28+.
[Incompatible Document Changes]
* Removed the is_io_handlable method in the IO::Handle class in the doc.
This was removed in the past.
[Document Improvement]
* Added the doc of the IO::Handle.
* Added the doc of the IO::Handle::Interface.
[Incompatible Changes]
* Removed the autoflush method in the IO::File class.
* Removed the get_autoflush in the IO::Handle class.
* Changed the definitions of the following fields in the IO::Handle class.
[Before]
has autoflush : wo byte;
[After]
has autoflush : rw byte;
0.13 2022-11-22
[New Features]
* Added many methods and some classes.
[Document Improvement]
* Documents of many methods and some classes are added.
0.12 2022-11-16
[Prerequirement Changes]
* SPVM::IO needs SPVM::Math 0.11.
0.12 2022-11-16
[Incompatible Changes]
* The methods in the IO::Socket::INET is moved to the IO::Socket class.
* Removed IO::Socket::INET. This module will be added in the nearly future.
[Prerequirement Changes]
* SPVM::IO needs SPVM 0.9662+.
0.11 2022-11-07
[Prerequirement Changes]
* SPVM::IO needs SPVM 0.9661+.
* SPVM::IO needs SPVM::Sys 0.26+.
[New Features]
* Added the IO::Handle::Interface class.
* Added many methods to IO::File and IO::Handle.
0.10 2022-09-16
[New Features]
* Add the IO::Socket::Interface interface.
* The IO::Socket class has the IO::Socket::Interface interface.
[Bug Fix]
* Fix the bug that IO::Socket::INET doesn't work in SPVM 0.9648+.
[Prerequirement Changes]
* SPVM 0.9652+ is needed.
0.09 2022-08-01
[Internal Ineffective Changes]
* Use get_field_object_by_name_v2 in SPVM/IO/File.c
* Use set_field_object_by_name_v2 in SPVM/IO/File.c
[Pre Requirement Changes]
* SPVM 0.9632 is needed.
0.08 2022-07-30
[Test Fix]
* Fix testing bug that occur upgrading to SPVM 0.9630.
[Improve Exception Messages]
* Improve IO::FileHandle exception messages.
[Incompatible Changes]
* Remove undocumented Fn->unlink method.
* Remove undocumented Fn->rename method,
* Changed the undocumented definition of fh field of IO::File
[Before]
has fh : private ro IO::FileHandle;
[After]
has fh : private IO::FileHandle;
* Changed the undocumented definition read method of IO::File
[Before]
method read : int ($bufer : byte[]);
[After]
method read : int ($bufer : mutable string);
* Remove the undocumented following class variables
our $SEEK_SET : ro int;
our $SEEK_CUR : ro int;
our $SEEK_END : ro int;
* Change the undocumented following definitions
[Before]
our $STDIN : ro int;
our $STDOUT : ro int;
our $STDERR : ro int;
[After]
native static method STDERR : int ();
native static method STDIN : int ();
native static method STDOUT : int ();
0.07 2022-06-30
[New Features]
* Add SPVM::IO::Handle module
* Add SPVM::IO::Socket module
* Add SPVM::IO::Socket::Fn module
* SPVM::IO::Socket::INET extends SPVM::IO::Socket
[Bug Fix]
* Fix the bug that SPVM::IO don't work on Windows.
* Fix broken tests.
[Changes]
* SPVM::IO::Socket extends SPVM::IO::Handle
* SPVM::File extends SPVM::IO::File
* Need SPVM 0.9614
[Incompatible Changes]
* Removed SPVM::IO::Handlable
* Removed SPVM::IO::Socketable
0.06 2022-06-22
* Catch up with SPVM 0.96
0.05 2022-06-20
* Catch up with SPVM 0.9609
0.04 2022-06-14
[CHANGES]
* Fix tests
* Add IO::Handlable class.
* Rename IO::Socket to IO::Socketable
* IO::File has IO::Handlable interface.
* IO::Socket::INET has IO::Handlable interface.
0.03 2022-06-13
[CHANGES]
* Catch up with latest SPVM.
0.02 2022-05-26
[CHANGES]
* Catch up with latest SPVM.
0.01 2022-05-23
[CHANGES]
* First development release