Python (64-bit) 歷史版本列表
Python 64 位是一種動態的面向對象編程語言,可用於多種軟件開發。它提供了與其他語言和工具集成的強大支持,附帶大量的標準庫,並且可以在幾天內學到。許多 Python 程序員報告大幅提高生產力,並認為語言鼓勵開發更高質量,更易維護的代碼。下載用於 PC 的 Python 離線安裝程序設置 64 位 Python 在 Windows,Linux / Unix,Mac OS X,OS / 2,Am... Python (64-bit) 軟體介紹更新時間:2018-02-21
更新細節:
What's new in this version:
MOBILedit! 9.3.0.23657
New:
- Improved file and media transfer on Android
- Improved check for new version update download
- iOS 11.1 support
- Update installation on next application start
- Support for Blackberry OS 10 devices over Wi-Fi
New phones:
- Asus Zenpad 10 Z301ML
- Asus Zenpad C 7.0 Z170C
- BlackBerry KEYone
- BlackBerry Q10
- DOOGEE X30
- Huawei MediaPad T3
- LG G6
- Samsung Galaxy Note 8
- Sony Xperia XZ Premium
- Xiaomi Mi A1
- Xiaomi Mi Pad
MOBILedit! 9.2.0.22984
- Change log not available for this version
MOBILedit! 9.2.0.22908
- Change log not available for this version
MOBILedit! 9.1.0.22420
- Change log not available for this version
MOBILedit! 9.0.1.21994
- Change log not available for this version
MOBILedit! 9.0.0.21825
- Change log not available for this version
MOBILedit! 9.0.0.21797
- Change log not available for this version
MOBILedit! 8.7.1.21224
- Change log not available for this version
MOBILedit! 8.7.0.20993
- OS 10 support
- OS 10 backup support
- Android 7 support
- Open and save Phonecopier (android/ios app) cloud backup from Google Drive, Dropbox, OneDrive
- new Message UI design
- new Phonebook UI design
- better support for media on Android and iOS devices
- new search and replace function in phonebook
- reply to message autofills recipient
- contact sorting by last modification date (if supported by device)
- Fixed: incorrect file names when backing up media
- Fixed: organizer missing in backup for some devices
- Fixed: application size and datasize swapped
- Fixed: delete all files/large file selection not working
- Fixed: birthdates with hidden year (facebook contacts) have year 1602
MOBILedit! 8.6.0.20354
- Many new Android phones supported
- Support for Apple iPhone SE and iPad Pro
- Now installs popular Phone Copier App instead of simple Connector to Android phones
- You can purchase a license for your phone simply as inapp purchase in the Phone Copier app
- Finetuned design for high-resolution displays such as 4K and Surface Pro 4
- Contacts Optimizer works also for MS Outlook
- Improved support for direct connection to Google Contacts
- Improved handling of offline media - you have access to thumbnails even if the phone is disconnected
- Fixed: You can reply to messages in conversation view
- Fixed: Change password for iTunes backup works well
- Fixed: Now correctly displays information about Trial mode
- Fixed: Copy and Move to Archive updates content automatically
更新時間:2017-12-19
更新細節:
What's new in this version:
Core and Builtins
- co_flags.CO_NOFREE is now always set correctly by the code object constructor based on freevars and cellvars, rather than needing to be set correctly by the caller. This ensures it will be cleared automatically when additional cell references are injected into a modified code object and function.
- Fixed several issues in printing tracebacks (PyTraceBack_Print()):
- a) Setting sys.tracebacklimit to 0 or less now suppresses printing tracebacks
- b) Setting sys.tracebacklimit to None now causes using the default limit
- c) Setting sys.tracebacklimit to an integer larger than LONG_MAX now means using the limit LONG_MAX rather than the default limit
- d) Fixed integer overflows in the case of more than 2**31 traceback items on Windows
- e) Fixed output errors handling
- Fix the interactive interpreter looping endlessly when no memory
- Bytearray methods partition() and rpartition() now accept only bytes-like objects as separator, as documented. In particular they now raise TypeError rather of returning a bogus result when an integer is passed as a separator.
- Fix a segmentation fault caused by a combination of the async soft keyword and continuation lines.
- BytesWarning no longer emitted when the fromlist argument of __import__() or the __all__ attribute of the module contain bytes instances.
- Fixed OverflowError in the ‘unicode-escape’ codec and in codecs.escape_decode() when decode an escaped non-ascii byte.
- Print the full context/cause chain of exceptions on interpreter exit, even if an exception in the chain is unhashable or compares equal to later ones.
- Fix timeout rounding in the select module to round correctly negative timeouts between -1.0 and 0.0. The functions now block waiting for events as expected. Previously, the call was incorrectly non-blocking.
- Restored blocking “from package import module” by setting sys.modules[“package.module”] to None.
- Fixed a bug in debug memory allocator. There was a write to freed memory after shrinking a memory block.
- Fixed a ValueError when convert a string with large number of underscores to integer with binary base.
- Fixed an assertion failure in Python parser in case of a bad unicodedata.normalize().
- Raise a TypeError with a helpful error message when class creation fails due to a metaclass with a bad __prepare__() method.
- Fix an assertion failure in _warnings.warn() in case of a bad __name__ global.
- Fix an assertion failure in json, in case _json.make_encoder() received a bad encoder() argument.
- Fix assertion failures in case of failing to import from a module with a bad __name__ attribute, and in case of failing to access an attribute of such a module.
- Fix an assertion failure in ctypes class definition, in case the class has an attribute whose name is specified in _anonymous_ but not in _fields_.
- Fix an assertion failure in _random.Random.seed() in case the argument has a bad __abs__() method.
- Fix an assertion failure in imp.create_dynamic(), when spec.name is not a string.
- Fix a crash in the __setstate__() method of ctypes._CData, in case of a bad __dict__.
- Fix crashes in true division and multiplication of a timedelta object by a float with a bad as_integer_ratio() method.
- Fix an assertion failure in warnings.warn_explicit, when the return value of the received loader’s get_source() has a bad splitlines() method.
- PyErr_PrintEx() clears now the ignored exception that may be raised by _PySys_SetObjectId(), for example when no memory.
Library:
- Two minor fixes for typing module: allow shallow copying instances of generic classes, improve interaction of __init_subclass__ with generics
- The header folding algorithm for the new email policies has been rewritten.
- io.FileIO.readall() and io.FileIO.read() now release the GIL when getting the file size. Fixed hang of all threads with inaccessible NFS server
- Make msilib.SummaryInformation.GetProperty() return None when the value of property is VT_EMPTY
- Fix wrong usage of collections.namedtuple() in the RobotFileParser.parse() method
- msilib.OpenDatabase() now raises a better exception message when it couldn’t open or create an MSI file
- codecs.StreamReader.read(n) now returns not more than n characters/bytes for non-negative n. This makes it compatible with read() methods of other file-like objects.
- Fixed issues with binary plists: Fixed saving bytearrays; Identical objects will be saved only once; Equal references will be load as identical objects; Added support for saving and loading recursive data structures.
- Make asyncio.IncompleteReadError and LimitOverrunError pickleable
- Fixed the looping of asyncio in the case of reconnection the socket during waiting async read/write from/to the socket
- Restored support of loading marshal files with the TYPE_INT64 code. These files can be produced in Python 2.7.
- Reduce performance overhead of asyncio debug mode
- Fixed determining the MAC address in the uuid module: Using ifconfig on NetBSD and OpenBSD; Using arp on Linux, FreeBSD, NetBSD and OpenBSD.
- Fix potential missed signal in signal.signal()
- Fix Blake2 params leaf_size and node_offset on big endian platforms.
- Fixed compilation of the socket module on NetBSD 8. Fixed assertion failure or reading arbitrary data when parse a AF_BLUETOOTH address on NetBSD and DragonFly BSD.
- Fixed stack corruption in curses.box() and curses.ungetmouse() when the size of types chtype or mmask_t is less than the size of C long. curses.box() now accepts characters as arguments.
- plistlib now catches more errors when read binary plists and raises InvalidFileException instead of unexpected exceptions.
- Fix the method for checking pad state of curses WINDOW.
- Fixed the layout of the kqueue_event structure on OpenBSD and NetBSD. Fixed the comparison of the kqueue_event objects.
- Fixed building the curses module on NetBSD.
- Instances of pickle.Pickler subclass with the persistent_id() method and pickle.Unpickler subclass with the persistent_load() method no longer create reference cycles.
- Fix multiprocessing.Process when stdout and/or stderr is closed or None.
- If nested log adapters are used, the inner process() methods are no longer omitted.
- The manager property on LoggerAdapter objects is now properly settable.
- Fix timeout rounding in time.sleep(), threading.Lock.acquire() and socket.socket.settimeout() to round correctly negative timeouts between -1.0 and 0.0. The functions now block waiting for events as expected. Previously, the call was incorrectly non-blocking.
- traceback: Fix a TypeError that occurred during printing of exception tracebacks when either the current exception or an exception in its context/cause chain is unhashable.
- Fixed buffer overflow in select.kqueue.control().
- Prevent a crash when calling the __init__() method of a sqlite3.Cursor object more than once.
- idpattern in string.Template matched some non-ASCII characters. Now it uses -i regular expression local flag to avoid non- ASCII characters.
- Prevent a crash in sqlite3.Cursor.close() in case the Cursor object is uninitialized.
- Fix possible crash in timedelta constructor called with custom integers.
- On Windows, faulthandler.enable() now ignores MSC and COM exceptions.
- Prevent crashes in _elementtree due to unsafe cleanup of Element.text and Element.tail.
- an empty asyncio.Queue now doesn’t leak memory when queue.get pollers timeout
- Fix method set_protocol() of class _SSLProtocolTransport in asyncio module. This method was previously modifying a wrong reference to the protocol.
- Fixed memory leaks in Tkinter’s methods splitlist() and split() when pass a string larger than 2 GiB.
- Fixed typo in the name of Tkinter’s method adderrorinfo()
- Fix the string representation of a netrc object
- Added a workaround for getkey() in curses for ncurses 5.7 and earlier
- Avoid venv activate failures with undefined variables
- inspect.unwrap() will now only try to unwrap an object sys.getrecursionlimit() times, to protect against objects which create a new object on every attribute access
- Stop crashes when concurrently iterate over itertools.groupby() iterators
- threading.current_thread() should not return a dummy thread at shutdown
- python -m ensurepip now exits with non-zero exit code if pip bootstrapping has failed
- random.seed() now works with bytes in version=1
- Fix poll.poll([timeout]) in the select module for arbitrary negative timeouts on all OSes where it can only be a non- negative integer or -1
- multiprocessing’s semaphore tracker should be launched again if crashed
- Make multiprocessing’s forkserver process immune to Ctrl-C and other user interruptions. If it crashes, restart it when necessary
Documentation:
- Added asyncio.BaseEventLoop.connect_accepted_socket versionaddded marker
- Fix incorrect usage of get_history_length in readline documentation example code
- The operator functions without double underscores are preferred for clarity. The one with underscores are only kept for back-compatibility.
Tests:
- Skip test_httpservers test_undecodable_file on macOS: fails on APFS
- Skip test_socket.test_sha256() on Linux kernel older than 4.5. The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged into the kernel 4.5.
- Fix test_tools.test_unparse: DirectoryTestCase now stores the names sample to always test the same files. It prevents false alarms when hunting reference leaks.
- Add the set_nomemory(start, stop) and remove_mem_hooks() functions to the _testcapi module
Build:
- detect_modules() in setup.py now also searches the sysroot paths when cross-compiling.
- Fixes Windows SDK version detection when building for Windows.
- Fixes quotes in PCbuild/clean.bat
- Abort the build when building out of a not clean source tree.
- Fixed Argument Clinic sometimes causing compilation errors when there was more than one function and/or method in a .c file with the same name.
- Update Windows builds to use SQLite 3.21.0.
- Update OS X installer to use SQLite 3.21.0.
- Prevent double substitution of prefix in python-config.sh.
- Avoid wholesale rebuild after make regen-all if nothing changed.
Windows:
- Return None when View.Fetch() returns ERROR_NO_MORE_ITEMS instead of raising MSIError.
- Fixes Modify button in Apps and Features dialog.
macOS:
- Update macOS installer to use OpenSSL 1.0.2m
IDLE:
- Improve tk event exception tracebacks in IDLE. When tk event handling is driven by IDLE’s run loop, a confusing and distracting queue.EMPTY traceback context is no longer added to tk event exception tracebacks. The traceback is now the same as when event handling is driven by user code. Patch based on a suggestion by Serhiy Storchaka.
- Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet in configdialog was replaced by ttk.Notebook.
- IDLE: Fix old and new bugs in pathbrowser; improve tests.
- IDLE – Restrict shell prompt manipulaton to the shell. Editor and output windows only see an empty last prompt line. This simplifies the code and fixes a minor bug when newline is inserted. Sys.ps1, if present, is read on Shell start-up, but is not set or changed.
- The font sample in the IDLE configuration dialog is now editable. Changes persist while IDLE remains open.
- Test_code_module now passes if run after test_idle, which sets ps1. The code module uses sys.ps1 if present or sets it to ‘>>> ‘ if not. Test_code_module now properly tests both behaviors. Ditto for ps2.
- Fix a TypeError that caused a shell restart when printing a traceback that includes an exception that is unhashable.
- Use non-Latin characters in the IDLE’s Font settings sample. Even if one selects a font that defines a limited subset of the unicode Basic Multilingual Plane, tcl/tk will use other fonts that define a character. The expanded example give users of non-Latin characters a better idea of what they might see in IDLE’s shell and editors. To make room for the expanded sample, frames on the Font tab are re-arranged. The Font/Tabs help explains a bit about the additions.
- Simplify the API of IDLE’s Module Browser. Passing a widget instead of an flist with a root widget opens the option of creating a browser frame that is only part of a window. Passing a full file name instead of pieces assumed to come from a .py file opens the possibility of browsing python files that do not end in .py.
- IDLE - Make _htest, _utest parameters keyword only.
- Remove test order dependence in idle_test.test_browser.
- Rename IDLE’s module browser from Class Browser to Module Browser. The original module-level class and method browser became a module browser, with the addition of module-level functions, years ago. Nested classes and functions were added yesterday. For back- compatibility, the virtual event <<open-class-browser>>, which appears on the Keys tab of the Settings dialog, is not changed.
- Default fonts now are scaled on HiDPI displays.
- IDLE module browser now shows nested classes and functions. Original patches for code and tests by Guilherme Polo and Cheryl Sabella, respectively.
Tools/Demos:
- Make redemo work with Python 3.6 and newer versions.
- In Python 3.6, flags like re.DOTALL became members of an enum.IntFlag so usages like getattr(re, 'DOTALL') are invalid.
- Also, remove the LOCALE option since it doesn’t work with string patterns in Python 3.
C API:
- Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in a non-Python thread before PyEval_InitThreads(), only call PyEval_InitThreads() after calling PyThreadState_New() to fix a crash.
- Fix memory corruption due to allocator mix in getpath.c between Py_GetPath() and Py_SetPath()
- The PyExc_RecursionErrorInst singleton is removed and PyErr_NormalizeException() does not use it anymore. This singleton is persistent and its members being never cleared may cause a segfault during finalization of the interpreter.
更新時間:2017-10-16
更新細節:
What's new in this version:
Library:
- Re-allow arbitrary iterables in concurrent.futures.as_completed()
Build:
- Fix typos in Windows uploadrelease.bat script. Fix Windows Doc build issues in Doc/make.bat
- Fix building the PDF documentation with newer versions of Sphinx-
更新時間:2017-07-22
更新細節:
更新時間:2017-03-23
更新細節:
What's new in this version:
Major new features :
- Preserving Keyword Argument Order
- Simpler customization of class creation
- Local Time Disambiguation
- Literal String Formatting
- Adding A Secrets Module To The Standard Library
- Add a private version to dict
- Underscores in Numeric Literals
- Adding a file system path protocol
- Preserving Class Attribute Definition Order
- Adding a frame evaluation API to CPython
- Make os.urandom() blocking on Linux (during system startup)
- Asynchronous Generators (provisional)
- Syntax for Variable Annotations (provisional)
- Change Windows console encoding to UTF-8
- Change Windows filesystem encoding to UTF-8
- Asynchronous Comprehensions
更新時間:2016-12-23
更新細節:
What's new in this version:
New syntax features:
- PEP 498, formatted string literals
- PEP 515, underscores in numeric literals
- PEP 526, syntax for variable annotations
- PEP 525, asynchronous generators
- PEP 530: asynchronous comprehensions
New library modules:
- secrets: PEP 506 – Adding A Secrets Module To The Standard Library
CPython implementation improvements:
- The dict type has been reimplemented to use a more compact representation similar to the PyPy dict implementation. This resulted in dictionaries using 20% to 25% less memory when compared to Python 3.5
- Customization of class creation has been simplified with the new protocol
- The class attribute definition order is now preserved
- The order of elements in **kwargs now corresponds to the order in which keyword arguments were passed to the function
- DTrace and SystemTap probing support has been added
- The new PYTHONMALLOC environment variable can now be used to debug the interpreter memory allocation and access errors
Significant improvements in the standard library:
- The asyncio module has received new features, significant usability and performance improvements, and a fair amount of bug fixes. Starting with Python 3.6 the asyncio module is no longer provisional and its API is considered stable
- A new file system path protocol has been implemented to support path-like objects. All standard library functions operating on paths have been updated to work with the new protocol
- The datetime module has gained support for Local Time Disambiguation
- The typing module received a number of improvements and is no longer provisional
- The tracemalloc module has been significantly reworked and is now used to provide better output for ResourceWarning as well as provide better diagnostics for memory allocation errors. See the PYTHONMALLOC section for more information
Security improvements:
- The new secrets module has been added to simplify the generation of cryptographically strong pseudo-random numbers suitable for managing secrets such as account authentication, tokens, and similar
- On Linux, os.urandom() now blocks until the system urandom entropy pool is initialized to increase the security. See the PEP 524 for the rationale
- The hashlib and ssl modules now support OpenSSL 1.1.0
- The default settings and feature set of the ssl module have been improved
- The hashlib module received support for the BLAKE2, SHA-3 and SHAKE hash algorithms and the scrypt() key derivation function
更新時間:2016-10-25
更新細節:
What's new in this version:
LONG TERM RELEASE:
- This is a special release since it is designated an ‘LTR’ (Long Term Release). LTR releases will be supported with backported bug fixes for one year, and will be in permanent feature freeze (i.e. no new features will be added, only bug fixes and trivial updates).
- The purpose of LTR releases is to provide a stable and less frequently changing platform for enterprises and organisations that do not want to deal with updating user skills, training materials etc. more than once per year. The success of the LTR is very much down to you, our beloved users - we need your support to help funding bug fixes and making sure in your support contracts with support providers specify that any bug fixes done on your behalf are applied to the LTR branch as well as our normal development branch.
- If an LTR is important to you, please consider also directly supporting the QGIS project, or encourage your commercial provider to use LTR as a basis for your enterprise solution so that everyone may benefit from a stable platform that is being continuously improved and refined. Note that for users and organisations that like to live on the frontier, our regular four monthly releases will continue unabated.
NEW FEATURES:
- QGIS 2.8 is also a special release because it includes so many great new features, tweaks and enhancements to make the most popular Free desktop GIS even more feature filled and useful.
- Whenever new features are added to software they introduce the possibility of new bugs - if you encounter any problems with this release, please file a ticket on the QGIS Bug Tracker.
GENERAL:
Enter expressions into spin boxes:
- When editing attributes in the attribute table or forms, you can now enter expressions directly into spin boxes, e.g. 5 * 2.5 and they will be automatically evaluated.
Bookmarks can be imported/exported:
- It is now possible to save / load your bookmarks to a file. This makes it easy to share bookmarked locations, or transfer them between computers.
Improvements to expressions:
- Integer division produces a double when required: Previously dividing two integers in an expression would always result in an integer value, i.e. 5 / 2 = 2. Now the result will always be double when required, so 5 / 2 = 2.5, which is much more expected for users. A new integer divide operator - // has been added to mimic the old behaviour, i.e. 5 // 2 = 2.
- New ‘if()’ function: There is now a new if(cond, true, false) expression
- Lazy evaluation for expressions
- Added get and transform geometry: These new keywords can be used with getFeature for some geometry tests like intersects, crosses, contains, etc.
- geometry - returns the feature’s geometry
- transform - returns the transformed geometry
- Continuous testing framework and QA improvements:
- In our ongoing quest to improve the stability and quality of QGIS, every commit is now tested against a growing test suite to identify regressions automatically. In the image on the right you can see the list of incoming pull requests on our GitHub page are now automatically annotated with a check or cross based on whether our test suite successfully ran on Travis.ci when the pull request is made or updated.
- We are also now regularly performing Coverity scans of QGIS codebase. As a result of this, we have identified and fixed over 1000 flagged issues, including memory leaks and potential crashes. QGIS has a defect density of 0.01 wheras the average for programs of similar size is about 1.0.
- Analysis tools
Measure dialog improvements:
- The measure tool has been improved so that you can now select which units should be used in the measure dialog. There is also a new info section in the dialog that shows which settings are being used during measurement calculations.
BROWSER
More responsive browser:
- In the QGIS Browser items are now expanded in their own threads, speeding up the load time of the browser and making the browser more responsive. Navigating PostGIS sources is now much faster in the browser. The animated snapshot to the right (click image to see the animation) shows the loading of two slow WMS servers in parallel . The browser’s state (tree expansion) is restored on startup.
DATA PROVIDERS:
Support for contextual WMS legend graphics:
- If your WMS server supports contextual legends, you can make use of them in QGIS now too. Contextual legends are getLegendGraphic requests which return only the relevant legend for your current view extent, and thus do not include legend items for things you can’t see in the current map.
DATA MANAGEMENT:
Custom prefix for joins:
- You can now define a custom prefix in the joins manager in the layer properties dialog. When using a prefix, the attribute table in will show joined attribute names with your preferred prefix.
Support for creation of temporary memory layers:
- This release add support for creating new temporary scratch layers within QGIS core. Scratch layers can be created in the Layer --> Create layer --> New Temporary Scratch Layer menu option.
Support for calculations on selected rows:
- In the attribute table you can now do calculations on selected rows only thanks to the new button added to the field calculator bar.
DIGITISING
Advanced digitizing tools:
- If you ever wished you could digitise lines exactly parallel or at right angles, lock lines to specific angles and so on in QGIS, now you can! The advanced digitizing tools is a port of the CADinput plugin and adds a new panel to QGIS. The panel becomes active when capturing new geometries or geometry parts
- Feature: Improved simplify tool
- The simplify tool has been overhauled, adding:
- OTF reprojection support
- user can specify exact tolerance (not just non-sense relative value)
- tolerance can be specified either in map units or layer units or pixels
- tolerance settings are stored in settings
- simplify multiple features at once (drag a rectangle instead of just clicking)
- support for multi-part features
- statistics about reduction of the number of vertices
Snapping improvements:
- There is a new snapping mode : snap to all layers which makes it quick to enable snapping between all layers. Also the underlying snapping architecture of QGIS has been overhauled making snapping much faster on large projects and improving the precision with which snapping takes place. There’s also less confusion with snapping tolerances being to map units or layer units, so those anticipated 1 metre tolerances don’t become 1 degree tolerances without you knowing.
LAYER LEGEND
Show rule-based renderer’s legend as a tree:
- Advanced users who leverage QGIS’s rule based renderer system will be pleased to see that the rules are now presented as a tree in the legend. Better still, each node in the tree can be toggled on/off individually providing for great flexibility in which sublayers get rendered in your map.
MAP COMPOSER
Composer GUI Improvements
- View menu option to hide bounding boxes. This allows users to hide the bounding boxes for selected items within a composition. It’s a handy feature for allowing interaction with items while previewing exactly how they will look when the composition is exported, without large boxes blocking the view.
- Full screen mode for composer
- Option to toggle display of panels in composer, available by both the view menu, using the shortcut F10 and by pressing Tab when the composer canvas is selected. It’s useful for maximising the space when planning a map layout.
Grid improvements:
- In the composer you now have finer control of frame and annotation display. Previously, for rotated maps or reprojected grids, the composer would draw all coordinates for every map side. This resulted in a mix of latitude/y and longitude/x coordinates showing on a side. Now you can control whether you want all coordinates, latitude only or longitude only for each map frame side. Similar options have also been added for controlling how a map grid frame is divided.
- New vertical descending direction for annotations. This change adds a new descending vertical direction mode for map grid annotations. Previously only ascending text was supported for vertical annotations.
- Feature: Label item margins
- You can now control both horizontal and vertical margins for label items. Previously only a single margin setting would apply to both horizontal and vertical margins. This change allows users to specify different horizontal and vertical margins.
- You can now specify negative margins for label items, allowing text to be drawn slightly outside of a label item’s bounds. This is desirable for aligning label items with other items while allowing for optical margin alignment for the label type.
PLUGINS
Python console improvements:
- You can now drag and drop python scripts into QGIS window and they will be executed automatically. We also added a toolbar icon to the plugins toolbar and a shortcut ( Ctrl-Alt-P ) for quick access to the python console.
PROCESSING
New geometric predicate parameter type:
- With this new parameter type, used in Select by location, Extract by location and Join attributes by location algorithms, the user can select precisely the spatial operator to use.
- This feature was funded by: French Ministry of Ecology, Sustainable Development and Energy
New algorithms:
- A number of new algorithms have been added to the processing framework:
- Regular points algorithm (addresses #5953)
- Symetrical difference algorithm (addresses #5953)
- Vector split algorithm (addresses #5953)
- Vector grid algorithm (addresses #5953)
- Hypsometric curves calculation algorithm
- Split lines with lines
- Refactor fields attributes manipulation algorithm
PROGRAMMABILITY
Add comment functionality to expressions:
- Comments can now be added to expressions using an SQL style -- prefix.
Custom expression function editor:
- You can now define custom expression functions in the expression widget. See this blog post for more details.
Qt5 support:
- QGIS can now be built using Qt5 libraries. Note that currently most binaries will still with Qt4 by default.
Bulk loading spatial index:
- In the API we have added support for bulk loading of spatial index. This is much faster way of initializing a spatial index. From python it is as simple as:
- The index tree should be also in theory be better constructed and may result in faster lookups.
Run only the selected part of a SQL query:
- In the DB Manager SQL editor, it is now possible to highlight a portion of the SQL and only that portion will be executed when you press F5 or click the run button
QGIS SERVER
Server python plugins:
- Python plugins support for QGIS server brings the power of python to server side, allowing for fast and efficient development and deployment of new features.
- This feature was developed by: Alessandro Pasotti (ItOpen)
Support for layer styles:
- QGIS Server now supports predefined layer styles in GetMap requests
- QGIS Server now supports multiple styles in GetStyles request (see symbology section below)
Add DescribeLayer Method to WMS:
- Styled Layer Descriptor profile of the Web Map Service: DescribeLayer
- Defining a user-defined style requires information about the features being symbolized, or at least their feature/coverage type. Since user-defined styles can be applied to a named layer, there needs to be a mechanism by which a client can obtain feature/coverage-type information for a named layer. This is another example of bridging the gap between the WMS concepts of layers and styles and WFS/WCS concepts such as feature-type and coverage layer. To allow this, a WMS may optionally support the DescribeLayer request.
- DescribeLayer method has been thought to be a better approach than overloading the WMS capabilities document even more.
- For each named layer, the description should indicate if it is indeed based on feature data and if so it should indicate the WFS/WCS (by a URL prefix) and the feature/coverage types. Note that it is perfectly valid for a named layer not to be describable in this way.
SYMBOLOGY
Raster image fill type:
- This new symbol layer type allows for filling polygons with a (tiled) raster image.
- Options include (data defined) file name, opacity, image size (in pixels, mm or map units), coordinate mode (feature or view), and rotation.
Live heatmap renderer:
- The new heatmap vector layer renderer allows for live, dynamic heatmaps for point layers.
- Options include specifying heatmap radius in pixels, mm or map units, choice of color ramp,weighting points by field, and a slider for selecting a tradeoff between render speed and quality.
Multiple styles per layer:
- It is now possible to set multiple styles for a layer and then easily toggle between them. This functionality is available in the legend context menu --> styles sub-menu where it is possible to add/remove styles and quickly switch between them. Layer sets remember styles, and different styles can also be applied to individual composer map items. The multiple styles defined are also available when the project is served via QGIS Server as a WMS layer. For more information on this see also this blog post.
- This feature was developed by: Gis3W, Lutra Consulting
More data-defined symbology settings:
- The user interface for data defined symbology settings has been improved - moving the data defined option next to each data definable property (in keeping with other parts of QGIS such as the labeling properties). Also many new properties have been made data definable for symbology. This user interface improvement also provides a way to immediately see if a data defined override is defined as well as easier access to the data-defined settings.
DXF export - improve marker symbol export:
- The exporter functionality for DXF files has been improved, with better fidelity of exported marker symbols to the original QGIS symbology.
- Feature: Map rotation in canvas, improved rotation in composer
- This release includes preliminary support for rotation in the map canvas. You can rotate the canvas using the new rotation widget in the status bar. Rotation support has been extended into the map composer too so that it correctly handles labelling and symbology, etc.
USER INTERFACE
Improved/consistent projection selection:
- All dialogs now use a consistent projection selection widget, which allows for quickly selecting from recently used and standard project/QGIS projections.
更新時間:2016-06-27
更新細節:
What's new in this version:
Core and Builtins:
- Update Windows builds to use OpenSSL 1.0.2h.
Tests:
- Ubuntu’s openssl OP_NO_SSLv3 is forced on by default; fix test.
IDLE:
- Allow non-ascii in idlelib/NEWS.txt - minimal part for 3.5.2.
Core and Builtins:
- Fixed SystemError if a custom opener (for open()) returns a negative number without setting an exception.
- Fixed TypeError when frame.f_trace is set to None. Patch by Xavier de Gaye.
- Fixed possible refleaks in failing Py_BuildValue() with the “N” format unit.
- Fix possible refleak when creating a function with annotations.
- Fixed bytearray.remove() for values greater than 127. Patch by Joe Jevnik.
- int.from_bytes() no longer bypasses constructors for subclasses.
- gc.get_objects() no longer contains a broken tuple with NULL pointer.
- Use RawConfigParser for .pypirc parsing, removing support for interpolation unintentionally added with move to Python 3. Behavior no longer does any interpolation in .pypirc files, matching behavior in Python 2.7 and Setuptools 19.0.
- Make the builtin slice type support cycle collection.
- super.__init__ no longer leaks memory if called multiple times. NOTE: A direct call of super.__init__ is not endorsed!
- PYTHONIOENCODING now has priority over locale in setting the error handler for stdin and stdout.
- Fixed crash on iterating exhausting iterators. Affected classes are generic sequence iterators, iterators of str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, corresponding views and os.scandir() iterator.
- If coding cookie is specified multiple times on a line in Python source code file, only the first one is taken to account.
- Fix str.translate() when string is ASCII and first replacements removes character, but next replacement uses a non-ASCII character or a string longer than 1 character. Regression introduced in Python 3.5.0.
- Ensure exception reports from PyErr_Display() and PyErr_WriteUnraisable() are sensible even when formatting them produces secondary errors. This affects the reports produced by sys.__excepthook__() and when __del__() raises an exception.
- Correct behavior to reject comma as a legal character for cookie names.
- Avoid masking the original TypeError exception when using star (*) unpacking in function calls. Based on patch by Hagen Fürstenau and Daniel Urban.
- Fix the doc comment for FileFinder.find_spec().
- Add a new private _PyThreadState_UncheckedGet() function to get the current Python thread state, but don’t issue a fatal error if it is NULL. This new function must be used instead of accessing directly the _PyThreadState_Current variable. The variable is no more exposed since Python 3.5.1 to hide the exact implementation of atomic C types, to avoid compiler issues.
- Deque.insert() gave odd results for bounded deques that had reached their maximum size. Now an IndexError will be raised when attempting to insert into a full deque.
- When compiling code, don’t merge constants if they are equal but have a different types. For example, f1, f2 = lambda: 1, lambda: 1.0 is now correctly compiled to two different functions: f1() returns 1 (int) and f2() returns 1.0 (int), even if 1 and 1.0 are equal.
- [UPDATE] Comment out the one of the pickleability tests in _PyObject_GetState() due to regressions observed in Cython-based projects.
- Disallowed null characters in the type name.
- Fix segfault when an invalid nonlocal statement binds a name starting with two underscores.
- Instances of extension types with a state that aren’t subclasses of list or dict and haven’t implemented any pickle-related methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or __getstate__), can no longer be pickled. Including memoryview.
- Massive replacing unsafe attribute setting code with special macro Py_SETREF.
- Special method __bytes__() now works in str subclasses.
- __sizeof__ methods of builtin types now use dynamic basic size. This allows sys.getsize() to work correctly with their subclasses with __slots__ defined.
- Fixed problem with in-place string concatenation and utf-8 cache.
- Mention PEP 420 in the importlib docs.
- Fixed crash in object.__reduce__() if slot name is freed inside __getattr__.
- Fixed crash on converting objects with special methods __bytes__, __trunc__, and __float__ returning instances of subclasses of bytes, int, and float to subclasses of bytes, int, and float correspondingly.
- Fix semantic bugs when using binary operators with dictionary views and tuples.
- Fix possible integer overflow and heap corruption in zipimporter.get_data().
- Fix TAB key behaviour in REPL with readline.
- Raise a RuntimeError when a coroutine object is awaited more than once.
- Update the __aiter__ protocol: instead of returning an awaitable that resolves to an asynchronous iterator, the asynchronous iterator should be returned directly. Doing the former will trigger a PendingDeprecationWarning.
Library:
- Update expat to 2.1.1, fixes CVE-2015-1283.
- Fix TLS stripping vulnerability in smptlib, CVE-2016-0772. Reported by Team
Oststrom:
- Implement missing IPv4Address.is_global property. It was documented since 07a5610bae9d. Initial patch by Roger Luethi.
- distutils register command now decodes HTTP responses correctly.
Initial patch by ingrid.
- A new version of typing.py provides several new classes and features: @overload outside stubs, Reversible, DefaultDict, Text, ContextManager, Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some of the new features are not yet implemented in mypy or other static analyzers). Also classes for PEP 492 (Awaitable, AsyncIterable, AsyncIterator) have been added (in fact they made it into 3.5.1 but were never mentioned).
- Stop http.server.BaseHTTPRequestHandler.send_error() from sending a message body for 205 Reset Content. Also, don’t send Content header fields in responses that don’t have a body. Patch by Susumu Koshiba.
- Fix the “platform” module to tolerate when sys.version contains truncated build information.
- On Linux, os.urandom() now calls getrandom() with GRND_NONBLOCK to fall back on reading /dev/urandom if the urandom entropy pool is not initialized yet. Patch written by Colm Buckley.
- In the zlib module, allow decompressing raw Deflate streams with a predefined zdict. Based on patch by Xiang Zhang.
- Fix wsgiref.simple_server.WSGIRequestHandler to completely write data to the client. Previously it could do partial writes and truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout doing partial writes, but this is deprecated.
- Add __all__ to string. Patch by Emanuel Barry.
- subprocess.Popen.communicate now correctly ignores BrokenPipeError when the child process dies before .communicate() is called in more/all circumstances.
- distutils.upload now correctly handles HTTPError. Initial patch by Claudiu Popa.
- Fix SSLContext._load_windows_store_certs fails with PermissionError
- Avoid creating duplicate filters when using filterwarnings and simplefilter. Based on patch by Alex Shkop.
- Fix os.set_inheritable() on Android, ioctl() is blocked by SELinux and fails with EACCESS. The function now falls back to fcntl(). Patch written by Michal Bednarski.
- Fix infinite recursion using typing.py. Thanks to Kalle Tuure!
- Fix urllib.request redirect handling when the target only has a query string. Original fix by Ján Janech.
- The “urllib.request” module now percent-encodes non-ASCII bytes found in redirect target URLs. Some servers send Location header fields with non-ASCII bytes, but “http.client” requires the request target to be ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch by Christian Heimes.
- Honor debuglevel flag in urllib.request.HTTPHandler. Patch contributed by Chi Hsuan Yen.
- In the subprocess module, allow stderr to be redirected to stdout even when stdout is not redirected. Patch by Akira Li.
- mock_open ‘files’ no longer error on readline at end of file. Patch from Yolanda Robla.
- Fixed leaking a userptr in curses panel destructor.
- Removed unnecessary, and ignored, call to sum of squares helper in statistics.pvariance.
- The modulefinder module now supports extended opcode arguments.
- Fixed crashes related to directly created instances of types in _tkinter and curses.panel modules.
- weakref.ref() no longer silently ignores keyword arguments. Patch by Georg Brandl.
- xmlrpc now raises ResponseError on unsupported type tags instead of silently return incorrect result.
- Fixed the comparison of plistlib.Data with other types.
- Fix an uninitialized variable in ctypes.util.
- The bug only occurs on SunOS when the ctypes implementation searches for the crle program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos.
- In urllib.request, change the proxy bypass host checking against no_proxy to be case-insensitive, and to not match unrelated host names that happen to have a bypassed hostname as a suffix. Patch by Xiang Zhang.
- recursive_repr() now sets __qualname__ of wrapper. Patch by Xiang Zhang.
- urllib.request will prefer lower_case proxy environment variables over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter Jansen.
- assertSequenceEqual() now correctly outputs non-stringified differing items (like bytes in the -b mode). This affects assertListEqual() and assertTupleEqual().
- Remove “will be removed in Python 3.7” from deprecation messages of platform.dist() and platform.linux_distribution(). Patch by Kumaripaba Miyurusara Athukorala.
- itemgetter, attrgetter and methodcaller objects no longer silently ignore keyword arguments.
- Disassembling a class now disassembles class and static methods. Patch by Xiang Zhang.
- Fix error handling in shutil.get_terminal_size(), catch AttributeError instead of NameError. Patch written by Emanuel Barry.
- tarfile’s ustar and gnu formats now correctly calculate name and link field limits for multibyte character encodings like utf-8.
- Fix directory traversal vulnerability with http.server on Windows. This fixes a regression that was introduced in 3.3.4rc1 and 3.4.0rc1. Based on patch by Philipp Hagemeister.
- Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by Anthony Sottile.
- Fix os.urandom() on Solaris 11.3 and newer when reading more than 1,024 bytes: call getrandom() multiple times with a limit of 1024 bytes per call.
- Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola’.
- Add .csv to mimetypes.types_map. Patch by Geoff Wilson.
- Fixed Y2038 problem in loading binary PLists.
- Handle terminal resizing with Readline 6.3+ by installing our own SIGWINCH handler. Patch by Eric Price.
- In http.server, respond with “413 Request header fields too large” if there are too many header fields to parse, rather than killing the connection and raising an unhandled exception. Patch by Xiang Zhang.
- Change BufferedReader.writable() and BufferedWriter.readable() to always return False.
- Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer.
- Raise ValueError rather than SystemError when a negative length is passed to SSLSocket.recv() or read().
- Fix SSL recv(0) and read(0) methods to return zero bytes instead of up to 1024.
- Fixed a bug in datetime.astimezone() method.
- warnings.formatwarning() now catches exceptions on linecache.getline(...) to be able to log ResourceWarning emitted late during the Python shutdown process.
- Ctrl+C during Readline history search now cancels the search mode when compiled with Readline 7.
- Avoid potential ValueError in BaseHandler.start_response. Initial patch by Peter Inglesby.
- ssl.py _load_windows_store_certs fails if windows cert store is empty. Patch by Baji.
- Fix pyclbr.readmodule() and pyclbr.readmodule_ex() to support importing packages.
- Account for remaining Content-Length in HTTPResponse.readline() and read1(). Based on patch by Silent Ghost. Also document that HTTPResponse now supports these methods.
- Handle sockets in directories unittest discovery is scanning. Patch from Victor van den Elzen.
- cookiejar.http2time() now returns None if year is higher than datetime.MAXYEAR.
- Fixes platform module detection of Windows Server
- Fixed parsing time in week 0 before Jan 1. Original patch by Tamás Bence Gedai.
- Invoking Path.owner() and Path.group() on Windows now raise NotImplementedError instead of ImportError.
- Fixed the keys() method for Canvas and Scrollbar widgets.
- Got rid of excessive buffering in the fileinput module. The bufsize parameter is no longer used.
- Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu Dupuy.
- Fixed pickling and copying the accumulate() iterator with total is None.
- Fixed debugging output for regular expressions with the (?x) flag.
- Fixed the subnets() methods in IP network classes for the case when resulting prefix length is equal to maximal prefix length. Based on patch by Xiang Zhang.
- Remove the file if the internal open() call in NamedTemporaryFile() fails. Patch by Silent Ghost.
- Fix XML-RPC client to retry when the server shuts down a persistent connection. This was a regression related to the new http.client.RemoteDisconnected exception in 3.5.0a4.
- Leading
更新時間:2015-12-22
更新細節:
What's new in this version:
- Corrected =/== typo potentially leading to crash in launcher
更新時間:2015-12-06
更新細節:
What's new in this version:
- Python 3.5.1 installer shows wrong upgrade path and incorrect logic for launcher detection