0.10 2022-10-14
[New Features]
* Added the Sys::Time::Timeval class.
* Added the Sys::Time::Timezone class.
* Added the following methods to the Sys::Process class.
static method usleep : int ($usec : int)
static method ualarm : long ($usecs : long, $interval : long)
* Added the following methods to the Sys::Time class.
static method gettimeofday ($tv : Sys::Time::Timeval, $tz : Sys::Time::Timezone)
static method clock : long ()
static method clock_gettime : int ($clk_id : int, $tp : Sys::Time::Timespec)
static method clock_getres : int ($clk_id : int, $res : Sys::Time::Timespec)
static method getitimer : int ($which : int, $curr_value : Sys::Time::Itimerval);
static method setitimer : int ($which : int, $new_value : Sys::Time::Itimerval, $old_value : Sys::Time::Itimerval);
static method clock_nanosleep : int ($clockid : int, $flags : int, $request : Sys::Time::Timespec, $remain : Sys::Time::Timespec)
static method nanosleep : int ($rqtp : Sys::Time::Timespec, $rmtp : Sys::Time::Timespec)
* Added the Sys::Time::Timespec class.
* Added the Sys::Time::Itimerval class.
* Added the following methods to the Sys::IO::Stat class
method st_mtim_tv_nsec : long ()
method st_atim_tv_nsec : long ()
method st_ctim_tv_nsec : long ()
* Added the Sys::Time::Constant class.
[Bug Fix]
* Fixed the bug that the internally integral type is wrong. 32bit is fixed to64bit.
SPVM::Sys::IO::Utimbuf->set_actime
Sys::IO::Utimbuf->set_modtime
Sys::Process->usleep
Sys::Process->ualarm
Sys::Time::Timespec->set_tv_sec
Sys::Time::Timespec->set_tv_nsec
Sys::Time::Timeval->set_tv_sec
Sys::Time::Timeval->set_tv_usec
[Incompativle Changes]
* The times method is moved from SYS::Process to Sys::Time.
* The Sys::Process::Tms is renamed to Sys::Time::Tms.
[Document Improvement]
* Added the doc of the Sys::Time::Tms.
0.09 2022-10-07
[New Features]
* Add the clone method to the Sys::Socket::Sockaddr class.
method clone : Sys::Socket::Sockaddr ()
* Add the clone method to the Sys::Socket::Sockaddr::In class.
method clone : Sys::Socket::Sockaddr::In ()
* Add the clone method to the Sys::Socket::Sockaddr::In6 class.
method clone : Sys::Socket::Sockaddr::In6 ()
* Add the clone method to the Sys::Socket::Sockaddr::Un class.
method clone : Sys::Socket::Sockaddr::Un ()
* Add the clone method to the Sys::Socket::Sockaddr::Storage class.
method clone : Sys::Socket::Sockaddr::Storage ()
* Sys::Socket::Sockaddr has Cloneable interface.
* Added the accessor methods to the Sys::Socket::Addrinfo class.
method ai_flags : int ();
method set_ai_flags : void ($ai_flags : int);
method ai_family : int ();
method set_ai_family : void ($ai_family : int);
method ai_socktype : int ();
method set_ai_socktype : void ($ai_socktype : int);
method ai_protocol : int ();
method set_ai_protocol : void ($ai_protocol : int);
method copy_ai_addr : Sys::Socket::Sockaddr ();
method copy_ai_canonname : string ();
* Added the Sys::Socket::AddrinfoLinkedList class.
* Add the following methods to the Sys::Socket::Constant class.
static method NI_MAXHOST : int ();
static method NI_MAXSERV : int ();
[Bug Fix With Incompatible Changes]
* Fixed the bug that the set_sin6_flowinfo method in the Sys::Socket::Sockaddr::In6 class didn't have the argument.
[Before]
method set_sin6_flowinfo : void ()
[After]
method set_sin6_flowinfo : void ($flowinfo : int)
* Fixed the bug that the set_sin6_scope_id in the Sys::Socket::Sockaddr::In6 class didn't have the argument.
[Before]
method set_sin6_scope_id : void ()
[After]
method set_sin6_scope_id : void ($scope_id : int)
[Prerequirement Changes]
* Need SPVM 0.9654+.
[Incompativle Changes]
* The definition of the getaddrinfo_raw and getaddrinfo methods in the Sys::Socket
[Before]
static method getaddrinfo_raw : int ($node : string, $service : string,
$hints : Sys::Socket::Addrinfo,
$res : Sys::Socket::Addrinfo[]);
static method getaddrinfo : int ($node : string, $service : string,
$hints : Sys::Socket::Addrinfo,
$res : Sys::Socket::Addrinfo[]);
[After]
static method getaddrinfo_raw : int ($node : string, $service : string,
$hints : Sys::Socket::Addrinfo,
$res : Sys::Socket::AddrinfoLinkedList[]);
static method getaddrinfo : int ($node : string, $service : string,
$hints : Sys::Socket::Addrinfo,
$res : Sys::Socket::AddrinfoLinkedList[]);
* Removed the POLLNORM method in the Sys::IO::Constant.
static method POLLNORM : int ();
[Bug Fix]
* Fixed the bug that the poll constant values in the Sys::IO::Constant was not used.
* Fixed the but that the return value of the WSAPoll method in the Sys::Socket class was wrong.
[Document Fix]
* Add the doc of the poll constant methods of Sys::IO::Constant.
=head2 POLLERR
static method POLLERR : int ();
Get the constant value of C<POLLERR>. If the system doesn't define this constant, an exception will be thrown. The error code is set to the class id of the L<Error::NotSupported|SPVM::Error::NotSupported> class.
=head2 POLLHUP
static method POLLHUP : int ();
Get the constant value of C<POLLHUP>. If the system doesn't define this constant, an exception will be thrown. The error code is set to the class id of the L<Error::NotSupported|SPVM::Error::NotSupported> class.
=head2 POLLIN
static method POLLIN : int ();
Get the constant value of C<POLLIN>. If the system doesn't define this constant, an exception will be thrown. The error code is set to the class id of the L<Error::NotSupported|SPVM::Error::NotSupported> class.
=head2 POLLNVAL
static method POLLNVAL : int ();
Get the constant value of C<POLLNVAL>. If the system doesn't define this constant, an exception will be thrown. The error code is set to the class id of the L<Error::NotSupported|SPVM::Error::NotSupported> class.
=head2 POLLOUT
static method POLLOUT : int ();
Get the constant value of C<POLLOUT>. If the system doesn't define this constant, an exception will be thrown. The error code is set to the class id of the L<Error::NotSupported|SPVM::Error::NotSupported> class.
=head2 POLLPRI
static method POLLPRI : int ();
Get the constant value of C<POLLPRI>. If the system doesn't define this constant, an exception will be thrown. The error code is set to the class id of the L<Error::NotSupported|SPVM::Error::NotSupported> class.
=head2 POLLRDBAND
static method POLLRDBAND : int ();
Get the constant value of C<POLLRDBAND>. If the system doesn't define this constant, an exception will be thrown. The error code is set to the class id of the L<Error::NotSupported|SPVM::Error::NotSupported> class.
=head2 POLLRDNORM
static method POLLRDNORM : int ();
Get the constant value of C<POLLRDNORM>. If the system doesn't define this constant, an exception will be thrown. The error code is set to the class id of the L<Error::NotSupported|SPVM::Error::NotSupported> class.
=head2 POLLWRBAND
static method POLLWRBAND : int ();
Get the constant value of C<POLLWRBAND>. If the system doesn't define this constant, an exception will be thrown. The error code is set to the class id of the L<Error::NotSupported|SPVM::Error::NotSupported> class.
=head2 POLLWRNORM
static method POLLWRNORM : int ();
Get the constant value of C<POLLWRNORM>. If the system doesn't define this constant, an exception will be thrown. The error code is set to the class id of the L<Error::NotSupported|SPVM::Error::NotSupported> class.
* Fixed the document bug that Sys::IO::PollfdArray was called Sys::Poll::PollfdArray.
0.08 2022-10-04
[New Features]
* Add the FIONBIO method to the Sys::Socket::Constant class.
static method FIONBIO : int ();
[Warning Fix]
* Fixed the some warnings on Mac.
[Bug Fix]
* Fixed the bug that the SOMAXCONN method in the Sys::Socket::Constant class couldn't be called.
* Fixed the bug that the getsockopt_int method in the Sys::Socket class doesn't work well.
[Changes]
* Change the return type of the inet_ntop method in the Sys::Socket class.
[Before]
static method inet_ntop : string ($af : int, $src : object of Sys::Socket::In_addr|Sys::Socket::In6_addr, $dst : mutable string, $size : int);
[After]
static method inet_ntop : mutable string ($af : int, $src : object of Sys::Socket::In_addr|Sys::Socket::In6_addr, $dst : mutable string, $size : int);
[Testing Bug Fix]
* Fixed the testing bug of the getpriority method in the Sys::Process class.
[Incompatible Changes]
* Removed the ioctl_int method in the Sys::Socket class.
* Renamed the following method in the Sys::Socket::Sockaddr::In class.
[Before]
method sin_addr : Sys::Socket::In_addr ()
[After]
method copy_sin_addr : Sys::Socket::In_addr ()
* Renamed the following method in the Sys::Socket::Sockaddr::In6 class.
[Before]
method sin6_addr : Sys::Socket::In6_addr ();
[After]
method copy_sin6_addr : Sys::Socket::In6_addr ()
0.07 2022-09-29
[Changes]
* The inet_aton method in the Sys::Socket class is emulated using inet_pton on Windows.
[Ineffective Changes]
* Sys::Socket::Constant->SHUT_RD always return 0.
* Sys::Socket::Constant->SHUT_WR always return 1.
* Sys::Socket::Constant->SHUT_RDWR always return 2.
[New Features]
* Added the sizeof method in the Sys::Socket::Sockaddr.
method sizeof : int ()
* Added the size method in the Sys::Socket::Sockaddr::Interface.
method sizeof : int ()
* Added the size method in the Sys::Socket::Sockaddr::In.
method sizeof : int ()
* Added the size method in the Sys::Socket::Sockaddr::In6.
method sizeof : int ()
* Added the size method in the Sys::Socket::Sockaddr::Un.
method sizeof : int ()
* Added the size method in the Sys::Socket::Sockaddr::Strage.
method sizeof : int ()
* Added the s_addr and set_s_addr methods to the Sys::In_addr class.
method s_addr : int ();
method set_s_addr : void ($s_addr : int);
* Added the s6_addr and set_s6_addr methods to the Sys::In6_addr class.
method s6_addr : string ();
method set_s6_addr : void ($address : string);
* Add Sys::Socket::Error::InetInvalidNetworkAddress.
[Test Improvement]
* Added the test of the exit method in the Sys::Process class on Windows.
* Added the test of the execv method in the Sys::Process class on Windows.
[Bug Fix With Incompative Changes]
* Fixed the bug that the definitions of the sin_family and set_sin_family method in the Sys::Socket::Sockaddr::In were wrong.
[Before]
method sin_family : int ()
method set_sin_family : void ()
[After]
method sin_family : byte ()
method set_sin_family : void ($family : byte)
* Fixed the bug that the definitions of the sin6_family and set_sin6_family method in the Sys::Socket::Sockaddr::In6 were wrong.
[Before]
method sin6_family : int ()
method set_sin6_family : void ()
[After]
method sin6_family : byte ()
method set_sin6_family : void ($family : byte)
* Fixed the bug that the definitions of the sun_family and set_sun_family method in the Sys::Socket::Sockaddr::Un were wrong.
[Before]
method sun_family : int ()
method set_sun_family : void ()
[After]
method sun_family : byte ()
method set_sun_family : void ($family : byte)
* Fixed the bug that the definitions of the ss_family and set_ss_family method in the Sys::Socket::Sockaddr::Storage were wrong.
[Before]
method ss_family : int ()
method set_ss_family : void ()
[After]
method ss_family : byte ()
method set_ss_family : void ($family : byte)
* Fixed the bug that the definitions of the sa_family method in the Sys::Socket::Sockaddr and its child classes and the interface were wrong.
[Before]
method sa_family : int ()
[After]
method sa_family : byte ()
[Bug Fix]
* Fixed the bug that the socket_strerror method in the Sys::Socket class didn't work well.
[Test Fix]
* Fixed the test of the times method in the Sys::Process class.
[Document Improvement]
* Add the doc of the Sys::Socket::Sockaddr class.
* Add the doc of the Sys::Socket::Sockaddr::Interface class.
[Incompative Changes]
* The inet_ntop method in Sys::Socket throw an exception if the address family is not AF_INET and AF_INET6.
* The inet_pton method in Sys::Socket throw an exception if the address family is not AF_INET and AF_INET6.
* The inet_ntop and inet_pton method in Sys::Socket throw an exception with Sys::Socket::Error::InetInvalidNetworkAddress
if the address is an invalid network address.
* The inet_ntoa method in Sys::Socket throw an exception if inet_ntoa failed.
* The set_sin6_addr method in Sys::Socket::Sockaddr::In6 throw an exception if the address is not defined.
* The set_sin_addr method in Sys::Socket::Sockaddr::In throw an exception if the address is not defined.
[Internall Uneffective Changes]
* Rename the has_interface in the class Sys::Socket::Sockaddr::Interface to has_interfaces.
* Rename the has_interface in the class Sys::Socket::Sockaddr to has_interfaces.
0.06 2022-09-27
[Test Fix]
* Fix the test of the setpriority method in the Sys::Process class.
* Fix the test of the times method in the Sys::Process class.
[New Features]
* Add the getaddrinfo_raw to the Sys::Socket class. This is the same as original the getaddrinfo method.
* Add the getnameinfo_raw to the Sys::Socket class. This is the same as original the getnameinfo method.
* Add the following methods to the Sys::Socket class.
static method socket_errno : int ();
static method socket_strerror : string ($errno : int, $length : int);
[Prerequirement Changes]
* SPVM::Sys needs SPVM 0.9653+.
[Incompatible Changes]
* The getaddrinfo method in the Sys::Socket class gets to throw an exception.
* The getnameinfo method in the Sys::Socket class gets to throw an exception.
* Rename the follwing methods in the Sys::Socket class.
[Before]
static method ioctl_int_portable : int ($fd : int, $request : int, $request_arg_ref : int*);
static method poll_portable : int ($fds : Sys::IO::PollfdArray, $nfds : int, $timeout : int);
static method close_portable : int ($fd : int);
[After]
static method ioctl_int : int ($fd : int, $request : int, $request_arg_ref : int*);
static method poll : int ($fds : Sys::IO::PollfdArray, $nfds : int, $timeout : int);
static method close : int ($fd : int);
0.05 2022-09-26
[Document Fix To Fix Typo]
* Remove native attribute from the definitions of the methods.
[Test Improvement]
* Add many tests.
[Bug Fix]
* Fix the bug that the execv method in the Sys::Process doesn't work well.
[Incompatible Changes]
* The name and definition of the setpgrp method in the Sys::Process.
[Before]
static method setpgrp : int ();
[After]
static method setpgid : int ($pid : int, $pgid : int);
* The name and definition of the getpgrp method in the Sys::Process.
[Before]
static method getpgrp : int ();
[After]
static method getpgid : int ($pid : int);
0.04 2022-09-16
[Test Improvement]
* Add many tests.
[Bug Fix]
* Fix the bug that the l method in the Sys::FileTest class doesn't work well.
[Prerequirement Changes]
* Need SPVM::Errno 0.06+.
0.03 2022-09-15
[New Features]
* Add the getcwd method to the Sys::IO class.
static method getcwd : mutable string ($buf : mutable string, $size : int);
static method realpath : mutable string ($path : string, $resolved_path : mutable string);
static method _getdcwd : mutable string ($drive : int, $buffer : mutable string, $maxlen : int);
* Add the following methods to the Sys class.
static method getenv : string ($name : string);
static method setenv : int ($name : string, $value : string, $overwrite : int);
static method unsetenv : int ($name : string);
[Incompatible Changes]
* Change the definition of the following method in the Sys::IO class.
[Before]
static method fwrite : int ($buffer : mutable string, $size : int, $data_length : int, $stream : Sys::IO::FileStream);
[After]
static method fwrite : int ($ptr : string, $size : int, $nmemb : int, $stream : Sys::IO::FileStream);
* Change the definition of the following method in the Sys::IO class.
[Before]
static method truncate : long ($path : string, $offset : long);
[After]
static method truncate : int ($path : string, $length : long);
[Bug Fix]
* Fix the bug that lseek return value is wrong.
* Fix the bug that truncate return value is wrong.
* Fix the bug that the length argument of the truncate method in the Sys::IO class is int, not long.
[Test Improvement]
* Add many tests.
[Test Fix]
* Fix Github Action Windows 2019 test by adding ".gitattribute"
# All files are binary files. CRLF is always CRLF. LF is always LF.
* -text
* Fix reference count tests.
[Document Improvement]
* Add the link to this repository.
0.02 2022-09-14
[Document Improvement]
* Add Sys::FileTest doc.
[Incompatible Changes]
* Remove Sys::IO->freopen.
* Simplify the implementation of the methods for file test in Sys::FileTest
If the file doesn't exists, an exception will be thrown except for e.
[Changes]
* Use access function for Sys::FileTest->e.
[Bug Fix]
* Fix the bug that ouble free or corruption (!prev) occur in Sys::IO->stat in Linux/Ubuntu 32bit.
0.01 2022-09-13
* First experimental release