pike.git/
CHANGES
Branch:
Tag:
Non-build tags
All tags
No tags
2013-11-02
2013-11-02 16:00:36 by Per Hedbor <ph@opera.com>
cb784adff81215e61ce619add8aed7219e6f3892 (
87
lines) (+
48
/-
39
)
[
Show
|
Annotate
]
Branch:
7.9
More changes added to CHANGES
39:
| // ... | }
-
o
Actually
implemented
the variant keyword.
+
o
Implemented
the variant keyword.
-
+
The keyward was present before, but did not actually do anything
+
useful.
+
This is used to do function overloading based on the argument types. As an example:
98:
needed. o The && operator changed, when doing A && B, and A is false, keep A
-
instead of
pushing
0.
+
instead of
returning
0.
This is especially useful then A is not actually 0, but an object that evaluates to false, or UNDEFINED.
134:
| (["ID":(string)next_metric_id++, | "NAME":stringify(name), | "TYPE":type,
-
| "AGGREGATE":aggregate,
-
| "FORMAT":format,
+
|
"AGGREGATE":aggregate,
+
|
"FORMAT":format,
| "CODE":make_value_function(code),
-
|
]));
+
| ]));
| });
175:
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.
+
simple percentual speedup
in some cases, but it always improves the
+
performance some since the base speed is also faster
.
o Power-of-two hashtables are now used for most hashtables
204:
The same thing happens when clearing values on the stack. o string(x..y) (constant) types
-
| > typeof("foo");
-
| (1) Result: string(102..111)
-
also used to optimize lower_case/upper_case search and
-
string_has_null etc.
+
The strings now keep track of the min/max values in addition to two new flags: all-uppercase and all-lowercase.
-
+
| > typeof("foo");
+
| (1) Result: string(102..111)
+
+
This is used to optimize certain operations,
+
lower_case, upper_case, search and string_has_null for now.
+
It could be added to other places in the future as well.
+
The fairly common case where you are doing lower_case or upper_case on an already lower or uppercase strings is now significantly faster.
221:
+ lower_apply, changes to apply in general Taken together these individuallt small optimizations speeds up at least pike -x benchmark more than 5%.
-
+
+ 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
+
always return 1 or 0. So, two new opcodes,
quick
_branch_if_zero
+
and quick
_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.
240:
+ Also siphash24 was added and is used in case the string hash table becomes inefficient
+
Removed features and modules
+
----------------------------
-
Deprecated features and modules
-
-------------------------------
-
+
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
412:
The new method addat() allows for writing into the buffer at any position.
+
o SDL.Music added to SDL.
+
+
Allows the playback of audio/music files.
+
Requires the SDL_mixed library.
+
o System.TM
-
+
Low-level wrapper for struct tm. This can be used to do (very) simple calendar operations. It is,
420:
GMT, and does mirror functionality already available in gmtime() and localtime() and friends, but in a (perhaps) easier to use API.
+
o decode_value now throws the error object Error.DecodeError.
-
---
UNSORTED
+
Useful to catch format errors in the decode string.
-
o
SDL
.
Music added to SDL.
-
Allows the playback of audio/music files.
-
Requires the SDL_mixed library.
+
o
Process
.
daemon
-
o
decode_value
now
throws
the
error
object
Error.DecodeError.
-
Useful
to
catch
format
errors
in the
decode
string
.
+
The
daemon()
function
is
for
programs
wishing
to
detach
themselves
+
from the controlling terminal and run
in the
background
as system
+
daemons
.
o Debug.pp_object_usage()
-
Pretty
print debug information, useful to get debug information
+
+
Pretty
-
print debug information, useful to get debug information
about object counts and memory usage in pike applications. Uses the new _object_size lfun, if present in objects, to account
467:
-- inherit the program returned by calling master()->resolve() on the specified identifier. Useful to inherit code written in pike.
-
o sprintf("%H") and sscanf("%H") (new) sscanf("%n") (now documented, existed before (%!<X> modifier, used by optimizer))
-
+
o Image.JPEG.exif_decode
-
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
+
Added
support
for
SHA256,
SHA384
and
SHA512
as
hash
functions.
+
Expose
the
used
hash
and
key
types
in the
out
data
-
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
488:
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
System.sync()
+
Synchronizes the filesystem on systems where this is possible
+
(currently windows and unix-like systems)
.
-
+
o System.getloadavg()
+
Return the current load average.
+
+
o Unicode databases updated to 6.2.0
o Timezone databases updated to tzdata2013d
-
o System.sync()
-
o System.getloadavg()
+
o Stdio.File()->send/receive[_fd] o The Search module has seen several fixes o Standalone tools added: