Python 3.6

Python 3.6 beta 1 dirilis pada 12 Sep 2016, dan ringkasan fitur-fitur baru dapat ditemukan di sini:

Fitur Sintaks Baru

Status

PEP 498

Pemformatan String Literal

Selesai

PEP 515

Garis Bawah dalam Literal Numerik

Selesai

PEP 525

Generator Asinkron

PEP 526

Sintaks untuk Anotasi Variabel (sementara)

Selesai

PEP 530

Comprehension Asinkron

Fitur Built-in Baru

PEP 468

Mempertahankan urutan kwargs dalam sebuah fungsi

PEP 487

Kustomisasi pembuatan kelas yang lebih sederhana

Sebagian [1]

PEP 520

Mempertahankan Urutan Definisi Atribut Kelas

Perubahan Pustaka Standar

PEP 495

Disambiguasi Waktu Lokal

PEP 506

Menambahkan Modul Secrets ke Pustaka Standar

PEP 519

Menambahkan protokol path sistem file

Internal CPython

PEP 509

Menambahkan versi privat ke dict

Tidak akan dilakukan

PEP 523

Menambahkan API evaluasi bingkai ke CPython

Perubahan Linux/Windows

PEP 524

Membuat os.urandom() memblokir di Linux (saat startup sistem)

PEP 528

Mengubah enkoding konsol Windows ke UTF-8

PEP 529

Mengubah enkoding sistem file Windows ke UTF-8

Perubahan Bahasa Lainnya:

Pernyataan global atau nonlocal kini harus muncul secara tekstual sebelum penggunaan pertama nama yang terpengaruh dalam cakupan yang sama. Sebelumnya ini adalah SyntaxWarning.

Kini dimungkinkan untuk mengatur metode khusus ke None untuk menunjukkan bahwa operasi yang bersangkutan tidak tersedia. Misalnya, jika sebuah kelas mengatur __iter__() ke None, kelas tersebut tidak dapat diiterasi.

Urutan panjang baris traceback yang berulang kini disingkat sebagai [Previous line repeated {count} more times]

Import kini memunculkan pengecualian baru ModuleNotFoundError ketika tidak dapat menemukan modul. Kode yang saat ini memeriksa ImportError (dalam try-except) masih akan berfungsi.

Metode kelas yang mengandalkan super() tanpa argumen kini akan bekerja dengan benar ketika dipanggil dari metode metakelas selama pembuatan kelas.

Perubahan pada modul built-in:

array

Iterator array.array yang habis kini akan tetap habis meskipun array yang diiterasi diperluas.

binascii

Fungsi b2a_base64() kini menerima argumen kata kunci newline opsional untuk mengontrol apakah karakter newline ditambahkan ke nilai kembalian

Selesai

cmath

Konstanta baru cmath.tau (τ) telah ditambahkan

Konstanta baru: cmath.inf dan cmath.nan untuk mencocokkan math.inf dan math.nan, dan juga cmath.infj dan cmath.nanj untuk mencocokkan format yang digunakan oleh repr kompleks

collections

Kelas dasar abstrak Collection baru telah ditambahkan untuk merepresentasikan kelas kontainer iterable berukuran

Kelas dasar abstrak Reversible baru merepresentasikan kelas iterable yang juga menyediakan metode __reversed__().

Kelas dasar abstrak AsyncGenerator baru merepresentasikan generator asinkron.

Fungsi namedtuple() kini menerima argumen kata kunci opsional module, yang bila ditentukan, digunakan untuk atribut __module__ dari kelas named tuple yang dikembalikan.

Argumen verbose dan rename untuk namedtuple() kini hanya berupa kata kunci.

Instance collections.deque rekursif kini dapat dipickle.

hashlib

Fungsi hash BLAKE2 ditambahkan ke modul. blake2b() dan blake2s() selalu tersedia dan mendukung fitur lengkap BLAKE2.

Fungsi hash SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512(), dan fungsi hash SHAKE shake_128() dan shake_256() telah ditambahkan.

Fungsi derivasi kunci berbasis kata sandi scrypt() kini tersedia dengan OpenSSL 1.1.0 dan yang lebih baru.

json

json.load() dan json.loads() kini mendukung input biner. JSON yang dienkoding harus direpresentasikan menggunakan UTF-8, UTF-16, atau UTF-32.

math

Konstanta baru math.tau (τ) telah ditambahkan

Selesai

os

Metode close() baru memungkinkan penutupan eksplisit iterator scandir(). Iterator scandir() kini mendukung protokol context manager.

Di Linux, os.urandom() kini memblokir sampai pool entropi urandom sistem diinisialisasi untuk meningkatkan keamanan.

Syscall Linux getrandom() (mendapatkan byte acak) kini diekspos sebagai fungsi os.getrandom() baru.

re

Menambahkan dukungan span modifier dalam ekspresi reguler. Contoh: '(?i:p)ython' cocok dengan 'python' dan 'Python', tetapi tidak 'PYTHON'; '(?i)g(?-i:v)r' cocok dengan 'GvR' dan 'gvr', tetapi tidak 'GVR'.

Grup objek match dapat diakses melalui __getitem__, yang setara dengan group(). Jadi mo['name'] kini setara dengan mo.group('name').

Objek match kini mendukung objek seperti indeks sebagai indeks grup.

socket

Fungsi ioctl() kini mendukung kode kontrol SIO_LOOPBACK_FAST_PATH.

Konstanta getsockopt() SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC, dan SO_PASSSEC kini didukung.

setsockopt() kini mendukung bentuk setsockopt(level, optname, None, optlen: int).

Modul socket kini mendukung keluarga alamat AF_ALG untuk berinteraksi dengan Linux Kernel crypto API. ALG_, SOL_ALG dan sendmsg_afalg() telah ditambahkan.

Konstanta Linux baru TCP_USER_TIMEOUT dan TCP_CONGESTION telah ditambahkan.

ssl

ssl mendukung OpenSSL 1.1.0. Versi minimum yang direkomendasikan adalah 1.0.2.

3DES telah dihapus dari suite cipher default dan suite cipher ChaCha20 Poly1305 telah ditambahkan.

SSLContext memiliki konfigurasi default yang lebih baik untuk opsi dan cipher.

Sesi SSL dapat disalin dari satu koneksi sisi klien ke koneksi lain dengan kelas SSLSession baru. Resumsi sesi TLS dapat mempercepat handshake awal, mengurangi latensi dan meningkatkan performa.

Metode get_ciphers() baru dapat digunakan untuk mendapatkan daftar cipher yang diaktifkan dalam urutan prioritas cipher.

Semua konstanta dan flag telah dikonversi ke IntEnum dan IntFlags.

Protokol TLS spesifik sisi server dan klien untuk SSLContext telah ditambahkan.

Ditambahkan SSLContext.post_handshake_auth untuk mengaktifkan dan ssl.SSLSocket.verify_client_post_handshake() untuk memulai autentikasi pasca-handshake TLS 1.3.

struct

kini mendukung float setengah-presisi IEEE 754 melalui penentu format 'e'.

sys

Fungsi getfilesystemencodeerrors() baru mengembalikan nama mode kesalahan yang digunakan untuk mengonversi antara nama file Unicode dan nama file bytes.

zlib

Fungsi compress() dan decompress() kini menerima argumen kata kunci

Catatan