pike.git
/
CHANGES
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/CHANGES:86:
The main use is 'deep indexing' where some elements can be 0: | request_id?->user?->misc?->x vs | request_id && request_id->user && request_id->user->misc | && request_id->user->misc->x
-
o Added the '?:' operator for compatibility with other C-like languages.
-
It is identical to '||' in pike, and this is not /really/ needed.
+
o Added the '?:' operator for compatibility with other C-like
+
languages. It is identical to '||' in pike, and this is not /really/
+
needed.
o The && operator changed, when doing A && B, and A is false, keep A instead of pushing 0. This is especially useful then A is not actually 0, but an object that evaluates to false, or UNDEFINED. o Added new syntax that can be used to return an object as if it was a class you are inheriting, X::this where X is the inheriting class.
pike.git/CHANGES:138:
| "CODE":make_value_function(code), | ])); | }); That is, a macro that needs does some calculations, and rewrite the code more than is possible in normal macros.. This one expands something along the lines of
-
| METRIC("requests", Summarize, PerSecond, floating_average_diff(requests));
+
| METRIC("requests", Summarize, PerSecond,
+
|
floating_average_diff(requests));
into | class Metric_requests_01 | { | inherit Server.Metric; | constant name = "transcoder:requests"; | constant type = Float; | constant format = PerSecond; | constant aggregate = Summarize; | | float value() { | return floating_average_diff(requests); | } | }
-
---
optimizations
+
Optimizations
+
---
----------
o New significantly faster block allocator The free in the old one was O(n^2), which means that as an example creating a lot of objects and then free:ing them mainly used CPU in the block allocator. This fix changed the ordo of one of the tests that did that very thing (binarytrees) from O(n^2) to O(n), and as such is more than a simple percentual speedup.
pike.git/CHANGES:222:
+ A lot of opcodes implemented in machinecode for x86-64 This speed up the loop benchmarks close to a factor of 3. But then again, most real code is nothing like that benchmark. + Several new opcodes added As an example an observation was that most branch_if_zero is followed by an is_eq, is_lt or is_gt or similar. Those opcodes always return 1 or 0. So, two new opcodes, fast_branch_if_zero and
-
fast_branch_if_non_zero were added that map directly to three
x86-64
-
opcodes, there is no need to check the types, do a real
pop_stack
-
etc.
+
fast_branch_if_non_zero were added that map directly to three
+
x86-64 opcodes, there is no need to check the types, do a real
+
pop_stack etc.
-
--- removed stuff
+
-
+
Removed stuff
+
-------------
+
o Removed facets The optional (and not enabled by default) support for facet classes has been removed, since it was only partially done and not really used. o It is no longer possible to compile pike without libgmp. Bignums are now a required language feature o The old 'files' module has been renamed to _Stdio o 'GTK' is now GTK2, not GTK1 unless the system has no GTK2 support.
-
--- deprecated stuff
+
-
+
Deprecations
+
------------
+
o Locale.Charset The charset module is now available on the toplevel as 'Charset' o Tools.PEM and Tools.X409 deprecated Use the corresponding modules in Standards. o The built in sandbox is now deprecated Unless somebody wants to take ownership of the feature and keep it up to date the security system will be removed in the next stable release.
-
-- new modules
+
-
+
New modules
+
-----------
+
o Pike.Watchdog A Watchdog that ensures that the process is not hung for an extended period of time. The definition of 'hung' is: Has not used the default backend. To use it simply keep an instance of the watchdog around in your application: | Pike.Watchdog x = Pike.Watchdog( 5 ); // max 5s blocking
pike.git/CHANGES:289:
o Added ADT.CritBit module Mapping-like key-sorted data structures for string, int and float-keys (ADT.CritBit.Tree, ADT.CritBit.IntTree, ADT.CritBit.FloatTree). Implemented in C. o Standards.BSON A new module for working with BSON serialized data. See http://bsonspec.org/ o Geography.GeoIP
-
Does geolocation of IPv4-numbers using databases from maxmind.com
or
-
software77.net
+
Does geolocation of IPv4-numbers using databases from maxmind.com
+
or
software77.net
o Protocols.WebSocket An implementation of the WebSocket (RFC 6455) standard, both server and client o Image.WebP Encoder and decoder for the WEBP image format. More information about the format can be found on https://developers.google.com/speed/webp/ o Serializer
-
APIs useful to simplify serialization and deserialization of
objects
-
Mainly it allows you to easily iterate over the object
variables,
-
including the private ones.
+
APIs useful to simplify serialization and deserialization of
+
objects
Mainly it allows you to easily iterate over the object
+
variables, including the private ones.
+ Serializer.Encodable A class that can be inherit to make an object easily serializable using encode_value. o Filesystem.Monitor and the lowlevel System.Inotify + System.FSEvents Basic filesystem monitoring. This module is intended to be used for incremental scanning of a filesystem.
pike.git/CHANGES:346:
to a header and record oriented parsing of huge datasets. o ZXID ZXID is a library that implements SAML 2.0, Liberty ID-WSF 2.0 and XACML 2.0. This module implements a wrapper for ZXID. The interface is similar to the C one, but using generally accepted Pike syntax. o Git
-
A module for interacting with the Git distributed version control system.
+
A module for interacting with the Git distributed version control
+
system.
o Val This module contains special values used by various modules, e.g. a Val.null value used both by Sql and Standards.JSON. In many ways these values should be considered constant, but it is possible for a program to replace them with extended versions, provided they don't break the behavior of the base classes defined here. Since there is no good mechanism to handle such extending in several steps, pike libraries should preferably ensure that the
pike.git/CHANGES:435:
o Process.daemon The daemon() function is for programs wishing to detach themselves from the controlling terminal and run in the background as system daemons. o Crypto.PGP - support more hash functions. o String.levenshtein_distance() That function calculates the Levenshtein distance between two
-
strings.
The Levenshtein distance describes the minimum number of
+
strings. The Levenshtein distance describes the minimum number of
edit operations insert, delete or substitue a character to get from one string to the other. The algorithm can be used in approximate string matching to find matches for a short string in many longer texts, when a small number of differences is expected. o Unicode databases updated to 6.2.0 o Timezone databases updated to tzdata2013d
pike.git/CHANGES:532:
o Standards.JSON New module for encoding and decoding JSON data. Implemented in C. o Protocols.HTTP.Session will no longer override an existing content-type header in async_do_method_url. o Protocols.HTTP
-
Allow directly specifying the body of a POST request (needed for the
Google
-
Apps API).
+
Allow directly specifying the body of a POST request (needed for the
+
Google Apps API).
o Updated timezone data to tzdata2010o. o String.normalize_space
-
New and efficient C implementation; sanitises whitespace, even in
wide
-
strings.
+
New and efficient C implementation; sanitises whitespace, even in
+
wide strings.
o String.trim_all_whites
-
Extended to the entire range of Unicode white spaces. (And is faster.)
+
Extended to the entire range of Unicode white spaces. (And is
+
faster.)
o Tools.PV and pike -x pv now work with GTK2 as well as GTK. o Integer constants exported by modules can now be used in cpp expressions. o Modules/programs that have the constant "dont_dump_program" will not be dumped on installation. This is used to prevent dumping of programs that check for external dependencies at compile time such as the MySQL module.