Installation¶
This command should install islpy
:
pip install islpy
You may need to run this with sudo. If you don’t already have pip, run this beforehand:
curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
python get-pip.py
For a more manual installation, download the source, unpack it, and say:
python setup.py install
You may also clone its git repository:
git clone --recursive http://git.tiker.net/trees/islpy.git
git clone --recursive git://github.com/inducer/islpy
Wiki and FAQ¶
A wiki page is also available, where install instructions and an FAQ will grow over time.
For a mailing list, please consider using the isl list until they tell us to get lost.
License¶
islpy is licensed to you under the MIT/X Consortium license:
Copyright (c) 2011 Andreas Klöckner and Contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Note
isl and imath, which islpy depends on, are also licensed under the MIT license.
GMP, which used to be a dependency of isl and thus islpy, is no longer required. (but building against it can optionally be requested)
Relation with isl’s C interface¶
Nearly all of the bindings to isl are auto-generated, using the following rules:
Follow PEP 8.
Expose the underlying object-oriented structure.
Remove the isl_ and ISL_ prefixes from data types, macros and function names, replace them with Python namespaces.
A method isl_printer_print_set would thus become
islpy.Printer.print_set()
.
See also General Remarks.
User-visible Changes¶
Version 2016.2¶
Note
This version is currently in development and can be obtained from islpy’s version control.
Update for isl 0.17
Version 2016.1.1¶
Do not turn on small-integer optimization by default (to avoid build trouble on old compilers)
Version 2016.1¶
Update for isl 0.16
Version 2014.2.1¶
islpy
now avoids using 2to3 for Python 3 compatibility.
Version 2014.2¶
A large number of previously unavailable functions are now exposed.
Sebastian Pop’s imath support has been merged into the version of isl that ships with
islpy
. This means that unless a user specifically requests a build against GMP,islpy
is (a) entirely self-contained and depends only on a C++ compiler and (b) is entirely MIT-licensed by default.
Version 2014.1¶
Many classes are now picklable.
isl’s handling of integer’s has changed, forcing islpy to make incompatible changes as well.
Now
islpy.Val
is used to represent all numbers going into and out ofislpy
.gmpy
is no longer a dependency ofislpy
. The following rules apply for this interface change:You can pass (up to
long int
-sized) integers to methods of isl objects without manual conversion toislpy.Val
. For larger numbers, you need to convert manually for now.All numbers returned from
islpy
will be of typeislpy.Val
. If they are integers, they can be convertedSince upstream made the decision to make
isl_XXX_do_something_val
not always semantically equivalent toisl_XXX_do_something
, the old functions were removed.One example of this is
isl_aff_get_constant
, which returned just the constant, andisl_aff_get_constant_val
, which returns the constant divided by theislpy.Aff
’s denominator as a rational value.
Version 2011.3¶
Add
islpy.Set.project_out_except()
and friends.Add
islpy.Set.remove_divs_of_dim_type
and friends.islpy.Dim
was renamed toislpy.Space
in isl.islpy.Div
was removed and replaced byislpy.Aff
wherever it was used previously.islpy.BasicSet.as_set` and ``islpy.BasicMap.as_map
were removed.Automatic Casts were added.
Support for more Python
set
-like behavior was added. In particular, the operators |, &’, ‘-’, `<, <=, >, >=, ==, != work as expected.Support direct construction from string for objects that have a read_from_str method.
The constant in a
islpy.Constraint
is now set as the ‘1’ key in a coefficient dictionary inislpy.Constraint.eq_from_names()
,islpy.Constraint.ineq_from_names()
, andislpy.Constraint.set_coefficients_by_name()
.
Version 2011.2¶
Switch to copy-by-default semantics.
A few changes in Python-side functionality.
Automatic type promotion in ‘self’ argument.
Version 2011.1¶
Initial release.