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.


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.

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
Missing

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.
  • 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.


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
Client
Server
 NNTPRemoteSMTPSNMPSSLTELNETTLSXXMLRPCYP
Client
Server
Complete
Partial
Missing