PERL5101DELTA
Section: Perl Programmers Reference Guide (1)Updated: 2009-08-22
Index Return to Main Contents
NAME
perldelta - what is new for perl v5.10.1DESCRIPTION
This document describes differences between the 5.10.0 release and the 5.10.1 release.If you are upgrading from an earlier release such as 5.8.8, first read the perl5100delta, which describes differences between 5.8.8 and 5.10.0
Incompatible Changes
Switch statement changes
The handling of complex expressions by the "given"/"when" switch statement has been enhanced. There are two new cases where "when" now interprets its argument as a boolean, instead of an expression to be used in a smart match:- flip-flop operators
-
The ".." and "..." flip-flop operators are now evaluated in boolean
context, following their usual semantics; see ``Range Operators'' in perlop.
Note that, as in perl 5.10.0, "when (1..10)" will not work to test whether a given value is an integer between 1 and 10; you should use "when ([1..10])" instead (note the array reference).
However, contrary to 5.10.0, evaluating the flip-flop operators in boolean context ensures it can now be useful in a "when()", notably for implementing bistable conditions, like in:
when (/^=begin/ .. /^=end/) { # do something }
- defined-or operator
- A compound expression involving the defined-or operator, as in "when (expr1 // expr2)", will be treated as boolean if the first expression is boolean. (This just extends the existing rule that applies to the regular or operator, as in "when (expr1 || expr2)".)
The next section details more changes brought to the semantics to the smart match operator, that naturally also modify the behaviour of the switch statements where smart matching is implicitly used.
Smart match changes
Changes to type-based dispatchThe smart match operator "~~" is no longer commutative. The behaviour of a smart match now depends primarily on the type of its right hand argument. Moreover, its semantics have been adjusted for greater consistency or usefulness in several cases. While the general backwards compatibility is maintained, several changes must be noted:
- *
- Code references with an empty prototype are no longer treated specially. They are passed an argument like the other code references (even if they choose to ignore it).
- *
- "%hash ~~ sub {}" and "@array ~~ sub {}" now test that the subroutine returns a true value for each key of the hash (or element of the array), instead of passing the whole hash or array as a reference to the subroutine.
- *
- Due to the commutativity breakage, code references are no longer treated specially when appearing on the left of the "~~" operator, but like any vulgar scalar.
- *
- "undef ~~ %hash" is always false (since "undef" can't be a key in a hash). No implicit conversion to "" is done (as was the case in perl 5.10.0).
- *
- "$scalar ~~ @array" now always distributes the smart match across the elements of the array. It's true if one element in @array verifies "$scalar ~~ $element". This is a generalization of the old behaviour that tested whether the array contained the scalar.
The full dispatch table for the smart match operator is given in ``Smart matching in detail'' in perlsyn.
According to the rule of dispatch based on the rightmost argument type, when an object overloading "~~" appears on the right side of the operator, the overload routine will always be called (with a 3rd argument set to a true value, see overload.) However, when the object will appear on the left, the overload routine will be called only when the rightmost argument is a simple scalar. This way distributivity of smart match across arrays is not broken, as well as the other behaviours with complex types (coderefs, hashes, regexes). Thus, writers of overloading routines for smart match mostly need to worry only with comparing against a scalar, and possibly with stringification overloading; the other common cases will be automatically handled consistently.
"~~" will now refuse to work on objects that do not overload it (in order to avoid relying on the object's underlying structure). (However, if the object overloads the stringification or the numification operators, and if overload fallback is active, it will be used instead, as usual.)
Other incompatible changes
- *
- The semantics of "use feature :5.10*" have changed slightly. See ``Modules and Pragmata'' for more information.
- *
- It is now a run-time error to use the smart match operator "~~" with an object that has no overload defined for it. (This way "~~" will not break encapsulation by matching against the object's internal representation as a reference.)
- *
- The version control system used for the development of the perl interpreter has been switched from Perforce to git. This is mainly an internal issue that only affects people actively working on the perl core; but it may have minor external visibility, for example in some of details of the output of "perl -V". See perlrepository for more information.
- *
- The internal structure of the "ext/" directory in the perl source has been reorganised. In general, a module "Foo::Bar" whose source was stored under ext/Foo/Bar/ is now located under ext/Foo-Bar/. Also, some modules have been moved from lib/ to ext/. This is purely a source tarball change, and should make no difference to the compilation or installation of perl, unless you have a very customised build process that explicitly relies on this structure, or which hard-codes the "nonxs_ext" Configure parameter. Specifically, this change does not by default alter the location of any files in the final installation.
- *
- As part of the "Test::Harness" 2.x to 3.x upgrade, the experimental "Test::Harness::Straps" module has been removed. See ``Updated Modules'' for more details.
- *
- As part of the "ExtUtils::MakeMaker" upgrade, the "ExtUtils::MakeMaker::bytes" and "ExtUtils::MakeMaker::vmsish" modules have been removed from this distribution.
- *
- "Module::CoreList" no longer contains the %:patchlevel hash.
- *
-
This one is actually a change introduced in 5.10.0, but it was missed
from that release's perldelta, so it is mentioned here instead.
A bugfix related to the handling of the "/m" modifier and "qr" resulted in a change of behaviour between 5.8.x and 5.10.0:
# matches in 5.8.x, doesn't match in 5.10.0 $re = qr/^bar/; "foo\nbar" =~ /$re/m;
Core Enhancements
Unicode Character Database 5.1.0
The copy of the Unicode Character Database included in Perl 5.10.1 has been updated to 5.1.0 from 5.0.0. See <http://www.unicode.org/versions/Unicode5.1.0/#NotableChanges> for the notable changes.A proper interface for pluggable Method Resolution Orders
As of Perl 5.10.1 there is a new interface for plugging and using method resolution orders other than the default (linear depth first search). The C3 method resolution order added in 5.10.0 has been re-implemented as a plugin, without changing its Perl-space interface. See perlmroapi for more information.The overloading pragma
This pragma allows you to lexically disable or enable overloading for some or all operations. (Yuval Kogman)Parallel tests
The core distribution can now run its regression tests in parallel on Unix-like platforms. Instead of running "make test", set "TEST_JOBS" in your environment to the number of tests to run in parallel, and run "make test_harness". On a Bourne-like shell, this can be done as
TEST_JOBS=3 make test_harness # Run 3 tests in parallel
An environment variable is used, rather than parallel make itself, because TAP::Harness needs to be able to schedule individual non-conflicting test scripts itself, and there is no standard interface to "make" utilities to interact with their job schedulers.
Note that currently some test scripts may fail when run in parallel (most notably "ext/IO/t/io_dir.t"). If necessary run just the failing scripts again sequentially and see if the failures go away.
DTrace support
Some support for DTrace has been added. See ``DTrace support'' in INSTALL.Support for configure_requires in CPAN module metadata
Both "CPAN" and "CPANPLUS" now support the "configure_requires" keyword in the "META.yml" metadata file included in most recent CPAN distributions. This allows distribution authors to specify configuration prerequisites that must be installed before running Makefile.PL or Build.PL.See the documentation for "ExtUtils::MakeMaker" or "Module::Build" for more on how to specify "configure_requires" when creating a distribution for CPAN.
Modules and Pragmata
New Modules and Pragmata
- autodie
- This is a new lexically-scoped alternative for the "Fatal" module. The bundled version is 2.06_01. Note that in this release, using a string eval when "autodie" is in effect can cause the autodie behaviour to leak into the surrounding scope. See ``BUGS'' in autodie for more details.
- Compress::Raw::Bzip2
- This has been added to the core (version 2.020).
- parent
- This pragma establishes an ISA relationship with base classes at compile time. It provides the key feature of "base" without the feature creep.
- Parse::CPAN::Meta
- This has been added to the core (version 1.39).
Pragmata Changes
- attributes
- Upgraded from version 0.08 to 0.09.
- attrs
- Upgraded from version 1.02 to 1.03.
- base
- Upgraded from version 2.13 to 2.14. See parent for a replacement.
- bigint
- Upgraded from version 0.22 to 0.23.
- bignum
- Upgraded from version 0.22 to 0.23.
- bigrat
- Upgraded from version 0.22 to 0.23.
- charnames
-
Upgraded from version 1.06 to 1.07.
The Unicode NameAliases.txt database file has been added. This has the effect of adding some extra "\N" character names that formerly wouldn't have been recognised; for example, "\N{LATIN CAPITAL LETTER GHA}".
- constant
- Upgraded from version 1.13 to 1.17.
- feature
- The meaning of the ":5.10" and ":5.10.X" feature bundles has changed slightly. The last component, if any (i.e. "X") is simply ignored. This is predicated on the assumption that new features will not, in general, be added to maintenance releases. So ":5.10" and ":5.10.X" have identical effect. This is a change to the behaviour documented for 5.10.0.
- fields
- Upgraded from version 2.13 to 2.14 (this was just a version bump; there were no functional changes).
- lib
- Upgraded from version 0.5565 to 0.62.
- open
- Upgraded from version 1.06 to 1.07.
- overload
- Upgraded from version 1.06 to 1.07.
- overloading
- See "The "overloading" pragma" above.
- version
- Upgraded from version 0.74 to 0.77.
Updated Modules
- Archive::Extract
- Upgraded from version 0.24 to 0.34.
- Archive::Tar
- Upgraded from version 1.38 to 1.52.
- Attribute::Handlers
- Upgraded from version 0.79 to 0.85.
- AutoLoader
- Upgraded from version 5.63 to 5.68.
- AutoSplit
- Upgraded from version 1.05 to 1.06.
- B
- Upgraded from version 1.17 to 1.22.
- B::Debug
- Upgraded from version 1.05 to 1.11.
- B::Deparse
- Upgraded from version 0.83 to 0.89.
- B::Lint
- Upgraded from version 1.09 to 1.11.
- B::Xref
- Upgraded from version 1.01 to 1.02.
- Benchmark
- Upgraded from version 1.10 to 1.11.
- Carp
- Upgraded from version 1.08 to 1.11.
- CGI
- Upgraded from version 3.29 to 3.43. (also includes the ``default_value for popup_menu()'' fix from 3.45).
- Compress::Zlib
- Upgraded from version 2.008 to 2.020.
- CPAN
- Upgraded from version 1.9205 to 1.9402. "CPAN::FTP" has a local fix to stop it being too verbose on download failure.
- CPANPLUS
- Upgraded from version 0.84 to 0.88.
- CPANPLUS::Dist::Build
- Upgraded from version 0.06_02 to 0.36.
- Cwd
- Upgraded from version 3.25_01 to 3.30.
- Data::Dumper
- Upgraded from version 2.121_14 to 2.124.
- DB
- Upgraded from version 1.01 to 1.02.
- DB_File
- Upgraded from version 1.816_1 to 1.820.
- Devel::PPPort
- Upgraded from version 3.13 to 3.19.
- Digest::MD5
- Upgraded from version 2.36_01 to 2.39.
- Digest::SHA
- Upgraded from version 5.45 to 5.47.
- DirHandle
- Upgraded from version 1.01 to 1.03.
- Dumpvalue
- Upgraded from version 1.12 to 1.13.
- DynaLoader
- Upgraded from version 1.08 to 1.10.
- Encode
- Upgraded from version 2.23 to 2.35.
- Errno
- Upgraded from version 1.10 to 1.11.
- Exporter
- Upgraded from version 5.62 to 5.63.
- ExtUtils::CBuilder
- Upgraded from version 0.21 to 0.2602.
- ExtUtils::Command
- Upgraded from version 1.13 to 1.16.
- ExtUtils::Constant
- Upgraded from 0.20 to 0.22. (Note that neither of these versions are available on CPAN.)
- ExtUtils::Embed
- Upgraded from version 1.27 to 1.28.
- ExtUtils::Install
- Upgraded from version 1.44 to 1.54.
- ExtUtils::MakeMaker
-
Upgraded from version 6.42 to 6.55_02.
Note that "ExtUtils::MakeMaker::bytes" and "ExtUtils::MakeMaker::vmsish" have been removed from this distribution.
- ExtUtils::Manifest
- Upgraded from version 1.51_01 to 1.56.
- ExtUtils::ParseXS
- Upgraded from version 2.18_02 to 2.2002.
- Fatal
- Upgraded from version 1.05 to 2.06_01. See also the new pragma "autodie".
- File::Basename
- Upgraded from version 2.76 to 2.77.
- File::Compare
- Upgraded from version 1.1005 to 1.1006.
- File::Copy
- Upgraded from version 2.11 to 2.14.
- File::Fetch
- Upgraded from version 0.14 to 0.20.
- File::Find
- Upgraded from version 1.12 to 1.14.
- File::Path
- Upgraded from version 2.04 to 2.07_03.
- File::Spec
- Upgraded from version 3.2501 to 3.30.
- File::stat
- Upgraded from version 1.00 to 1.01.
- File::Temp
- Upgraded from version 0.18 to 0.22.
- FileCache
- Upgraded from version 1.07 to 1.08.
- FileHandle
- Upgraded from version 2.01 to 2.02.
- Filter::Simple
- Upgraded from version 0.82 to 0.84.
- Filter::Util::Call
- Upgraded from version 1.07 to 1.08.
- FindBin
- Upgraded from version 1.49 to 1.50.
- GDBM_File
- Upgraded from version 1.08 to 1.09.
- Getopt::Long
- Upgraded from version 2.37 to 2.38.
- Hash::Util::FieldHash
- Upgraded from version 1.03 to 1.04. This fixes a memory leak.
- I18N::Collate
- Upgraded from version 1.00 to 1.01.
- IO
-
Upgraded from version 1.23_01 to 1.25.
This makes non-blocking mode work on Windows in "IO::Socket::INET" [CPAN #43573].
- IO::Compress::*
- Upgraded from version 2.008 to 2.020.
- IO::Dir
- Upgraded from version 1.06 to 1.07.
- IO::Handle
- Upgraded from version 1.27 to 1.28.
- IO::Socket
- Upgraded from version 1.30_01 to 1.31.
- IO::Zlib
- Upgraded from version 1.07 to 1.09.
- IPC::Cmd
- Upgraded from version 0.40_1 to 0.46.
- IPC::Open3
- Upgraded from version 1.02 to 1.04.
- IPC::SysV
- Upgraded from version 1.05 to 2.01.
- lib
- Upgraded from version 0.5565 to 0.62.
- List::Util
- Upgraded from version 1.19 to 1.21.
- Locale::MakeText
- Upgraded from version 1.12 to 1.13.
- Log::Message
- Upgraded from version 0.01 to 0.02.
- Math::BigFloat
- Upgraded from version 1.59 to 1.60.
- Math::BigInt
- Upgraded from version 1.88 to 1.89.
- Math::BigInt::FastCalc
- Upgraded from version 0.16 to 0.19.
- Math::BigRat
- Upgraded from version 0.21 to 0.22.
- Math::Complex
- Upgraded from version 1.37 to 1.56.
- Math::Trig
- Upgraded from version 1.04 to 1.20.
- Memoize
- Upgraded from version 1.01_02 to 1.01_03 (just a minor documentation change).
- Module::Build
- Upgraded from version 0.2808_01 to 0.34_02.
- Module::CoreList
- Upgraded from version 2.13 to 2.18. This release no longer contains the %Module::CoreList::patchlevel hash.
- Module::Load
- Upgraded from version 0.12 to 0.16.
- Module::Load::Conditional
- Upgraded from version 0.22 to 0.30.
- Module::Loaded
- Upgraded from version 0.01 to 0.02.
- Module::Pluggable
- Upgraded from version 3.6 to 3.9.
- NDBM_File
- Upgraded from version 1.07 to 1.08.
- Net::Ping
- Upgraded from version 2.33 to 2.36.
- NEXT
- Upgraded from version 0.60_01 to 0.64.
- Object::Accessor
- Upgraded from version 0.32 to 0.34.
- OS2::REXX
- Upgraded from version 1.03 to 1.04.
- Package::Constants
- Upgraded from version 0.01 to 0.02.
- PerlIO
- Upgraded from version 1.04 to 1.06.
- PerlIO::via
- Upgraded from version 0.04 to 0.07.
- Pod::Man
- Upgraded from version 2.16 to 2.22.
- Pod::Parser
- Upgraded from version 1.35 to 1.37.
- Pod::Simple
- Upgraded from version 3.05 to 3.07.
- Pod::Text
- Upgraded from version 3.08 to 3.13.
- POSIX
- Upgraded from version 1.13 to 1.17.
- Safe
- Upgraded from 2.12 to 2.18.
- Scalar::Util
- Upgraded from version 1.19 to 1.21.
- SelectSaver
- Upgraded from 1.01 to 1.02.
- SelfLoader
- Upgraded from 1.11 to 1.17.
- Socket
- Upgraded from 1.80 to 1.82.
- Storable
- Upgraded from 2.18 to 2.20.
- Switch
- Upgraded from version 2.13 to 2.14. Please see ``Deprecations''.
- Symbol
- Upgraded from version 1.06 to 1.07.
- Sys::Syslog
- Upgraded from version 0.22 to 0.27.
- Term::ANSIColor
- Upgraded from version 1.12 to 2.00.
- Term::ReadLine
- Upgraded from version 1.03 to 1.04.
- Term::UI
- Upgraded from version 0.18 to 0.20.
- Test::Harness
-
Upgraded from version 2.64 to 3.17.
Note that one side-effect of the 2.x to 3.x upgrade is that the experimental "Test::Harness::Straps" module (and its supporting "Assert", "Iterator", "Point" and "Results" modules) have been removed. If you still need this, then they are available in the (unmaintained) "Test-Harness-Straps" distribution on CPAN.
- Test::Simple
- Upgraded from version 0.72 to 0.92.
- Text::ParseWords
- Upgraded from version 3.26 to 3.27.
- Text::Tabs
- Upgraded from version 2007.1117 to 2009.0305.
- Text::Wrap
- Upgraded from version 2006.1117 to 2009.0305.
- Thread::Queue
- Upgraded from version 2.00 to 2.11.
- Thread::Semaphore
- Upgraded from version 2.01 to 2.09.
- threads
- Upgraded from version 1.67 to 1.72.
- threads::shared
- Upgraded from version 1.14 to 1.29.
- Tie::RefHash
- Upgraded from version 1.37 to 1.38.
- Tie::StdHandle
- This has documentation changes, and has been assigned a version for the first time: version 4.2.
- Time::HiRes
- Upgraded from version 1.9711 to 1.9719.
- Time::Local
- Upgraded from version 1.18 to 1.1901.
- Time::Piece
- Upgraded from version 1.12 to 1.15.
- Unicode::Normalize
- Upgraded from version 1.02 to 1.03.
- Unicode::UCD
-
Upgraded from version 0.25 to 0.27.
"charinfo()" now works on Unified CJK code points added to later versions of Unicode.
"casefold()" has new fields returned to provide both a simpler interface and previously missing information. The old fields are retained for backwards compatibility. Information about Turkic-specific code points is now returned.
The documentation has been corrected and expanded.
- UNIVERSAL
- Upgraded from version 1.04 to 1.05.
- Win32
- Upgraded from version 0.34 to 0.39.
- Win32API::File
- Upgraded from version 0.1001_01 to 0.1101.
- XSLoader
- Upgraded from version 0.08 to 0.10.
Utility Changes
- h2ph
- Now looks in "include-fixed" too, which is a recent addition to gcc's search path.
- h2xs
-
No longer incorrectly treats enum values like macros (Daniel Burr).
Now handles C++ style constants ("//") properly in enums. (A patch from Rainer Weikusat was used; Daniel Burr also proposed a similar fix).
- perl5db.pl
-
"LVALUE" subroutines now work under the debugger.
The debugger now correctly handles proxy constant subroutines, and subroutine stubs.
- perlthanks
- Perl 5.10.1 adds a new utility perlthanks, which is a variant of perlbug, but for sending non-bug-reports to the authors and maintainers of Perl. Getting nothing but bug reports can become a bit demoralising: we'll see if this changes things.
New Documentation
- perlhaiku
- This contains instructions on how to build perl for the Haiku platform.
- perlmroapi
- This describes the new interface for pluggable Method Resolution Orders.
- perlperf
- This document, by Richard Foley, provides an introduction to the use of performance and optimization techniques which can be used with particular reference to perl programs.
- perlrepository
- This describes how to access the perl source using the git version control system.
- perlthanks
- This describes the new perlthanks utility.
Changes to Existing Documentation
The various large "Changes*" files (which listed every change made to perl over the last 18 years) have been removed, and replaced by a small file, also called "Changes", which just explains how that same information may be extracted from the git version control system.The file Porting/patching.pod has been deleted, as it mainly described interacting with the old Perforce-based repository, which is now obsolete. Information still relevant has been moved to perlrepository.
perlapi, perlintern, perlmodlib and perltoc are now all generated at build time, rather than being shipped as part of the release.
Performance Enhancements
- *
- A new internal cache means that "isa()" will often be faster.
- *
- Under "use locale", the locale-relevant information is now cached on read-only values, such as the list returned by "keys %hash". This makes operations such as "sort keys %hash" in the scope of "use locale" much faster.
- *
- Empty "DESTROY" methods are no longer called.
Installation and Configuration Improvements
ext/ reorganisation
The layout of directories in ext has been revised. Specifically, all extensions are now flat, and at the top level, with "/" in pathnames replaced by "-", so that ext/Data/Dumper/ is now ext/Data-Dumper/, etc. The names of the extensions as specified to Configure, and as reported by %Config::Config under the keys "dynamic_ext", "known_extensions", "nonxs_ext" and "static_ext" have not changed, and still use "/". Hence this change will not have any affect once perl is installed. However, "Attribute::Handlers", "Safe" and "mro" have now become extensions in their own right, so if you run Configure with options to specify an exact list of extensions to build, you will need to change it to account for this.For 5.10.2, it is planned that many dual-life modules will have been moved from lib to ext; again this will have no effect on an installed perl, but will matter if you invoke Configure with a pre-canned list of extensions to build.
Configuration improvements
If "vendorlib" and "vendorarch" are the same, then they are only added to @INC once.$Config{usedevel} and the C-level "PERL_USE_DEVEL" are now defined if perl is built with "-Dusedevel".
Configure will enable use of "-fstack-protector", to provide protection against stack-smashing attacks, if the compiler supports it.
Configure will now determine the correct prototypes for re-entrant functions, and for "gconvert", if you are using a C++ compiler rather than a C compiler.
On Unix, if you build from a tree containing a git repository, the configuration process will note the commit hash you have checked out, for display in the output of "perl -v" and "perl -V". Unpushed local commits are automatically added to the list of local patches displayed by "perl -V".
Compilation improvements
As part of the flattening of ext, all extensions on all platforms are built by make_ext.pl. This replaces the Unix-specific ext/util/make_ext, VMS-specific make_ext.com and Win32-specific win32/buildext.pl.Platform Specific Changes
- AIX
-
Removed libbsd for AIX 5L and 6.1. Only flock() was used from libbsd.
Removed libgdbm for AIX 5L and 6.1. The libgdbm is delivered as an optional package with the AIX Toolbox. Unfortunately the 64 bit version is broken.
Hints changes mean that AIX 4.2 should work again.
- Cygwin
- On Cygwin we now strip the last number from the DLL. This has been the behaviour in the cygwin.com build for years. The hints files have been updated.
- FreeBSD
- The hints files now identify the correct threading libraries on FreeBSD 7 and later.
- Irix
- We now work around a bizarre preprocessor bug in the Irix 6.5 compiler: "cc -E -" unfortunately goes into K&R mode, but "cc -E file.c" doesn't.
- Haiku
- Patches from the Haiku maintainers have been merged in. Perl should now build on Haiku.
- MirOS BSD
- Perl should now build on MirOS BSD.
- NetBSD
- Hints now supports versions 5.*.
- Stratus VOS
- Various changes from Stratus have been merged in.
- Symbian
- There is now support for Symbian S60 3.2 SDK and S60 5.0 SDK.
- Win32
- Improved message window handling means that "alarm" and "kill" messages will no longer be dropped under race conditions.
- VMS
-
Reads from the in-memory temporary files of "PerlIO::scalar" used to fail
if $/ was set to a numeric reference (to indicate record-style reads).
This is now fixed.
VMS now supports "getgrgid".
Many improvements and cleanups have been made to the VMS file name handling and conversion code.
Enabling the "PERL_VMS_POSIX_EXIT" logical name now encodes a POSIX exit status in a VMS condition value for better interaction with GNV's bash shell and other utilities that depend on POSIX exit values. See ``$?'' in perlvms for details.
Selected Bug Fixes
- *
- 5.10.0 inadvertently disabled an optimisation, which caused a measurable performance drop in list assignment, such as is often used to assign function parameters from @_. The optimisation has been re-instated, and the performance regression fixed.
- *
- Fixed memory leak on "while (1) { map 1, 1 }" [RT #53038].
- *
- Some potential coredumps in PerlIO fixed [RT #57322,54828].
- *
- The debugger now works with lvalue subroutines.
- *
- The debugger's "m" command was broken on modules that defined constants [RT #61222].
- *
- "crypt()" and string complement could return tainted values for untainted arguments [RT #59998].
- *
- The "-i.suffix" command-line switch now recreates the file using restricted permissions, before changing its mode to match the original file. This eliminates a potential race condition [RT #60904].
- *
- On some UNIX systems, the value in $? would not have the top bit set ("$? & 128") even if the child core dumped.
- *
- Under some circumstances, $^R could incorrectly become undefined [RT #57042].
- *
- (XS) In various hash functions, passing a pre-computed hash to when the key is UTF-8 might result in an incorrect lookup.
- *
- (XS) Including XSUB.h before perl.h gave a compile-time error [RT #57176].
- *
- "$object->isa('Foo')" would report false if the package "Foo" didn't exist, even if the object's @ISA contained "Foo".
- *
- Various bugs in the new-to 5.10.0 mro code, triggered by manipulating @ISA, have been found and fixed.
- *
- Bitwise operations on references could crash the interpreter, e.g. "$x=\$y; $x |= "foo"" [RT #54956].
- *
-
Patterns including alternation might be sensitive to the internal UTF-8
representation, e.g.
my $byte = chr(192); my $utf8 = chr(192); utf8::upgrade($utf8); $utf8 =~ /$byte|X}/i; # failed in 5.10.0
- *
- Within UTF8-encoded Perl source files (i.e. where "use utf8" is in effect), double-quoted literal strings could be corrupted where a "\xNN", "\0NNN" or "\N{}" is followed by a literal character with ordinal value greater than 255 [RT #59908].
- *
- "B::Deparse" failed to correctly deparse various constructs: "readpipe STRING" [RT #62428], "CORE::require(STRING)" [RT #62488], "sub foo(_)" [RT #62484].
- *
- Using "setpgrp()" with no arguments could corrupt the perl stack.
- *
- The block form of "eval" is now specifically trappable by "Safe" and "ops". Previously it was erroneously treated like string "eval".
- *
- In 5.10.0, the two characters "[~" were sometimes parsed as the smart match operator ("~~") [RT #63854].
- *
-
In 5.10.0, the "*" quantifier in patterns was sometimes treated as
"{0,32767}" [RT #60034, #60464]. For example, this match would fail:
("ab" x 32768) =~ /^(ab)*$/
- *
- "shmget" was limited to a 32 bit segment size on a 64 bit OS [RT #63924].
- *
-
Using "next" or "last" to exit a "given" block no longer produces a
spurious warning like the following:
Exiting given via last at foo.pl line 123
- *
- On Windows, '.\foo' and '..\foo' were treated differently than './foo' and '../foo' by "do" and "require" [RT #63492].
- *
-
Assigning a format to a glob could corrupt the format; e.g.:
*bar=*foo{FORMAT}; # foo format now bad
- *
- Attempting to coerce a typeglob to a string or number could cause an assertion failure. The correct error message is now generated, "Can't coerce GLOB to $type".
- *
- Under "use filetest 'access'", "-x" was using the wrong access mode. This has been fixed [RT #49003].
- *
- "length" on a tied scalar that returned a Unicode value would not be correct the first time. This has been fixed.
- *
- Using an array "tie" inside in array "tie" could SEGV. This has been fixed. [RT #51636]
- *
- A race condition inside "PerlIOStdio_close()" has been identified and fixed. This used to cause various threading issues, including SEGVs.
- *
- In "unpack", the use of "()" groups in scalar context was internally placing a list on the interpreter's stack, which manifested in various ways, including SEGVs. This is now fixed [RT #50256].
- *
- Magic was called twice in "substr", "\&$x", "tie $x, $m" and "chop". These have all been fixed.
- *
- A 5.10.0 optimisation to clear the temporary stack within the implicit loop of "s///ge" has been reverted, as it turned out to be the cause of obscure bugs in seemingly unrelated parts of the interpreter [commit ef0d4e17921ee3de].
- *
- The line numbers for warnings inside "elsif" are now correct.
- *
- The ".." operator now works correctly with ranges whose ends are at or close to the values of the smallest and largest integers.
- *
- "binmode STDIN, ':raw'" could lead to segmentation faults on some platforms. This has been fixed [RT #54828].
- *
- An off-by-one error meant that "index $str, ..." was effectively being executed as "index "$str\0", ...". This has been fixed [RT #53746].
- *
- Various leaks associated with named captures in regexes have been fixed [RT #57024].
- *
- A weak reference to a hash would leak. This was affecting "DBI" [RT #56908].
- *
- Using (?|) in a regex could cause a segfault [RT #59734].
- *
- Use of a UTF-8 "tr//" within a closure could cause a segfault [RT #61520].
- *
- Calling "sv_chop()" or otherwise upgrading an SV could result in an unaligned 64-bit access on the SPARC architecture [RT #60574].
- *
- In the 5.10.0 release, "inc_version_list" would incorrectly list "5.10.*" after "5.8.*"; this affected the @INC search order [RT #67628].
- *
- In 5.10.0, "pack "a*", $tainted_value" returned a non-tainted value [RT #52552].
- *
- In 5.10.0, "printf" and "sprintf" could produce the fatal error "panic: utf8_mg_pos_cache_update" when printing UTF-8 strings [RT #62666].
- *
- In the 5.10.0 release, a dynamically created "AUTOLOAD" method might be missed (method cache issue) [RT #60220,60232].
- *
- In the 5.10.0 release, a combination of "use feature" and "//ee" could cause a memory leak [RT #63110].
- *
- "-C" on the shebang ("#!") line is once more permitted if it is also specified on the command line. "-C" on the shebang line used to be a silent no-op if it was not also on the command line, so perl 5.10.0 disallowed it, which broke some scripts. Now perl checks whether it is also on the command line and only dies if it is not [RT #67880].
- *
-
In 5.10.0, certain types of re-entrant regular expression could crash,
or cause the following assertion failure [RT #60508]:
Assertion rx->sublen >= (s - rx->subbeg) + i failed
New or Changed Diagnostics
- panic: sv_chop %s
- This new fatal error occurs when the C routine "Perl_sv_chop()" was passed a position that is not within the scalar's string buffer. This could be caused by buggy XS code, and at this point recovery is not possible.
- Can't locate package %s for the parents of %s
- This warning has been removed. In general, it only got produced in conjunction with other warnings, and removing it allowed an ISA lookup optimisation to be added.
- v-string in use/require is non-portable
- This warning has been removed.
- Deep recursion on subroutine %s
- It is now possible to change the depth threshold for this warning from the default of 100, by recompiling the perl binary, setting the C pre-processor macro "PERL_SUB_DEPTH_WARN" to the desired value.
Changed Internals
- *
- The J.R.R. Tolkien quotes at the head of C source file have been checked and proper citations added, thanks to a patch from Tom Christiansen.
- *
- "vcroak()" now accepts a null first argument. In addition, a full audit was made of the ``not NULL'' compiler annotations, and those for several other internal functions were corrected.
- *
- New macros "dSAVEDERRNO", "dSAVE_ERRNO", "SAVE_ERRNO", "RESTORE_ERRNO" have been added to formalise the temporary saving of the "errno" variable.
- *
- The function "Perl_sv_insert_flags" has been added to augment "Perl_sv_insert".
- *
- The function "Perl_newSV_type(type)" has been added, equivalent to "Perl_newSV()" followed by "Perl_sv_upgrade(type)".
- *
-
The function "Perl_newSVpvn_flags()" has been added, equivalent to
"Perl_newSVpvn()" and then performing the action relevant to the flag.
Two flag bits are currently supported.
-
There is also a wrapper that takes constant strings, "newSVpvs_flags()".
- *
- The function "Perl_croak_xs_usage" has been added as a wrapper to "Perl_croak".
- *
- The functions "PerlIO_find_layer" and "PerlIO_list_alloc" are now exported.
- *
- "PL_na" has been exterminated from the core code, replaced by local STRLEN temporaries, or "*_nolen()" calls. Either approach is faster than "PL_na", which is a pointer deference into the interpreter structure under ithreads, and a global variable otherwise.
- *
- "Perl_mg_free()" used to leave freed memory accessible via SvMAGIC() on the scalar. It now updates the linked list to remove each piece of magic as it is freed.
- *
- Under ithreads, the regex in "PL_reg_curpm" is now reference counted. This eliminates a lot of hackish workarounds to cope with it not being reference counted.
- *
- "Perl_mg_magical()" would sometimes incorrectly turn on "SvRMAGICAL()". This has been fixed.
- *
- The public IV and NV flags are now not set if the string value has trailing ``garbage''. This behaviour is consistent with not setting the public IV or NV flags if the value is out of range for the type.
- *
- SV allocation tracing has been added to the diagnostics enabled by "-Dm". The tracing can alternatively output via the "PERL_MEM_LOG" mechanism, if that was enabled when the perl binary was compiled.
- *
- Uses of "Nullav", "Nullcv", "Nullhv", "Nullop", "Nullsv" etc have been replaced by "NULL" in the core code, and non-dual-life modules, as "NULL" is clearer to those unfamiliar with the core code.
- *
- A macro MUTABLE_PTR(p) has been added, which on (non-pedantic) gcc will not cast away "const", returning a "void *". Macros "MUTABLE_SV(av)", "MUTABLE_SV(cv)" etc build on this, casting to "AV *" etc without casting away "const". This allows proper compile-time auditing of "const" correctness in the core, and helped picked up some errors (now fixed).
- *
- Macros "mPUSHs()" and "mXPUSHs()" have been added, for pushing SVs on the stack and mortalizing them.
- *
- Use of the private structure "mro_meta" has changed slightly. Nothing outside the core should be accessing this directly anyway.
- *
- A new tool, "Porting/expand-macro.pl" has been added, that allows you to view how a C preprocessor macro would be expanded when compiled. This is handy when trying to decode the macro hell that is the perl guts.
New Tests
Many modules updated from CPAN incorporate new tests.Several tests that have the potential to hang forever if they fail now incorporate a ``watchdog'' functionality that will kill them after a timeout, which helps ensure that "make test" and "make test_harness" run to completion automatically. (Jerry Hedden).
Some core-specific tests have been added:
- t/comp/retainedlines.t
- Check that the debugger can retain source lines from "eval".
- t/io/perlio_fail.t
- Check that bad layers fail.
- t/io/perlio_leaks.t
- Check that PerlIO layers are not leaking.
- t/io/perlio_open.t
- Check that certain special forms of open work.
- t/io/perlio.t
- General PerlIO tests.
- t/io/pvbm.t
- Check that there is no unexpected interaction between the internal types "PVBM" and "PVGV".
- t/mro/package_aliases.t
- Check that mro works properly in the presence of aliased packages.
- t/op/dbm.t
- Tests for "dbmopen" and "dbmclose".
- t/op/index_thr.t
- Tests for the interaction of "index" and threads.
- t/op/pat_thr.t
- Tests for the interaction of esoteric patterns and threads.
- t/op/qr_gc.t
- Test that "qr" doesn't leak.
- t/op/reg_email_thr.t
- Tests for the interaction of regex recursion and threads.
- t/op/regexp_qr_embed_thr.t
- Tests for the interaction of patterns with embedded "qr//" and threads.
- t/op/regexp_unicode_prop.t
- Tests for Unicode properties in regular expressions.
- t/op/regexp_unicode_prop_thr.t
- Tests for the interaction of Unicode properties and threads.
- t/op/reg_nc_tie.t
- Test the tied methods of "Tie::Hash::NamedCapture".
- t/op/reg_posixcc.t
- Check that POSIX character classes behave consistently.
- t/op/re.t
- Check that exportable "re" functions in universal.c work.
- t/op/setpgrpstack.t
- Check that "setpgrp" works.
- t/op/substr_thr.t
- Tests for the interaction of "substr" and threads.
- t/op/upgrade.t
- Check that upgrading and assigning scalars works.
- t/uni/lex_utf8.t
- Check that Unicode in the lexer works.
- t/uni/tie.t
- Check that Unicode and "tie" work.
Known Problems
This is a list of some significant unfixed bugs, which are regressions from either 5.10.0 or 5.8.x.- *
-
"List::Util::first" misbehaves in the presence of a lexical $_
(typically introduced by "my $_" or implicitly by "given"). The variable
which gets set for each iteration is the package variable $_, not the
lexical $_ [RT #67694].
A similar issue may occur in other modules that provide functions which take a block as their first argument, like
foo { ... $_ ...} list
- *
-
The "charnames" pragma may generate a run-time error when a regex is
interpolated [RT #56444]:
use charnames ':full'; my $r1 = qr/\N{THAI CHARACTER SARA I}/; "foo" =~ $r1; # okay "foo" =~ /$r1+/; # runtime error
A workaround is to generate the character outside of the regex:
my $a = "\N{THAI CHARACTER SARA I}"; my $r1 = qr/$a/;
- *
- Some regexes may run much more slowly when run in a child thread compared with the thread the pattern was compiled into [RT #55600].
Deprecations
The following items are now deprecated.- *
- "Switch" is buggy and should be avoided. From perl 5.11.0 onwards, it is intended that any use of the core version of this module will emit a warning, and that the module will eventually be removed from the core (probably in perl 5.14.0). See ``Switch statements'' in perlsyn for its replacement.
- *
- "suidperl" will be removed in 5.12.0. This provides a mechanism to emulate setuid permission bits on systems that don't support it properly.
Acknowledgements
Some of the work in this release was funded by a TPF grant.Nicholas Clark officially retired from maintenance pumpking duty at the end of 2008; however in reality he has put much effort in since then to help get 5.10.1 into a fit state to be released, including writing a considerable chunk of this perldelta.
Steffen Mueller and David Golden in particular helped getting CPAN modules polished and synchronised with their in-core equivalents.
Craig Berry was tireless in getting maint to run under VMS, no matter how many times we broke it for him.
The other core committers contributed most of the changes, and applied most of the patches sent in by the hundreds of contributors listed in AUTHORS.
(Sorry to all the people I haven't mentioned by name).
Finally, thanks to Larry Wall, without whom none of this would be necessary.
Reporting Bugs
If you find what you think is a bug, you might check the articles recently posted to the comp.lang.perl.misc newsgroup and the perl bug database at http://rt.perl.org/perlbug/ . There may also be information at http://www.perl.org/ , the Perl Home Page.If you believe you have an unreported bug, please run the perlbug program included with your release. Be sure to trim your bug down to a tiny but sufficient test case. Your bug report, along with the output of "perl -V", will be sent off to<EMAIL_ADDRESS>to be analysed by the Perl porting team.
If the bug you are reporting has security implications, which make it inappropriate to send to a publicly archived mailing list, then please send it to<EMAIL_ADDRESS>This points to a closed subscription unarchived mailing list, which includes all the core committers, who be able to help assess the impact of issues, figure out a resolution, and help co-ordinate the release of patches to mitigate or fix the problem across all platforms on which Perl is supported. Please only use this address for security issues in the Perl core, not for modules independently distributed on CPAN.
SEE ALSO
The Changes file for an explanation of how to view exhaustive details on what changed.The INSTALL file for how to build Perl.
The README file for general stuff.
The Artistic and Copying files for copyright information.
Index
- NAME
- DESCRIPTION
- Incompatible Changes
- Core Enhancements
- Modules and Pragmata
- Utility Changes
- New Documentation
- Changes to Existing Documentation
- Performance Enhancements
- Installation and Configuration Improvements
- Selected Bug Fixes
- New or Changed Diagnostics
- Changed Internals
- New Tests
- Known Problems
- Deprecations
- Acknowledgements
- Reporting Bugs
- SEE ALSO
This document was created by man2html, using the manual pages.
Time: 05:29:07 GMT, December 24, 2015


--- layout: page title: Getting Started redirect_from: "/display/docs/Getting+Started/" ---
The Smartling Translation API provides file translation management for tasks that you can also accomplish using the Smartling dashboard. By helping to connect your application directly to Smartling's platform, the API makes it easier for you to access translations for a large number of files within a complex deployment environment. The Smartling Translation API is not a real-time translation service (like Google Translate) and given that humans need to complete the translations, there will be a delay as translators complete the work.
Here are some examples of how to work with the Smartling API to upload and download files in the Smartling Translation Management System (TMS).
Every time you check-in a localization file to your code repository, trigger a script to upload the file to the Smartling TMS via the API. This approach makes the strings immediately available for translation. (You also have the option to manually approve this content for translation.) Even if the source content changes, Smartling immediately collects those changes, and the Smartling Translation Memory ensures that the new content leverages existing translations.
Write a script that you can run when deploying content to a staging server or through another dedicated build process that finds every localization file in your code repository and uploads them to the Smartling TMS via the API. This approach avoids translating non-final content but may slow the translation process as the content needs to be final before starting translations.
Use the Smartling API callbackUrl parameter to have Smartling automatically notify you when all text strings in a localization file are 100% translated and published. You can also automate the downloading of the completed file for testing, deployment or other actions. This approach makes translations available immediately upon completion.
Run a script that calls the file/list API and
returns the set of files (and their completeness) for a project. The script then reviews each file in the returned list and each locale in the project
to download all files to your code repository.
This approach makes completed translations available according to a scheduled or manual trigger and provides more control in the process for projects
that involve significant web site changes or critical content.
Write a script to download the latest translations with each deployment of your code regardless of the state of the translations. This approach works well if you use continuous deployment and can live with original content appearing on your translated sites until translations are complete and deployed.


Downs Remain Top, Bucs Sink Stellies
by Soccer LadumaOrlando Pirates 2-0 Stellenbosch FC
Orlando Pirates got back to winning ways with a 2-0 victory over Stellenbosch FC on Saturday afternoon at Rand Stadium.
Lesiba Mahlong and Sifiso Luthuli scored in either half to propel Pirates up to fourth on the table.
SuperSport United 0-2 Highlands Park
SuperSport United lost their second match in a row after going down 2-0 to Highlands Park on Saturday morning at Lucas Moripe Stadium.
Camren Ashby and Lucky Mdingi netted for the Lions of the North.
Kaizer Chiefs 1-1 Baroka FC
Kaizer Chiefs dropped points for the second successive match after being held to a 1-1 draw by Baroka FC.
Bakgaga broke the deadlock in the 24th minute but Amakhosi levelled matters six minutes later from the penalty spot.
Mamelodi Sundowns 1-0 Maritzburg United
Mamelodi Sundowns maintained their position at the top of the table after edging Maritzburg United 1-0 on Sunday morning at Lucas Moripe Stadium.
The Brazilians broke the deadlock with eight minutes remaining of the first stanza and the goal was enough to hand them the three points.
Other Results:
Chippa United 3-2 Bloemfontein Celtic
Polokwane City 0-0 AmaZulu
Golden Arrows 4-0 Black Leopards
Cape Town City 1-2 Bidvest Wits


AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccc
dddddddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeeeeeee
ffffffffffffffffffffffffffffff
gggggggggggggggggggggggggggggg
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
iiiiiiiiiiiiiiiiiiiiiiiiiiiiii
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjj
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
llllllllllllllllllllllllllllll
mmmmmmmmmmmmmmmmmmmmmmmmmm
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
oooooooooooooooooooooooooooooo
pppppppppppppppppppppppppppppp
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
ssssssssssssssssssssssssssssss
tttttttttttttttttttttttttttttt
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz


How Celtic beat Rangers to win the Betfred Cup and the Steven Gerrard error that handed them victory
They were second best for most of the game but Neil Lennon's side got the job done.
by Gabriel McKayNeil Lennon, Fraser Forster and Scott Brown all admitted that it wasn't Celtic's best performance of the season - far from it.
While they beat Rangers to lift the Betfred Cup , their 10th domestic trophy on the spin, the Hoops had only one shot on target in the 90 minutes - and that was probably offside.
That they didn't play well and still won speaks to Celtic 's mentality but there were some interesting tactical dynamics at work at Hampden on Sunday.
While Steven Gerrard's side controlled most of the match it was Lennon who went home with the trophy - here's how it happened.
Brown marshalls Kent
Jeremie Frimpong is a terrific talent and absolutely electric going forward, but he's still just 18 and was starting his first major cup final.
The right-back was up against Ryan Kent, a hard task for any player, and Lennon made sure to afford him extra protection.
While Scott Brown took up his customary position at the base of midfield it was clear he'd been told to double up on Kent wherever possible.
When Rangers worked the ball out to the left flank it was often the Celtic skipper who came across to help out his young team-mate.
Kent likes to drift inside, but even when he moved into wide areas he was tracked by Brown - particularly when Frimpong went on one of his forward raids.
In the below sequence we can see Brown move in to cover for Frimpong at right-back, with Kent ready to exploit the space left by the youngster.
The former Liverpool winger then moves inside and is tracked all the way by Brown.
It didn't work every time, with Kent squeezing between the two to set up Ryan Jack for a long-range shot on Fraser Forster's goal, but the help of Brown allowed Frimpong to be arguably Celtic's main attacking outlet in the first half without giving Kent the run of Hampden.
Edouard's impact
Steven Gerrard opted to start with a very narrow midfield, almost operating as a diamond at times.
Joe Aribo would go forward to provide a direct option alongside Alfredo Morelos, with Kent and Arfield happy to tuck in and congest the middle of the pitch alongside the more defensively-minded Jack and Kamara.
The width was provided by Borna Barisic and James Tavernier, both of whom are happy to get forward and deliver crosses.
The Rangers manager had clearly told his midfielders to press hard and stop Celtic being given time on the ball in midfield.
Lennon's midfield is arguably more technically gifted than Gerrard's, so the Gers boss looked to win the physical battle and deprive the likes of Callum McGregor and Ryan Christie of time to play.
That aggressive pressing and narrow shape did leave spaces elsewhere on the park.
However, with Lewis Morgan not a natural striker the Hoops struggled to find an out ball.
The youngster didn't seem inclined to drop deep and try to provide an option that way, and he was physically dominated by Helander and Goldson whenever the ball did go more direct.
The narrowness of the Rangers midfield meant there was plenty of space behind the full-backs, who were tasked with providing the width, but Morgan couldn't act as the pivot Celtic needed to exploit that.
The introduction of Odsonne Edouard on 59 minutes changed that dynamic almost immediately.
The Frenchman may not have been fully fit but his movement and positional sense is far better than that of Morgan.
His greater physical presence and willingness to drop deep paid dividends, with Edouard having the tactical nous to drop into the space behind James Tavernier.
That meant that when he spun away from Goldson the Rangers defender had no choice but to foul him, and Christopher Jullien scored from the resulting free-kick.
Once Frimpong was sent off, Edouard's ability to drop between the lines and hold the ball up proved crucial and almost brought a second goal.
Unlike Morgan, who had been isolated up-front before coming off, Edouard moved into the space between the Rangers midfield and defence.
Edouard has the skill and physical presence to beat his man and he was able to turn Goldson once again.
That meant Celtic finally had the chance to exploit the space behind the Rangers full-backs, with Edouard slipping it through for Mikey Johnston.
The substitute missed his chance to seal it, but Edouard offered what Morgan could not and gave his team a way to exploit the gaps left by Barisic and Tavernier.
Frimpong's red card meant Celtic inevitably spent most of the last half hour defending but it would have been interesting to see how the balance of play shifted had Edouard been available from the start.
All height on the night
If there's one thing we know about Neil Lennon as a manager it's that he likes his centre-backs to be big, strong and good in the air.
Kris Ajer and Christopher Jullien can certainly play but they're also big, imposing figures.
With Nir Bitton coming on to join the defence - Ajer switching to right-back after Frimpong's dismissal - Celtic sat very deep and narrow.
It was always a tactic with a high chance of success, as neither Morelos nor substitute Jermain Defoe are going to win many aerial battles.
Lennon essentially challenged Rangers to play through his defence, and while Morelos did have a good chance at the end they looked far less threatening once Celtic were down to 10.
The wrong call by Gerrard?
It's difficult to criticise a manager for throwing on a striker, particularly one of Jermain Defoe's quality, and a winger at 1-0 down against 10 men in a cup final.
However, bringing the veteran on for Glen Kamara rather than Scott Arfield, and sending Barker on to replace Aribo, was arguably the wrong decision.
Where Rangers had bossed the midfield for the first 70 minutes, the removal of the man sitting at the base of it saw meant they often had to go long from the back - which suited Celtic down to the ground.
By the end Rangers were practically playing a 4-2-4 - with Tavernier on the right wing and Arfield at right-back - in search of a goal but they sacrificed control and struggled to get the ball to their attacking players.
They no longer had Aribo's physical presence up-front, and were effectively two men down in midfield.
Of course, there would have been outcry had Defoe been left on the bench for the entire 90 minutes and there's no guarantee Rangers would have found a way past Forster with the form he was in.
But the decision to throw on attacking players in search of a goal was arguably not the right tactical decision.
It's hard to be too critical of Gerrard, given the way his team played for most of the match, but perhaps a more experienced manager would have trusted that the goal would come rather than going gung-ho and changing a system which had his team dominating the game up to that point.
Conclusion
It wasn't a vintage performance from Celtic, as Lennon and his players admitted after the match.
Gerrard got it right for most of the match and still ended up on the losing side, showing just how fine the margins are at this level.
Lennon deployed Brown cleverly and was hampered by Edouard not being available from the start, but won't have been happy with his team's performance.
A brilliant display by Forster, a little luck, and arguably a miscalculation from Gerrard handed Celtic the cup - which is really all that matters in the end.


Waking up to a coffee-scented shower might be just as good as a mug of the real deal. All you need are coffee grinds, sugar, vanilla and oil. Added bonus: coffee can help to reduce the appearance of cellulite! Find instructions here.
Addicted to the smell of fresh brew? Here is a way to enjoy it all day long. Create a cozy, scented candle with coffee grinds, nutmeg and a touch of cinnamon. Light it up to wake up. Make it with this tutorial.
Even if composting is not your bag, your garden can still benefit from used java. Coffee grounds are a great source of nitrogen, which is an essential nutrient for nearly all plants. Even though we tend to think of coffee as being an acidic drink, the grounds themselves have a pH level that is close to neutral, making them a great fertilizer. Test a given plant is tolerance by adding just one tablespoon of coffee grounds around its base once a week; gently mix the grounds into the topsoil each time. If your greenery responds well, try gradually upping the dose until you stop seeing improvement. Consult this guide for a list of sprouts that are particularly keen on coffee grounds.


{% extends 'layout.html' %} {% include 'includes/_navbar.html' %} {% block body %}
Hello {{session.username}}, this will delete your profile.
Do you wish to continue?
Delete


- Decimal to roman numeral converter
- should return I for 10.02600s
- should return II for 20.00250s
- should return III for 30.00250s
- should return IV for 40.00300s
- should return V for 50.00300s
- should return VI for 60.00250s
- should return VII for 70.00300s
- should return VIII for 80.00250s
- should return IX for 90.00250s
- should return X for 100.00250s
- should return XI for 110.00250s
- should return XII for 120.00400s
- should return XIII for 130.00250s
- should return XIV for 140.00300s
- should return XV for 150.00250s
- should return XVI for 160.00300s
- should return XVII for 170.00300s
- should return XVIII for 180.00250s
- should return XIX for 190.00250s
- should return XX for 200.00300s
- should return XXI for 210.00300s
- should return XXII for 220.00250s
- should return XXIII for 230.00400s
- should return XXIV for 240.00300s
- should return XXV for 250.00300s
- should return XXVI for 260.00250s
- should return XXVII for 270.00300s
- should return XXVIII for 280.00250s
- should return XXIX for 290.00250s
- should return XXX for 300.00300s
- should return XXXI for 310.00250s
- should return XXXII for 320.00300s
- should return XXXIII for 330.00250s
- should return XXXIV for 340.00400s
- should return XXXV for 350.00300s
- should return XXXVI for 360.00250s
- should return XXXVII for 370.00250s
- should return XXXVIII for 380.00250s
- should return XXXIX for 390.00250s
- should return XL for 400.00350s
- should return XLI for 410.00300s
- should return XLII for 420.00300s
- should return XLIII for 430.00300s
- should return XLIV for 440.00350s
- should return XLV for 450.00450s
- should return XLVI for 460.00300s
- should return XLVII for 470.00350s
- should return XLVIII for 480.00250s
- should return XLIX for 490.00250s
- should return L for 500.00250s
- should return LI for 510.00250s
- should return LII for 520.00250s
- should return LIII for 530.00250s
- should return LIV for 540.00250s
- should return LV for 550.00250s
- should return LVI for 560.00400s
- should return LVII for 570.00250s
- should return LVIII for 580.00250s
- should return LIX for 590.00300s
- should return LX for 600.00250s
- should return LXI for 610.00300s
- should return LXII for 620.00300s
- should return LXIII for 630.00300s
- should return LXIV for 640.00300s
- should return LXV for 650.00250s
- should return LXVI for 660.00250s
- should return LXVII for 670.00300s
- should return LXVIII for 680.00250s
- should return LXIX for 690.00300s
- should return LXX for 700.00250s
- should return LXXI for 710.00300s
- should return LXXII for 720.00250s
- should return LXXIII for 730.00250s
- should return LXXIV for 740.00250s
- should return LXXV for 750.00350s
- should return LXXVI for 760.00250s
- should return LXXVII for 770.00400s
- should return LXXVIII for 780.00300s
- should return LXXIX for 790.00250s
- should return LXXX for 800.00300s
- should return LXXXI for 810.00300s
- should return LXXXII for 820.00250s
- should return LXXXIII for 830.00300s
- should return LXXXIV for 840.00250s
- should return LXXXV for 850.00250s
- should return LXXXVI for 860.00250s
- should return LXXXVII for 870.00250s
- should return LXXXVIII for 880.00450s
- should return LXXXIX for 890.00250s
- should return XC for 900.00250s
- should return XCI for 910.00250s
- should return XCII for 920.00250s
- should return XCIII for 930.00300s
- should return XCIV for 940.00250s
- should return XCV for 950.00250s
- should return XCVI for 960.00300s
- should return XCVII for 970.00250s
- should return XCVIII for 980.00300s
- should return XCIX for 990.00400s
- should return C for 1000.00250s
- should return CC for 2000.00250s
- should return CCC for 3000.00300s
- should return CD for 4000.00250s
- should return D for 5000.00250s
- should return DC for 6000.00250s
- should return DCC for 7000.00300s
- should return DCCC for 8000.00250s
- should return CM for 9000.00250s
- should return MMXV for 20150.00250s
- should raise exception for 30010.00950s


|
Level: 1 Attack: 10-13 Armor: 16 plate Class: Palatine |
Level: 1 Attack: 10-17 Armor: 11 leather Class: Archer |
Level: 1 Attack: 5-8 Armor: 10 cloth Class: Sorcerer |
|
Level: 1 Attack: 8-9 Armor: 9 cloth Class: Necromancer |
Level: 1 Attack: 11-14 Armor: 13 leather Class: Ghoul |
Level: 1 Attack: 14-15 Armor: 14 plate Class: Death Knight |


Tuesdays With Tay Archive
About
Episodes
Episodes
Episodes 1-25
Episodes 26-50
Episodes 51-75
Episodes 76-100
Episodes 101-121


Synopsis
The Top Gun Naval Fighter Weapons School is where the best of the best
train to refine their elite flying skills. When hotshot fighter pilot Maverick
is sent to the school, his reckless attitude and cocky demeanor
put him at odds with the other pilots, especially the cool and collected Iceman.
But Maverick isn't only competing to be the top fighter pilot, he's
also fighting for the attention of his beautiful flight instructor, Charlotte
Blackwood.


prefetch
"The prefetch
keyword may be used with link
elements. This keyword creates an external resource
link. This keyword is body-ok.
The prefetch
keyword indicates that preemptively fetching and caching the specified resource is likely to be
beneficial, as it is highly likely that the user will require this resource for future
navigations. User agents must implement the processing model of the prefetch
keyword described in Resource Hints.
There is no default type for resources given by the prefetch
keyword.


PUNCT
: punctuation
The English PUNCT
covers PTB tags:
- ``
- ’’
- -LRB-
- -RRB-
- ,
- .
- :
- HYPH
- Some uses of NFP (for lines of hyphens, asterisks or tildes)
Treebank Statistics (UD_English)
There are 122 PUNCT
lemmas (1%), 132 PUNCT
types (1%) and 26762 PUNCT
tokens (12%).
Out of 17 observed tags, the rank of PUNCT
is: 9 in number of lemmas, 8 in number of types and 2 in number of tokens.
The 10 most frequent PUNCT
lemmas: ., ,, “, -, ), (, ?, :, !, …
The 10 most frequent PUNCT
types: ., ,, -, “, ), (, ?, :, !, …
The 10 most frequent ambiguous lemmas: ” (PUNCT 1512, NOUN 6), - (PUNCT 1478, SYM 105, X 11), ) (PUNCT 976, X 6), ( (PUNCT 939, X 6), : (PUNCT 687, SYM 1), … (PUNCT 284, SYM 4), ’ (PUNCT 222, PART 36, NOUN 7, AUX 1), / (PUNCT 210, SYM 28, X 1), > (PUNCT 54, SYM 3), «/em> (PUNCT 53, SYM 1)
The 10 most frequent ambiguous types: - (PUNCT 1460, SYM 105, X 11), ” (PUNCT 1450, NOUN 6), ) (PUNCT 976, X 6), ( (PUNCT 939, X 6), : (PUNCT 687, SYM 1), … (PUNCT 284, SYM 4), ’ (PUNCT 218, PART 33, NOUN 7), / (PUNCT 210, SYM 28, X 1), > (PUNCT 54, SYM 3), «/em> (PUNCT 53, SYM 1)
- -
- ”
- )
- (
- :
- …
- ’
- /
- >
- «/em>
Morphology
The form / lemma ratio of PUNCT
is 1.081967 (the average of all parts of speech is 1.181137).
The 1st highest number of forms (3) was observed with the lemma “””: ”, “, ”.
The 2nd highest number of forms (3) was observed with the lemma “’”: ’, ‘, ’.
The 3rd highest number of forms (3) was observed with the lemma “’‘”: ’’, ‘’, ’’.
PUNCT
does not occur with any features.
Relations
PUNCT
nodes are attached to their parents using 11 different relations: en-dep/punct (26581; 99% instances), en-dep/cc (110; 0% instances), en-dep/root (55; 0% instances), en-dep/case (6; 0% instances), en-dep/discourse (3; 0% instances), en-dep/dep (2; 0% instances), en-dep/conj (1; 0% instances), en-dep/det:predet (1; 0% instances), en-dep/fixed (1; 0% instances), en-dep/list (1; 0% instances), en-dep/nmod (1; 0% instances)
Parents of PUNCT
nodes belong to 18 different parts of speech: VERB (13636; 51% instances), NOUN (6228; 23% instances), ADJ (2576; 10% instances), PROPN (2321; 9% instances), NUM (625; 2% instances), ADV (345; 1% instances), X (302; 1% instances), PRON (214; 1% instances), SYM (161; 1% instances), INTJ (123; 0% instances), ROOT (55; 0% instances), DET (52; 0% instances), CCONJ (35; 0% instances), PART (35; 0% instances), AUX (27; 0% instances), PUNCT (14; 0% instances), ADP (10; 0% instances), SCONJ (3; 0% instances)
26713 (100%) PUNCT
nodes are leaves.
41 (0%) PUNCT
nodes have one child.
5 (0%) PUNCT
nodes have two children.
3 (0%) PUNCT
nodes have three or more children.
The highest child degree of a PUNCT
node is 5.
Children of PUNCT
nodes are attached using 16 different relations: en-dep/nummod (30; 48% instances), en-dep/punct (7; 11% instances), en-dep/cc (4; 6% instances), en-dep/dep (4; 6% instances), en-dep/conj (3; 5% instances), en-dep/goeswith (3; 5% instances), en-dep/advmod (2; 3% instances), en-dep/det (2; 3% instances), en-dep/_ (1; 2% instances), en-dep/acl (1; 2% instances), en-dep/advcl (1; 2% instances), en-dep/amod (1; 2% instances), en-dep/case (1; 2% instances), en-dep/compound (1; 2% instances), en-dep/mark (1; 2% instances), en-dep/orphan (1; 2% instances)
Children of PUNCT
nodes belong to 11 different parts of speech: X (32; 51% instances), PUNCT (9; 14% instances), NOUN (6; 10% instances), CCONJ (4; 6% instances), VERB (3; 5% instances), ADV (2; 3% instances), DET (2; 3% instances), PROPN (2; 3% instances), ADJ (1; 2% instances), ADP (1; 2% instances), SCONJ (1; 2% instances)
Treebank Statistics (UD_English-ESL)
There are 1 PUNCT
lemmas (6%), 1 PUNCT
types (6%) and 8624 PUNCT
tokens (10%).
Out of 17 observed tags, the rank of PUNCT
is: 13 in number of lemmas, 13 in number of types and 5 in number of tokens.

The 1st highest number of forms (1) was observed with the lemma “_”: _.
PUNCT
does not occur with any features.
Relations
PUNCT
nodes are attached to their parents using 1 different relations: en-dep/punct (8624; 100% instances)
Parents of PUNCT
nodes belong to 15 different parts of speech: VERB (5604; 65% instances), NOUN (1432; 17% instances), ADJ (1153; 13% instances), PROPN (220; 3% instances), ADV (74; 1% instances), NUM (51; 1% instances), PRON (41; 0% instances), SYM (10; 0% instances), X (10; 0% instances), DET (9; 0% instances), AUX (8; 0% instances), INTJ (7; 0% instances), ADP (2; 0% instances), CONJ (2; 0% instances), PART (1; 0% instances)
8623 (100%) PUNCT
nodes are leaves.
1 (0%) PUNCT
nodes have one child.
The highest child degree of a PUNCT
node is 1.
Children of PUNCT
nodes are attached using 1 different relations: en-dep/nummod (1; 100% instances)
Children of PUNCT
nodes belong to 1 different parts of speech: NUM (1; 100% instances)
Treebank Statistics (UD_English-LinES)
There are 1 PUNCT
lemmas (6%), 13 PUNCT
types (0%) and 8085 PUNCT
tokens (12%).
Out of 17 observed tags, the rank of PUNCT
is: 13 in number of lemmas, 14 in number of types and 2 in number of tokens.
The 10 most frequent PUNCT
lemmas: _
The 10 most frequent PUNCT
types: ,, ., –, “, ?, ;, (, ), :, …
The 10 most frequent ambiguous lemmas: _ (NOUN 12161, PUNCT 8085, VERB 8020, ADP 6788, DET 6429, PRON 6303, ADJ 4270, ADV 3700, AUX 3539, PROPN 2257, CCONJ 2081, PART 1703, SCONJ 1231, NUM 462, INTJ 122, X 41, SYM 5)
The 10 most frequent ambiguous types: ’ (PUNCT 48, PART 21)
- ’
Morphology
The form / lemma ratio of PUNCT
is 13.000000 (the average of all parts of speech is 527.705882).
The 1st highest number of forms (13) was observed with the lemma “_”: !, “, ‘, (, ), ,, ., .., …, :, ;, ?, –.
PUNCT
does not occur with any features.
Relations
PUNCT
nodes are attached to their parents using 1 different relations: en-dep/punct (8085; 100% instances)
Parents of PUNCT
nodes belong to 17 different parts of speech: VERB (5026; 62% instances), NOUN (1219; 15% instances), ADJ (532; 7% instances), AUX (324; 4% instances), ADV (279; 3% instances), PROPN (169; 2% instances), ADP (164; 2% instances), PRON (164; 2% instances), INTJ (72; 1% instances), NUM (38; 0% instances), X (36; 0% instances), CCONJ (30; 0% instances), PUNCT (12; 0% instances), SCONJ (10; 0% instances), DET (4; 0% instances), SYM (4; 0% instances), PART (2; 0% instances)
8049 (100%) PUNCT
nodes are leaves.
32 (0%) PUNCT
nodes have one child.
3 (0%) PUNCT
nodes have two children.
1 (0%) PUNCT
nodes have three or more children.
The highest child degree of a PUNCT
node is 3.
Children of PUNCT
nodes are attached using 16 different relations: en-dep/punct (12; 29% instances), en-dep/det (4; 10% instances), en-dep/nmod (4; 10% instances), en-dep/nsubj (4; 10% instances), en-dep/amod (3; 7% instances), en-dep/advmod (2; 5% instances), en-dep/compound (2; 5% instances), en-dep/discourse (2; 5% instances), en-dep/acl (1; 2% instances), en-dep/aux (1; 2% instances), en-dep/compound:prt (1; 2% instances), en-dep/conj (1; 2% instances), en-dep/mark (1; 2% instances), en-dep/obj (1; 2% instances), en-dep/vocative (1; 2% instances), en-dep/xcomp (1; 2% instances)
Children of PUNCT
nodes belong to 12 different parts of speech: PUNCT (12; 29% instances), NOUN (5; 12% instances), PRON (5; 12% instances), DET (4; 10% instances), PROPN (4; 10% instances), ADV (3; 7% instances), ADJ (2; 5% instances), INTJ (2; 5% instances), ADP (1; 2% instances), AUX (1; 2% instances), PART (1; 2% instances), VERB (1; 2% instances)
Treebank Statistics (UD_English-ParTUT)
There are 17 PUNCT
lemmas (0%), 19 PUNCT
types (0%) and 4503 PUNCT
tokens (12%).
Out of 17 observed tags, the rank of PUNCT
is: 12 in number of lemmas, 13 in number of types and 3 in number of tokens.
The 10 most frequent PUNCT
lemmas: ,, ., -, “, ), (, –, ;, /, :
The 10 most frequent PUNCT
types: ,, ., -, “, ), (, –, ;, /, :
The 10 most frequent ambiguous lemmas: - (PUNCT 289, X 6, NUM 1), – (PUNCT 96, X 1), ’ (PART 33, PUNCT 12, X 10, ADP 1)
The 10 most frequent ambiguous types: - (PUNCT 289, X 6), – (PUNCT 96, X 1), ’ (PART 33, PUNCT 12, X 10)
- -
- –
- ’
- PART 33: PRINCETON – How quickly emerging markets ’ fortunes have turned .
- PUNCT 12: Rowe was the first biographer to record the tradition , repeated by Johnson , that Shakespeare retired to Stratford ’ some years before his death ’ .
- X 10: China ‘s export - led growth miracle would not have started in the 1980 ’ s without the American consumer .
Morphology
The form / lemma ratio of PUNCT
is 1.117647 (the average of all parts of speech is 1.187751).
The 1st highest number of forms (3) was observed with the lemma “.”: ., …, …..
The 2nd highest number of forms (1) was observed with the lemma “!”: !.
The 3rd highest number of forms (1) was observed with the lemma “””: ”.
PUNCT
does not occur with any features.
Relations
PUNCT
nodes are attached to their parents using 1 different relations: en-dep/punct (4503; 100% instances)
Parents of PUNCT
nodes belong to 17 different parts of speech: VERB (1960; 44% instances), NOUN (1420; 32% instances), PROPN (329; 7% instances), ADJ (310; 7% instances), NUM (224; 5% instances), ADV (163; 4% instances), PRON (49; 1% instances), AUX (17; 0% instances), X (8; 0% instances), CCONJ (5; 0% instances), INTJ (5; 0% instances), DET (4; 0% instances), PUNCT (3; 0% instances), SCONJ (2; 0% instances), SYM (2; 0% instances), ADP (1; 0% instances), PART (1; 0% instances)
4493 (100%) PUNCT
nodes are leaves.
9 (0%) PUNCT
nodes have one child.
0 (0%) PUNCT
nodes have two children.
1 (0%) PUNCT
nodes have three or more children.
The highest child degree of a PUNCT
node is 3.
Children of PUNCT
nodes are attached using 6 different relations: en-dep/nummod (4; 33% instances), en-dep/punct (3; 25% instances), en-dep/amod (2; 17% instances), en-dep/conj (1; 8% instances), en-dep/nmod (1; 8% instances), en-dep/obj (1; 8% instances)
Children of PUNCT
nodes belong to 6 different parts of speech: NUM (4; 33% instances), PUNCT (3; 25% instances), ADJ (2; 17% instances), PRON (1; 8% instances), PROPN (1; 8% instances), VERB (1; 8% instances)
PUNCT in other languages: [am] [ar] [bg] [bxr] [ca] [ckb] [cop] [cs] [cu] [da] [de] [el] [en] [es] [et] [eu] [fa] [fi] [fo] [fr] [ga] [gl] [got] [grc] [he] [hi] [hr] [hu] [id] [it] [ja] [kk] [kmr] [ko] [la] [lv] [mr] [nl] [no] [pl] [pt] [ro] [ru] [sa] [sk] [sla] [sl] [so] [sr] [sv] [swl] [ta] [tr] [ug] [uk] [u] [urj] [ur] [vi] [yue] [zh]


This section provides an explanation of how transactions work on Geode caches.
All the regions in a Geode member cache can participate in a transaction. A Java application can operate on the cache using multiple transactions. A transaction is associated with only one thread, and a thread can operate on only one transaction at a time. Child threads do not inherit existing transactions.
Transaction View
A transaction is isolated from changes made concurrently to the cache. Each transaction has its own private view of the cache, including the entries it has read and the changes it has made. The first time the transaction touches an entry in the cache, either to read or write, it produces a snapshot of that entry’s state in the transaction’s view. The transaction maintains its current view of the entry, which reflects only the changes made within the transaction. The transaction remembers the entry’s original state and uses it at commit time to discover write conflicts.
Committing Transactions
When a commit succeeds, the changes recorded in the transaction view are merged into the cache. If the commit fails or the transaction is rolled back, all of its changes are dropped.
When a transaction is committed, the transaction management system uses a two-phase commit protocol:
- Reserves all the entries involved in the transaction from changes by any other transactional thread. For distributed regions, it reserves the entries in the entire distributed system. For partitioned regions, it reserves them on the data store, where the transaction is running.
- Checks the cache for conflicts on affected keys, to make sure all entries are still in the same state they were in when this transaction first accessed them.
- If any conflict is detected, the manager rolls back the transaction.
If no conflict is detected, the manager:
- Calls the
TransactionWriter
in the member where the transaction is running. This allows the system to write through transactional updates to an external data source. - Updates the local cache and distributes the updates to the other members holding the data. Cache listeners are called for these updates, in each cache where the changes are made, the same as for non-transactional operations.
- Calls the
TransactionListener
s in the member where the transaction is running.
- Calls the
Releases the transaction reservations on the entries.
The manager updates the local cache and distributes the updates to other members in a non-atomic way.
- If other threads read the keys the transaction is modifying, they may see some in their pre-transaction state and some in their post-transaction state.
- If other, non-transactional sources update the keys the transaction is modifying, the changes may intermingle with this transaction’s changes. The other sources can include distributions from remote members, loading activities, and other direct cache modification calls from the same member. When this happens, after your commit finishes, the cache state may not be what you expected.
If the transaction fails to complete any of the steps, a CommitConflictException is thrown to the calling application.
Once the members involved in the transaction have been asked to commit, the transaction completes even if one of the participating members were to leave the system during the commit. The transaction completes successfully so long as all remaining members are in agreement.
Each member participating in the transaction maintains a membership listener on the transaction coordinator. If the transaction coordinator goes away after issuing the final commit call, the transaction completes in the remaining members.


U.S. Services Sector Growth Accelerated in October | Breitbart
Growth in the U.S. services sector picked up in October, suggesting that the U.S. economy remains on a strong footing despite sluggishness in manufacturing and a global economic slowdown.
by John CarneyThe Institute for Supply Management said Tuesday that its non-manufacturing index rose to 54.7 percent in October, up from 52.6 percent in September. That beat economists estimate and even topped the range of estimates, according to Econoday.
Any reading above 50 signals growth.
The new orders component rose 1.9 percentage points to 55.6 percent. This was bolstered entirely by domestic demand as exports were flat. That is a sign of ongoing strength of the U.S. consumer.
Thirteen of the 18 industries that make up the ISM’s measure of the services sector expanded in October, including the politically sensitive agricultural sector and ecnomically-potent construction. Transportation expanded. The tells for consumer discretionary spending–arts and entertainment, hospitality and food services–were also up.
Mining contracted, continuing its bumpy ride this year as low oil prices have discouraged new production.


Ndhawu ya Sinyaire yi rhendzela hi swintshabyana. Tinyoka to tala ti tshama exihlahleni eka swintshabyana leswi. Nyoka leyikulu swinene vaaki a va yi vula Unyalego. Nyoka leyi a yi chavisa vanhu vo tala hikuva a yi mita hinkwato timbuti na tinyimpfu.
Sinyaire village is surrounded by
hills.
Many snakes live in the forest on
those hills.
The biggest snake was called
Unyalego by the villagers.
This snake scared many people.
It swallowed whole goats and
sheep.
Siku rin’wana, Apiyo, Ajoh na Atieno va yile exihlahleni ku ya kuva tihunyi. Kokwa wa vanhwana wa xisati u va tshinyile a ku, “Mi tivonela eka Unyalego nyoka leyikulu. Mi nga teki xin’wana exihlahleni handle ka tihunyi.” Ko va Ajoh ntsena loyi a nga yingisangiki kokwa wa yena wa xisati.
One day, sisters Apiyo, Ajoh and
Atieno were going to the forest to
fetch firewood.
The girls’ grandmother warned,
“Beware of Unyalego the big snake.
Do not take anything from the
forest except the wood.”
Only Ajoh did not pay attention to
her grandmother.
Vanhwanyana va rhwarile ntswamba, tibanana, mihlata na mati. Va tekile tintambhu to tsimba tihunyi na mabanga ya ku tsema tihunyi. Endzhaku ka sweswo, va sukile va ya exihlahleni.
The girls packed milk, bananas,
sweet potatoes and water.
They took ropes for tying firewood
and a sharp machete for chopping
the wood.
Then they left for the forest.
Endleleni, vanhwanyana va burile na ku hlekelela. Hi xihatla, Apiyo, lonkulu eka hinkwavo, u te, “Miyelani. Hi fika laha Unyalego a tshamaka kona.”
On the way, the sisters chatted
and laughed.
Suddenly, Apiyo, the eldest of
them, said, “Be quiet. We are
coming to where Unyalego lives.”
Atieno a huwelela lavan’wana, “Langutani, hi lawa meno ya nsuku ya Unyalego. A hi ma tekeni.” Apiyo u va tsundzuxile a ku, “Mi nga rivali xitsundzuxo xa kokwana wa xisati. A hi fanelangi ku teka xin’wana na xin’wana exihlahleni handle ka tihunyi.”
Atieno called to the others, “Look,
here are Unyalego’s golden teeth.
Let us take them.”
Apiyo reminded them, “Don’t forget
grandmother’s warning. We must
not take anything from the forest
except firewood.”
Ajo a ku, “A ndzi n’wi tshembi mina kokwana wa xisati. Ndzi ehleketa leswaku kahlekahle u vurile sweswo ku hi tshikisa leswi hi swi lavaka. U na mavondzo eka hina. Ndzi ta teka meno ya nsuku.” Vatati wa yena a va vilela. Ajoh a nga yingisangi.
U-Ajoh wathi, “Andiyikholelwa mna into ethethwa ngumakhulu. Ndicinga ukuba ubesitsho nje kuba engafuni ukuba sizithathele izinto esizithandayo. Unomona umakhulu. Ndiza kuwathatha mna la mazinyo egolide.” Oodadewabo bakhathazeka kakhulu ngale nto. “Ajoh, uze ungathi khange sikuxelele.” U-Ajoh akazange abahoye.
Ajoh said, “I don’t trust
grandmother. I think she said that
to stop us having what we want. I
want the golden teeth.”
Her sisters were worried. “Ajoh, we
warned you,” they said.
Ajoh did not care.
Hi nkarhi wolowo Unyalego yi tile ku ta languta meno ya yona.  Endzhaku ka sweswo, Unyalego yi twile vanhwanyana va bula na ku hlekelela. Yi tumberile ehansi ka ribye etlhelo ka gondzo laha vanhwanyana a va ta hundza hi kona.
At that moment Unyalego came
looking for his golden teeth. He was
furious when he could not find the
teeth.
Then Unyalego heard the girls
chatting and laughing. He hid under
a rock next to the road where the
girls would pass on their way back.
Vanhwanyana va rhwarile tihunyi ta vona hi tinhloko ta vona. Hi xihatla, va twile ku “Hzzzzzzzz!” Va chavile kutani va ringeta ku tumbela. A ku ri na Unyalego nomu wa yona wu ahlamile swinene, wu tiyimiserile ku luma.
The sisters were going home
carrying their firewood on their
heads.
Suddenly, they heard “Hzzzzzzzz!”
 The girls
were terrified.
Unyalego yi vutisile vanhwanyana yi ku, “Xana i mani loyi a nga teka meno ya mina ya nsuku?” A ku na loyi a nga hlamula. Nyoka yi tekile xiboho xo kambela vanhwana.  U ta ya ekaya na tihunyi ta yena. Kambe loyi a nga na nandzu u ta endla swihoxo. U ta va swakudya swa mina masiku manharhu lama landzelaka!”
Unyalego asked the girls, “Who
took my golden teeth?” No one
answered.
The snake decided to test the girls.
“Whoever is innocent, will be able
to sing without mistakes. She will
go home with her firewood.
But the guilty one will sing badly.
She will be my food for the next
three days!”
Apiyo u sungurile ku yimbelela hi rito ra kahle. Endzhaku ka sweswo Atieno a yimbelela risimu.
Apiyo started to sing with a clear
voice:
“Sio mimi, sio mimi aliye na meno,
Mwenye meno bado yuko nyuma.”
Then Atieno sang the song. She also
sang well.
Eku heteleleni, ku vile nkarhi wa Ajoh. A a chava. U yile emahlweni kutani a sungula ku yimbelela. Kambe ku yimbelela ka yena a ku twala ku chavisa na marito a ma nga tshamisekangi. Untalego yi bile huwa, “A wu koti ku yimbelela kahle ku fana na lavan’wana?” Nyoka a yi swi tiva leswaku Ajoh u tekile meno ya nsuku.
Lastly, it was Ajoh’s turn. She was
scared. She stepped forward and
started singing. But her singing
sounded terrible and the words
were wrong.
Unyalego shouted, “Can’t you sing
properly like the others?”
The snake knew that Ajoh took his
golden teeth.
Unyalego yi mitile Ajoh. Vatati wa yena va tsutsumile va tlhelela ekaya ku ya hlamusela mhaka leyi.
Bimbilili! U-Unyalego wamginya u-Ajoh. Oodadewabo babaleka bagoduka bayokuxela esi senzo sibi kangaka esenzekileyo.
Unyalego opened his huge jaws and
swallowed Ajoh.
Her sisters ran back to the village.
They told everyone the story of
what happened.
“I warned her, if only she had
listened,” the girls’ grandmother
said sadly.


Drag the marker to where you think Denver is on this map of Colorado. When you drop it, the answer will appear, and you'll see how your guess compares with everyone else who has played.


All
News
Images
Videos
Books
More
Settings
Tools
About 2,920,000,000 results (0.44 seconds)
Allen is Awesome
https://allenistotallyawesome.com
A page dedicated to how totally awesome Allen is, and how everyone agrees! And I'll tell you why...
Totally Awesome!
https://totallyawesomeallen.com
So amazing and awesome in every way!

Incredibly and Amazingly Awesome!
https://justtotallyamazinglyawesomeallen.com
More amazingly awesome things about amazingly awesome Allen!
Not that Awesome...
https://allenawesomereally.com
Just kidding, of course he's awesome! Totally awesome!
Most Amazing and Awesome ever!
https://allenawesomereallyeverever.com
Totally incredibly mind numbingly awesome!
Super Duper Awesome x Infinity!
https://awesomeallenxinfinityinfinity.com
An infinity of awesome!
Help
Send feedback
Privacy
Terms


AMAZING PEOPLE ARE MAKING AMAZING DESIGNS IN A FUN ENVIRONMENT
When you work with us ,you are part of a team of committed collaborators. All aspects of our software development process are intergrated,interactive
and agile.
Our approach unifies design,development and product management to create exceptional products.
We start each project by understanding your business goals ,the user's needs and the product requirments.
Then we help translate them into effective and elegant solutions.
Before we sign a contract or write a line of code our team will spend the necessary time needed to understand your product vision
The outcome of this scoping session is a proposal or high-level statement of work.
based on your requirments ,we can provide a complete offering or just the pieces you need.
Our design practice offers a full range of services
including brand strategy,interaction and visual design
and user experience testing.
Throughout your project,our designers create and
implement visual design and workflows,solicit users
feedback and work with you to make sure what gets built
is what is needed.
All engineers are fluent in the latest enterprise ,mobile
and webdevelopment technologies.
They collaborate with your team to write and improve
code on a daily basis,using proven practices such as
test-driven development and pair programming.
Planning and development is iterative.Because we are
constantly coding and testing,the products we build are
constantly always ready to go live.
This iterative process allows for changes as businesses
requirments evolve.
PORTFOLIO
black lives matter project
The mighty project
brown project
Jim query project
Have a good day project
grey project project
Burned Out project
Giraffe restaurant project
DELANI STUDIO
2019


NO-STATUS
The socket example demonstrates how to use the TCP and UDP socket API.
This API is normally only available to packaged apps with the requisite
socket permission, but can be enabled for debugging purposes using the
--allow-nacl-socket-api=<hostname>
command line
flag.
First set a server address in the form of 'hostname:port', then push the
"Connect" button to establish a connection.
"Send" button sends the message of the text area to the the remote host.
Any data received back will be output to the status log.
For example, try connecting to a TCP echo server that will reply with
whatever bytes you send, or connect to a web server and send a GET
request.
"Close" button closes the connection.
The "Listen" button can be used create a local TCP or UDP echo server
listenting on the port specified. Once started this server can be connected
to by entering localhost:<port>
above.


Open source infrastructure primarily exists in the digital space. The biggest hub of open source digital tools on the internet is GitHub. GitHub is essentially a platform that allows coders to share code and collaborate on projects easily. Furthermore, they are starting to build in a live-typing feature to allow real time collaboration on the same file, similar to what google drive allows for in documents. One of the key features of GitHub is that all the code is inherently open source (with paid options to privatize the projects). This allows for unprecedented collaboration, any person can download the source code of massively powerful digital tools and infrastructures, such as NodeJs. NodeJs has fundamentally transformed the way we interact with JavaScript and create new applications.
This open sourced digital infrastructure has allowed for near constant innovation. Because almost every computer programmer in the world uses GitHub to share and update code, everyone benefits from the progress of the entire coding community. Independent discoveries of the same idea developing in parallel has been replaced by previously distinct teams coming together to collaborate on the project together. Furthermore, as alluded to above, a strong sense of collaboration has developed amongst the computer science community and code meet ups are now commonplace.
Another benefit to open source infrastructure is the transparency of the code base. Most traditional projects only allow team members to have access to specific parts of the code. This often prevents a full understanding of the project and efficient collaboration. Full transparency allows for all users to feel more comfortable interacting with the code so they are not locked in to any software or giving their information to any person or organization they feel uncomfortable with.
Open source projects also tend to be more reliable than traditional IP projects as well. This is because open source projects have many more programmers contributing to the code. This constant tinkering and diverse perspectives produces more robust, cleaner code. This superior code is often optimized to be the best possible version of a product, not the most profitable and without deadlines. Proprietary infrastructure often locks users and developers into one infrastructure with little flexibility. Open source code has build in flexibility and modularity, allowing for programmers to “hack” together solutions from a series of different sources. [1]
To return to the earlier point about the culture around open source, creating and maintaining open source infrastructure is often compared to non-profit work. Part-time contributions are similar to offer volunteering hours for an organization where as full-time maintenance and creation is like working at a non-profit. [2]
Security infrastructure has traditionally been developed in secret. Developers refusing to share their builds, lest a malicious actor grabs hold of the “blueprints”. This paradigm of secret digital security infrastructure has been flipped on its head by open source development. By sharing the most advanced security protocols available between organizations, any hole in the software is discovered and fixed. Furthermore, after attacks, organizations and individuals are able to share security information about their builds. [3]
Sources - Click Item for Link
[1] 10 advantages of open source for the enterprise. Ben Bromhead. August 17, 2017.
[2] Open source infrastructure: the Q&A. Nadia Eghbal. January 19, 2016.
[3] Embracing open source security. Mike Arpaia. June 3, 2015.


--- layout: default section: homepage externals: simple-js: /examples/simple/simple.js simple-html: /examples/simple/simple.html streaming-js: /examples/streaming/streaming.js streaming-html: /examples/streaming/streaming.html streaming-css: /examples/streaming/streaming.css bubble-js: /examples/bubble/bubble.js bubble-html: /examples/bubble/bubble.html bubble-css: /examples/bubble/bubble.css stacked-js: /examples/stacked/stacked.js stacked-html: /examples/stacked/stacked.html stacked-css: /examples/stacked/stacked.css ---
Components for building interactive charts with D3(v4)
d3fc is a collection of modules that are designed to make it easier to build charts with D3(v4), extending its vocabulary from SVG paths, rectangles and groups, into series, annotation and chart. You can use the modules independently, or you can use them together as part of the default bundle.
With d3fc, building responsive charts that re-render as their size changes is straightforward. For simple charts, use the {{{ hyperlink 'chart-api.html' title='Cartesian chart' }}} component, or create more complex charting layouts with {{{ hyperlink 'element-api.html' title='d3fc-element' }}}.
D3(v4) introduced d3-path, which is an abstraction over SVG and Canvas, allowing path generators to write to both. d3fc embraces this pattern throughout our components, all of the {{{ hyperlink 'series-api.html' title='d3fc-series' }}} components support both Canvas and SVG rendering.
Creating D3 charts where each of the elements transitions correctly is a challenge. All of the d3fc components have been built with {{{ hyperlink 'transitions.html' title='transitions support' }}} included.
Most chart APIs are complex and expansive in order to provide flexibility. d3fc takes a fundamentally different approach, where the underlying power of the data-join is exposed via the {{{ hyperlink 'decorate-pattern.html' title='decorate pattern' }}}.
d3fc favours simple interfaces and composition. If the interface for a component does not fulfil your needs, just open it up, look at the code and make use of the lower-level components that it was built with.


PuDB Remote
Table of Contents
In the Beginning
This is a post on using PuDB via telnet.
Short Version
In case I forgot what to do and just want to read this to remember.
- In the screen where you are going to run telnet, run
tput cols
andtput lines
to find out the number of columns and lines that the screen is using. - In the code where you want the break, instead of the usual
import pudb; pudb.set_trace()
use:
from pudb.remote import set_trace
set_trace(term_size=(columns, lines))
When the code hits the breakpoint it will start up a telnet service and you can log into it from the other screen:
telnet <IP_ADDRESS> 6899
Okay, So Now Why Would You Do This?
I was trying to build one of my sites that uses nikola and this strange error came out saying that one of the shortcodes was getting the "site" argument multiple times. I had no idea what was going on and nikola doesn't pre-define the arguments to the shortcode-plugins (it parses the text and then passes the arguments along using the *args
**kwargs
convention) which makes it flexible, but figuring out a problem with the arguments is pretty tough, so I decided to turn to my old standby PuDB
, which I've been using for so many years now, and is my favorite of the python debuggers I've tried.
I did my usual thing and found the line in the nikola
code that was raising the error and inserted a breakpoint further up in the code.
if name == "lancelot":
import pudb
pudb.set_trace()
I figured the problem was with my shortcode, named lancelot
, and the conditional allowed me to skip all the other shortcodes being used. But then, when I ran the build (nikola build -v2
)… disaster.
For some reason it wouldn't use the entire screen, making it impossible (or at least really hard) to read some of the variables that I wanted to check - and even worse, when I tried to open up the ipython terminal in it I got an error message.
The error-message is one of those error-after-the-error messages that you sometimes run into. It was trying to notify me of an error by popping up some kind of dialog but then the dialog wouldn't open so it told me about the dialog error and didn't get around to telling me what the original error was. In any case, something was broken, so I had to resort to desperate measures - I went to read the documentation.
Surprisingly, there actually is some (there wasn't really much when I first started using it).
Dead Ends
The first couple of things I tried seemed promising, but they didn't work.
Another Screen
There wasn't anything about re-sizing the window, but it did mention that you can have the output come out in a different terminal from the one where you run the code, so I gave it a go. I made a different screen and got its file-path using the tty
command (/dev/pts/6
in this case). Then I set an environment variable to hold the file-path in the screen where I was running the code (set -x PUDB_TTY /dev/pts/6
). This caused PuDB
to pipe the output to the next screen - and it did work to send the first PuDB output to the other screen, and it did use the whole window, but then it quit instead of letting me use the debugger. Not quite what I wanted, so I unset the environment variable and moved on.
term_size
The documentation also showed how to use PuDB
as a remote debugger, and in the example they passed in the argument term_size
to set_trace
so I thought, since the functions have the same name, that the set_trace
I was using would take the same arguments. So I tried it.
import pudb
pudb.set_trace(term_size=(236, 61))
Using the values that I had gotten from tput using tput cols
and tput lines
. But that just raised an ArgumentError
. The functions have the same name, but not the same arguments.
Telnet
So then I decided to try their remote version. It doesn't really make sense to me that it would work better than the regular version, but I didn't see any other choice. So instead of the usual code to insert a breakpoint I used:
from pudb.remote import set_trace
set_trace(term_size=(236, 61))
When I ran the build it stopped and told me to telnet into the localhost address at port 6899.
So I changed into the other screen and ran telnet.
telnet <IP_ADDRESS> 6899
And what do you know.
This turns out to not be a complete fix. Hitting !
to get to the ipython
terminal froze PuDB
, but this was enough for me to inspect the variables and realize that I just needed to move one of the parameters in the definition of my shortcode method and it worked.
But It's Not Fixed?
Well, if this were a more intense debug I really would want the ipython~/~ptipython
terminal, but since this is the first time I've tried to run PuDB
under KUbuntu's
Konsole
instead of the GNOME
terminal I'm hoping that just switching back to the other terminal will be enough - I'll have to test that once I'm more motivated.


MBSRTOWCS
Section: Linux Programmer's Manual (3)
Updated: 2014-03-18
Index
Return to Main Contents
NAME
mbsrtowcs - convert a multibyte string to a wide-character string
SYNOPSIS
#include <wchar.h>
size_t mbsrtowcs(wchar_t *dest, const char **src,
size_t len, mbstate_t *ps);
DESCRIPTION
If
dest
is not NULL, the
mbsrtowcs()
function converts the
multibyte string
*src
to a wide-character string starting at
dest.
At most
len
wide characters are written to
dest.
The shift state
*ps
is updated.
The conversion is effectively performed by repeatedly
calling
mbrtowc(dest, *src, n, ps)
where
n
is some
positive number, as long as this call succeeds, and then incrementing
dest
by one and
*src
by the number of bytes consumed.
The conversion can stop for three reasons:
- 1.
-
An invalid multibyte sequence has been encountered.
In this case,
*src
is left pointing to the invalid multibyte sequence,
(size_t) -1
is returned,
and
errno
is set to
EILSEQ.
- 2.
-
len
non-L'\0' wide characters have been stored at
dest.
In this case,
*src
is left pointing to the next
multibyte sequence to be converted,
and the number of wide characters written to
dest
is returned.
- 3.
-
The multibyte string has been completely converted, including the
terminating null wide character ('\0'), which has the side
effect of bringing back
*ps
to the
initial state.
In this case,
*src
is set to NULL, and the number of wide
characters written to
dest,
excluding the terminating null wide character, is returned.
If
dest
is NULL,
len
is ignored,
and the conversion proceeds as above,
except that the converted wide characters are not written out to memory,
and that no length limit exists.
In both of the above cases,
if
ps
is NULL, a static anonymous
state known only to the
mbsrtowcs()
function is used instead.
The programmer must ensure that there is room for at least
len
wide
characters at
dest.
RETURN VALUE
The
mbsrtowcs()
function returns the number of wide characters that make
up the converted part of the wide-character string, not including the
terminating null wide character.
If an invalid multibyte sequence was
encountered,
(size_t) -1
is returned, and
errno
set to
EILSEQ.
CONFORMING TO
C99.
NOTES
The behavior of
mbsrtowcs()
depends on the
LC_CTYPE
category of the
current locale.
Passing NULL as
ps
is not multithread safe.
SEE ALSO
iconv(3),
mbrtowc(3),
mbsinit(3),
mbsnrtowcs(3),
mbstowcs(3)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- RETURN VALUE
-
- CONFORMING TO
-
- NOTES
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 02:55:03 GMT, September 18, 2014


Active: {{cases.active | number}}
Critical: {{cases.critical | number}}
New: {{cases.new}}
Recovered: {{cases.recovered | number}}
Total: {{cases.total | number}}
New: {{deaths.new}}
Total: {{deaths.total | number}}
Total: {{tests.total | number}}
Please select a country.


Careful! The field selected contains analyzed strings. Analyzed strings are highly unique and can use a lot of memory to visualize. Values such as foo-bar will be broken into foo and bar. See Mapping Types for more information on setting this field as keyword (not analyzed).
Tip: {{agg.params.start_times.name + '.keyword'}} may be a non analyzed version of this field.
Tip: {{agg.params.start_times.name + '.raw'}} may be a non analyzed version of this field.
No Compatible Fields: The "{{ vis.indexPattern.id }}" index pattern does not contain any of the following field types: date