This package provides a higher-level interface over threads, in which an
Async a is a concurrent thread that will eventually deliver a value of
type a. The package provides ways to create Async computations, wait for
their results, and cancel them.
Using Async is safer than using threads in two ways:
- When waiting for a thread to return a result, if the thread dies with
an exception then the caller must either re-throw the exception (wait)
or handle it (waitCatch); the exception cannot be ignored.
- The API makes it possible to build a tree of threads that are
automatically killed when their parent dies (see withAsync).
Webby is a fantastic little website management system.
It would be called a content management system if it
were a bigger kid. But, it's just a runt with a
special knack for transforming text.
Webby works by combining the contents of a page with
a layout to produce HTML. The layout contains
everything common to all the pages HTML headers,
navigation menu, footer, etc. and the page
contains just the information for that page. You
can use your favorite markup language to write
your pages; Webby supports quite a few.
XML EZ_Out is a small set of packages intended to aid the creation of
XML-formatted output from within Ada programs. It basically wraps the
tags and data provided to it with XML syntax and writes them to a
user-supplied medium.
This medium can be any sort of writable entity, such as a file, a
memory buffer, or even a communications link, such as a socket. The
only functionality required of the medium is that it supply a
meaningful "Put" (for writing a string) and "New_Line" procedure.
Why3 is a platform for deductive program verification. It provides a rich
language for specification and programming, called WhyML, and relies on
external theorem provers, both automated and interactive, to discharge
verification conditions. Why3 comes with a standard library of logical
theories (integer and real arithmetic, Boolean operations, sets and maps,
etc.) and basic programming data structures (arrays, queues, hash tables,
etc.). A user can write WhyML programs directly and get correct-by-
construction OCaml programs through an automated extraction mechanism.
WhyML is also used as an intermediate language for the verification of C,
Java, or Ada programs.
Why3 is a complete reimplementation of the former Why platform. Among the
new features are: numerous extensions to the input language, a new
architecture for calling external provers, and a well-designed API,
allowing to use Why3 as a software library. An important emphasis is put
on modularity and genericity, giving the end user a possibility to easily
reuse Why3 formalizations or to add support for a new external prover if
wanted.
The Digest::TransformPath module implements the TransformPath concept.
A TransformPath is a complex higher-order key that is designed for use
with chains of functions that sequentially transform a piece of data.
The concept starts with a sizable chunk of data, for example an image,
for which we can determine a unique identifier, and for which we can
cheaply determine if and when the source material has changed. A series
of resource-intensive transforms might be applied to this original data
to produce another piece of data. In the image example, we might auto-level,
crop, scale, rotate, colour-balance and then thumbnail the image. This
transformed data would be put into a cache. If at some future point
we wish to obtain the same image, but would preferably like to use the
cached version, we would have to take the original image, reapply the
transforms, and then compare to the result the first time around.
Further documentation is found within the module.
Time::Format provides a very easy way to format dates and times. The
formatting functions are tied to hash variables, so they can be used
inside strings as well as in ordinary expressions. The formatting
codes used are meant to be easy to remember, use, and read. They
follow a simple, consistent pattern. If I've done my job right, once
you learn the codes, you should never have to refer to the
documentation again.
A quick-reference page is included, just in case. ;-)
Time::Format can also format DateTime objects, and strings created
with Date::Manip.
Also provided is a tied-hash interface to POSIX::strftime and
Date::Manip::UnixDate.
If the I18N::Langinfo module is available, Time::Format provides
weekday and month names in a language appropriate for your locale.
A companion module, Time::Format_XS, is also available; if it is
installed, Time::Format will detect and use it, which will result in a
significant speed improvement.
Mozilla::PublicSuffix provides a single function that returns the public suffix
of a domain name by referencing a parsed copy of Mozilla's Public Suffix List.
From the official website at http://publicsuffix.org:
A "public suffix" is one under which Internet users can directly register names.
Some examples of public suffixes are .com, .co.uk and pvt.k12.wy.us. The Public
Suffix List is a list of all known public suffixes.
A copy of the official list is bundled with the distribution. As the official
list continues to be updated, the bundled copy will inevitably fall out of date.
Therefore, if the bundled copy of found to be over thirty days old, this
distribution's installer provides the option to check for a new version of the
list and download/use it if one is found.
bluemoon - Blue Moon card solitaire
This 52-card solitaire starts with the entire deck shuffled and
dealt out in four rows. The aces are then moved to the left end of
the layout, making 4 initial free spaces. You may move to a space
only the card that matches the left neighbor in suit, and is one
greater in rank. Kings are high, so no cards may be placed to their
right (they create dead spaces).
When no moves can be made, cards still out of sequence are reshuffled
and dealt face up after the ends of the partial sequences, leaving
a card space after each sequence, so that each row looks like a
partial sequence followed by a space, followed by enough cards to
make a row of 14. A moment's reflection will show that this game
cannot take more than 13 deals. A good score is 1-3 deals, 4-7 is
average, 8 or more is poor.
The Quantum::Superpositions module adds two new operators to Perl: any and
all.
Each of these operators takes a list of values (states) and superimposes
them into a single scalar value (a superposition), which can then be
stored in a standard scalar variable.
The any and all operators produce two distinct kinds of superposition. The
any operator produces a disjunctive superposition, which may (notionally)
be in any one of its states at any time, according to the needs of the
algorithm that uses it.
In contrast, the all operator creates a conjunctive superposition, which
is always in every one of its states simultaneously.
Superpositions are scalar values and hence can participate in arithmetic
and logical operations just like any other type of scalar. However, when
an operation is applied to a superposition, it is applied (notionally) in
parallel to each of the states in that superposition.
Paraller::Pvm is a perl interface to the Parallel Virtual Machine (PVM)
Message Passing System.
The PVM message passing system enables a programmer to configure a group
of (possibly heterogenous) computers connected by a network into a
parallel virtual machine.
Using PVM, applications can be developed which spawns parallel processes
onto nodes in the virtual machine to perform specific tasks. These
parallel tasks can also periodically exchange information using a set of
message passing functions developed for the system.
PVM applications have mostly been developed in the scientific and
engineering fields. However applications for real-time and
client/server systems can also be developed. PVM simply provides a
convenient way for managing parallel tasks and communications without
need for rexec or socket level programming.