| CPython | go | |
|---|---|---|
| 1,555 | 2,347 | |
| 70,429 | 131,469 | |
| 1.1% | 0.7% | |
| 10.0 | 10.0 | |
| about 6 hours ago | 6 days ago | |
| Python | Go | |
| GNU General Public License v3.0 or later | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
CPython
- What's New in Python 3.15
Here's the relevant diff: https://github.com/python/cpython/pull/137968/files#diff-966...
Search is limited to 20 attributes and non-descriptors only to avoid arbitrary code execution.
I assume constructing AttributeErrors isn't highly performance sensitive.
- Ask HN: How do you handle release notes for multiple audiences?
If there is an audience for release notes I haven't seen anything better than just committing entries to pre-release folder as you change things and have release automation compile the folder into the actual release notes. Python and many other large projects handle it like this: https://github.com/python/cpython/tree/main/Misc/NEWS.d/next (The release notes for major releases are crafted manually)
- Guide - Audio Modding of "Arena of Valor"
Python Software Foundation. Python Programming Language. https://www.python.org/
- How to Send an Email in Python
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email import encoders # SMTP Server details port = 587 smtp_server = "smtp.sendlayer.net" username = "paulie" # Your username generated by SendLayer password = "sendlayer_smtp_password" # Your password generated by SendLayer sender_email = "paulie@example.com" receiver_email = "johndoe@example.com" # Email content subject = "Email Example with Attachment" html_message = """\ Hi, This is a test email sent from "https://www.python.org">Python using "https://sendlayer.com">SendLayer's SMTP server The email also includes an attachment """ # Create a multipart message and set headers message = MIMEMultipart() message["From"] = sender_email message["Subject"] = subject message["To"] = receiver_email # Attach the HTML part message.attach(MIMEText(html_message, "html")) # Specify the file path for the attachment filename = "./path/to/attachment/file.pdf" # Change this to the correct path # Open the file in binary mode with open(filename, "rb") as attachment: part = MIMEBase("application", "octet-stream") part.set_payload(attachment.read()) # Encode file in ASCII characters to send by email encoders.encode_base64(part) # Add header as key/value pair to attachment part part.add_header("Content-Disposition", f"attachment; filename= {filename}") # Add attachment to message message.attach(part) # Send the email with smtplib.SMTP(smtp_server, port) as server: server.starttls() server.login(username, password) server.sendmail(sender_email, receiver_email, message.as_string()) print('Email sent successfully')
- Python Concurrency: A Guide to Threads, Processes, and Asyncio
import requests from concurrent.futures import ThreadPoolExecutor URLS = [ "https://www.python.org/", "https://www.djangoproject.com/", "https://flask.palletsprojects.com/", ] def fetch_url(url: str): print(f"Fetching {url}...") response = requests.get(url) print(f"Fetched {url} with status {response.status_code}") return len(response.content) with ThreadPoolExecutor(max_workers=5) as executor: # The map function runs `fetch_url` for each item in URLS results = executor.map(fetch_url, URLS) for url, length in zip(URLS, results): print(f"URL: {url}, Length: {length}")
- Type hints in Python (4)
Use KeysView and ValuesView instead of dict_keys and dict_values respectively because type checkers don't support dict_keys and dict_values in _collections_abc.
- Optimize Python Sorting with One Little Trick
According to the benchmark in the PR that introduced this optimization, sorting a list that consists only of floats rather than a list of floats with even a single integer at the end is almost twice as fast.
- How to Use UUIDv7 in Python, Django and PostgreSQL
If you want to a UUIDv7 key for partitioning your table by date (e.g., one partition per day or month), you need to be able to compute the partition range via the minimal UUIDv7 for a given date.
There is some discussion whether or not to add helpers for this to Python‘s uuid7 module: https://github.com/python/cpython/issues/130843#issuecomment...
- How often does Python allocate?
With respect to tagged pointers, there seems to be some recent movements on that front in CPython: https://github.com/python/cpython/issues/132509
- Python: Is_dir() returns False when called from a path.relative_to(root) result
go
- Go proposal: spec: sum types based on general interfaces
- Hash tables in Go and advantage of self-hosted compilers
- A História de como eu ajudei a aprimorar* uma das linguagens de programação mais famosas do mundo: a linguagem Go.
- Pure-Go implementation without CGO dependency
- Golang's Big Miss on Memory Arenas
With a number of caveats. You cannot reimplement arenas as the experiment did without special hooks into the runtime. https://github.com/golang/go/blob/master/src/arena/arena.go
- Go Proposal: Secret Mode
There are two main reasons why this approach isn't sufficient at a technical level, which are brought up by comments on the original proposal: https://github.com/golang/go/issues/21865
1) You are almost certainly going to be passing that key material to some core crypto functions, and those functions may allocate and copy your data around; while core crypto operations could probably be identified and given special protection in their own right, this still creates a hole for "helper" functions that sit in the middle
2) The compiler can always keep some data in registers, and most lines of Go code can be interrupted at any time, with the registers of the running goroutine copied somewhere temporarily; this is beyond your control and cannot be patched up after the fact by you even once control returns to your goroutine
So, even with your approach, (2) is a pretty serious and fundamental issue, and (1) is a pretty serious but mostly ergonomic issue. The two APIs also illustrate a basic difference in posture: secret.Do wipes everything except what intentionally escapes, while scramble wipes only what you think is important to wipe.
- Building a Custom AI Code Reviewer for GitHub Enterprise with Bedrock and Go
My first iteration was painfully simple. I wrote a Go program that fetched the git diff of a PR and sent it to the LLM with a prompt like: "Find bugs in this code."
- Parallel Table-Driven Tests in Go
Table-Driven Tests in Go
- Thoughts on Go vs. Rust vs. Zig
I thought the recent error proposal was quite interesting even if it didn't go through: https://github.com/golang/go/issues/71528
My hope is they will see these repeated pain points and find something that fits the error/result/enum issues people have. (Generics will be harder, I think)
- Go Linters: Essential Tools for Code Quality
Go Code Review Comments
What are some alternatives?
git - A fork of Git containing Windows-specific patches.
v - Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io
RustPython - A Python Interpreter written in Rust
TinyGo - Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
ipython - Official repository for IPython itself. Other repos in the IPython organization contain things like the website, documentation builds, etc.
zig - Moved to Codeberg