We are pleased to announce the release of Picat version 1.0.
Picat (http://picat-lang.org) is a new programming language that integrates logic programming, functional programming, dynamic programming with tabling, constraint programming, and scripting. Picat incorporates many language features for better productivity of software development, including pattern-matching rules, explicit non-determinism, explicit unification, functions, constraints, and tabling. It is not rare to find problems for which Picat requires an order of magnitude fewer lines of code than many other languages.
Since the first release in Februrary 2014, Picat has been growing steadily, and many users have had very positive experiences with the language: Hakan Kjellerstrand's Picat page (http://www.hakank.org/picat) has about 775 programs written by Hakan; the page http://picat-lang.org/projects.html has a collection of over one hundred programs for a variety of projects and competitions; as part of the VK Cup, the site http://codeforces.com featured Picat in a surprise round of a competition, and more than 500 teams competed.
Picat's tabled planner has been shown to be an efficient tool for modeling and solving planning problems. Roman Bartak, Agostino Dovier, and Neng-Fa Zhou have hand-coded several models in Picat for the IPC competition problems (http://picat-lang.org/ipc14). These declarative models exploit Picat's features by using structural state representations and common-sense domain knowledge. These Picat models significantly outperform PDDL encodings run by the best PDDL planners. Sergii Dymchenko has also demonstrated the promise of Picat's planner through several AI planning problems, including problems from the Google Code Jam competition (http://sdymchenko.com/blog/2015/01/31/ai-planning-picat).
One of the major additions made since version 0.1 is an optimizing SAT compiler, which translates high-level constraints into efficient CNF codes to be solved by a SAT solver. The SAT compiler is offered as a separate module, which has the same interface as the CP module. The SAT module is complementary to the CP module, and, for many problems, significantly outperforms the CP module. The SAT compiler has been tested by using hundreds of benchmarks and tens of thousands of instances that have been used in CSP and Minizinc competitions.
Another major addition in version 1.0 is an external language interface with C, through which Picat programs can call deterministic predicates that are written as functions in C. This interface can be used to link Picat with other systems, such as database, GUI programming, mobile computing, game programming, networking, and web programming libraries.
Since the release of version 0.1 about one year ago, hundreds of improvements have been incorporated into the design and the implementation. The updates log can be seen at: http://picat-lang.org/updates.html. Picat will continue to grow, and we look forward to your input and feedback. Send your questions, comments, and requests to: