Commit graph

785 commits

Author SHA1 Message Date
Vlad Shcherbina 9fe78b5cb3 Disallow implicit weakly-typed conversions to integers #108
In `int_fits_c_long!`,
use `PyLong_AsLong(PyNumber_Index(x))`
instead of `PyNumber_Index(x)`.

In `int_convert_u64_or_i64!`,
use `PyLong_As*LongLong(PyNumber_Index(x))`
instead of `PyLong_As*LongLong(if PyLong_Check(x) {x} else {PyNumber_Long(x)})`.

Along the way, fix memory leak caused by missing `Py_DECREF(num)`.


`PyNumber_Index(x)` is the best way to get an integer losslessly:
https://docs.python.org/3/reference/datamodel.html#object.__index__
https://docs.python.org/3.5/c-api/number.html#c.PyNumber_Index

`PyLong_AsLong(x)` has the problem that it attempts to call `x.__int__()`.
Strings don't implement this method, but floats do, so it silently converts
floats to integers.
https://docs.python.org/3.5/c-api/long.html#c.PyLong_AsLong

`PyNumber_Long(x)` is equivalent to `int(x)` call,
so not only does it truncate floats, but also attempts to parse strings.
https://docs.python.org/3.5/c-api/number.html#c.PyNumber_Long

`PyLong_Check(x)` is redundant because it happens inside `PyNumber_Index(x)`
anyway:
988fb28431/Objects/abstract.c (L1259)
2018-02-11 19:04:12 +03:00
Vlad Shcherbina f8e503f3b7 Drop tests for implicit float to int conversions #108
Neither Python nor Rust has implicit float to integer conversions
(they mask programming errors), so it would make sense for the
bindings library to disallow them as well.

Later there will be tests that such conversions result in TypeError.
2018-02-11 18:19:21 +03:00
Nikolay Kim b4f7273474
Update CHANGES.txt 2018-02-10 11:27:45 -08:00
Nikolay Kim ffb5880fa2
Merge pull request #111 from Vlad-Shcherbina/patch-2
Remove PyEval_ThreadsInitialized() assertion #110
2018-02-10 11:26:31 -08:00
Vlad Shcherbina 81fd4bd24e Remove PyEval_ThreadsInitialized() assertion #110
First, this function should not be called before `Py_Initialize()`.
It accesses the field `_PyRuntime.ceval.gil.locked` of the global
variable, which is zero initially, but uses -1 to indicate that
the GIL is not created or destroyed.
(8ff5356473/Python/ceval_gil.h (L98))

Second, this assertion can't be moved after `Py_InitializeEx(0)` call,
because in Python 3.7 they started calling `PyEval_InitThreads()`
from `Py_Initialize()`.
(2914bb32e2 (diff-baf5eab51059d96fb8837152dab0d1a4R689))
2018-02-10 21:36:59 +03:00
Nikolay Kim 8b7a57891b
Merge pull request #109 from Vlad-Shcherbina/patch-1
Remove too strict version requirement for Windows
2018-02-10 07:48:33 -08:00
Vlad-Shcherbina 4f3e5ba357
Remove too strict version requirement for Windows
The special rustc version requirement for Windows was introduced in
f6ed2bbae9 (diff-04c6e90faac2675aa89e2176d2eec7d8R23)

Required versions converged in
0c7293125c (diff-04c6e90faac2675aa89e2176d2eec7d8R19)

And since then it seems they were updated mechanically in sync.
2018-02-10 15:37:34 +03:00
Nikolay Kim 63a2066a39 can not use workspace for examples 2018-01-19 10:27:37 -08:00
Nikolay Kim 96ad2efddf do not use workspaces 2018-01-19 10:18:57 -08:00
Nikolay Kim c39a1d7e94 Add examples to workspace 2018-01-19 10:10:32 -08:00
Nikolay Kim 3681cf51e8 python2 compatibility 2018-01-19 10:08:13 -08:00
Nikolay Kim b738c1a04b clippy warnings 2018-01-19 10:02:36 -08:00
Nikolay Kim 324a6b2697 drop RefFromPyObject; allow mut refs #106 2018-01-19 09:04:42 -08:00
Nikolay Kim 35e91a5cd1 Merge branch 'master' of github.com:PyO3/pyo3 2018-01-17 08:10:01 -08:00
Nikolay Kim d6035bce15 Fix impl FromPyObject for Py<T> 2018-01-17 08:09:44 -08:00
Nikolay Kim 8f2a705cd6
Merge pull request #97 from guanqun/fix-description
display the required version and current version in error message
2017-12-27 08:25:06 -08:00
Nikolay Kim 8ee8562a7f
Merge pull request #101 from guanqun/typo-fix
typo fix
2017-12-27 08:24:43 -08:00
Guanqun Lu 81f31153aa doc fixes 2017-12-27 23:10:19 +08:00
Guanqun Lu cd17b41b88 add a rust-toolchain file in the repo to indicate the toolchain used 2017-12-27 22:36:13 +08:00
Guanqun Lu 4bc079f619 typo fix 2017-12-27 22:11:18 +08:00
Guanqun Lu 4b26edfa09 display the required version and current version in error message 2017-12-27 18:35:49 +08:00
Nikolay Kim 9a141fb921 changelog 2017-12-26 13:42:32 -08:00
Nikolay Kim 050397b723 mark method that work with raw pointer unsafe 2017-12-26 13:41:27 -08:00
Nikolay Kim 017c404d69 fix travis build 2017-12-18 19:47:23 -08:00
Nikolay Kim 1f6c73e91a add link to crate 2017-11-27 11:51:42 -08:00
Nikolay Kim 3cb57f5579 prepare release 2017-11-27 11:40:03 -08:00
Nikolay Kim 70b07f8112 update version 2017-11-27 11:27:09 -08:00
Nikolay Kim 653f081d65 enable coverage for master only 2017-11-27 11:19:22 -08:00
Nikolay Kim 6a31a4cbb7 kcov only for py3.6 2017-11-27 11:07:50 -08:00
Nikolay Kim a57ebc7928 fix travis 2017-11-27 11:06:53 -08:00
Nikolay Kim 258e84c4e2 enable coverage 2017-11-27 11:05:51 -08:00
Nikolay Kim 99d5994d95 enable coverage 2017-11-27 11:04:49 -08:00
Nikolay Kim d3832359a2 proper c_char usage #93 2017-11-27 10:59:45 -08:00
messense e7a7b3d5a0
Remove use of now unneeded 'AsciiExt' trait 2017-11-23 12:08:05 +08:00
Nikolay Kim e5bf656cbc revert pycls changes; fix word-cound-cls example 2017-11-18 07:20:03 -10:00
Nikolay Kim d02a950eb6 test word-count-cls 2017-11-18 07:09:39 -10:00
Nikolay Kim 9d56fd279a enable const_align_of future 2017-11-18 07:07:45 -10:00
Nikolay Kim b5ffefc50c use as_ref for PyRawObject in __new__ wrapper 2017-11-18 07:07:19 -10:00
dkao1978 eb9050ab90 Add documentation for compiling on MacOS (#89)
* Update README.md

* Update overview.md

* Update lib.rs

* Update README.md

* Add links
2017-10-22 11:17:35 +08:00
serpilliere 68937db201 Update README version (#83) 2017-10-06 09:54:51 -05:00
Nikolay Kim ff2780cb80 Rename LICENSE-APACHE to LICENSE 2017-10-04 08:56:57 -07:00
Nikolay Kim 086a28e230 Delete LICENSE-MIT 2017-10-04 08:56:25 -07:00
messense 25e2080a76
Bump pyo3 version to 0.2.2 2017-10-01 20:59:26 +08:00
messense 95d94c19b3
Rustup to 1.22.0-nightly 2017-09-30 2017-10-01 20:32:35 +08:00
Matthieu Bizien 8975ce5088 Update README.md to V0.2 (#82) 2017-09-27 05:10:56 -05:00
messense 826544d706
Bump pyo3 version to 0.2.1 2017-09-27 12:20:18 +08:00
messense fa69b1f99d
Use spin-rs from crates.io 2017-09-25 13:40:38 +08:00
messense e5780ed2b8
Add const_ptr_null_mut feature to a doctest 2017-09-19 20:09:46 +08:00
messense 703883687a
Add features to tests 2017-09-19 20:03:03 +08:00
messense 9da1247484
Fix build on rustc nightly-2017-09-16
Use forked version of spin-rs for now.

Closes #79
2017-09-19 19:51:25 +08:00