pike.ida.liu.se
Home>About>Pike


pike modules
Pike is distributed accompanied by a large set of modules, some of which are described below. See the Pike manual for further information on available Pike modules.

Text Handling
Pike has a very competitive and efficient shared string handling built in, that makes Pike the language of choice in several text processing intensive projects. All Pike internals are wide string aware and handle unicode strings according to the latest Unicode standard, e.g. when changing between upper and lower cases. When interfacing with files and protocols Pike can decode and encode strings with the Charset module. It can convert between almost 500 different character sets, including iso-8859-1 to 15, iso-2022-jp, shiftjis, euc-jp, euc-kr, euc-cn, utf-7, utf-8, windows 1250 to 1258, BIG5 and GB2312. The Unicode module handles more uncommon Unicode operations like normalizing Unicode strings with any of the methods NFC, NFD, NFKC and NFKD.

Pike also contains several different parsers, of which several are streaming. These includes an SGML parser, a flexible HTML parser that can handle incorrect HTML code, an XML parser that can validate against a DTD, a general purpose LR paser, an RCS file parser, a C code parser and a Pike code parser.

GUI Toolkit Interface
PiGTK is a Pike interface for GTK+ 1.2, The GIMP Toolkit. GTK is an Open Source Free Software GUI Toolkit, primarily developed for use with the X Window System, but it is also possible to use GTK to develop user interfaces for Microsoft Windows. Pike also has support for GDK and GNOME. GDK is The GIMP Drawing Kit, an abstraction layer that "isolates GTK+ from the details of the windowing system". The GNOME support lets you further enhance the integration of your Pike progams into the windows manager. Click on one of the images below to see PiGTK in use.

Jukebox Client Screenshot Slashdot Reader Screenshot

Image Processing
The Image module lets you perform common image manipulation and processing operations from Pike programs. The supported operations include cutting and pasting, scaling, rotation, linear filtering of most kinds, rendering of text, etc etc. All headlines on this site are for instance created on-the-fly using that very technique.

In addition to the above, anti-aliasing can be used when performing any kind of drawing operation, producing smooth high-quality graphics.

Using the Image module, you can automate jobs that would otherwise have required tedious work in an interactive image processing program such as Adobe Photoshop.

The Image module handles many different formats; the table below shows which formats are supported for decoding (reading an image file into a Pike general-purpose image object) and encoding (turning an image object into an image file of that format):


AVSBMPDSIDWGEPSGIFHRZILBMJPEGPCXPNGPNMPVR
Decode
Encode
PSPSDRASSVGTGATIFFTIMWBMPXBMXCFXFACEXPMXWD
Decode
Encode

Complete
Partial support
Non-existent



Calendar
The second version of the Calendar module contains many advanced features, such as:
*Calendar TimeRange Objects; convenient objects that do any calendral computation, from the normal gregorian year and ISO second to Islamic calendar and Stardate.
*Complete Timezone database - including regional daylight savings and complete zone shift history. This architecture is what powers the timezone option on this site for presenting checkin times for you in your timezone in the cvs browser, for instance.
*Extensive Events database - when is the next Orthodox Assumption? Is tomorrow a holiday in Yugoslavia or a flag-day in Finland?
*Print functions and parse functions
*Multi-language-support. Print dates in Roman Latin, or Argentina's calendar with holidays in Spanish.
*Modularized and easy to expand with new calendars, event databases and languages.
All in all, this module brings new possibilites when it comes to creating calendar style applications, event databases and various kinds of time and/or date calculations.

Cryptographic Toolkit
The crypto toolkit is a set of objects implementing various cryptographic algorithms, as well as objects used to glue the other objects together. The toolkit includes the block ciphers AES (Rjindael), IDEA, DES (including triple DES) and CAST, the arcfour stream cipher, the hash functions MD2, MD4, MD5, DSA (DSS), HMAC and SHA, and the public key cryptography algorithm RSA. It also includes some randomness sources.

The toolkit can be used for most kinds of cryptographic applications, including encrypted network connections, secure digital signatures and encryption of files or other data.

3D Graphics Support
Pike has an interface to OpenGL, the most widely used and supported 2D and 3D graphics application programming interface. In addition to Pikes GL support Pike also supports GLU and GLUT. GLU is the OpenGL Utility Library, a set of functions to create texture mipmaps from a base image, map coordinates between screen and object space, and draw quadric surfaces and NURBS. GLUT is the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL programs.

Aido interface example Aido playing a movie Lain Screensaver

Database Interface
The SQL interface makes it possible to use common SQL databases from within your applications. Support for mSQL, MySQL and Postgres is included, as well as ODBC, Oracle and Sybase. Non SQL support is available for LDAP, gdbm and Mird.

Protocols
Pike comes with built-in support for the several common network protocols, both for the Internet and for local networks.

BittorrentDNSHTTPIMAPIRCIdentLDAPLDAPSLPDLysKOM
Server
Client
NNTPRemoteSMTPSNMPSSLTELNETTLSXXMLRPCYP
Server
Client

Complete
Partial support
Non-existent