Constraint Logic Programming (CLP) extends logic programming in two ways. Firstly it admits special predicates called constraints, which are not defined by clauses, but which are handled instead by specific constraint solvers built into the CLP system. This extension has been formalised as the CLP Scheme. Secondly CLP admits other forms of processing than backwards reasoning by unfolding, in particular constraint propagation. This extension has been formalised in terms of Information Systems. These two extensions are now widely applied in industry, in particular to large scale combinatorial optimisation problems. The success of CLP has inspired a great deal of ongoing research into algorithms (especially hybrid and incremental), languages and applications.