$ git config --global hub.protocol https
$ cat ~/.config/hub
github.com:
- user: notriddle
oauth_token: [CENSORED]
protocol: https
$ cat > ~/.netrc
// https://rust-lang.org/ | |
use std::ffi::CStr; | |
use std::os::raw::{c_char, c_int}; | |
use std::slice; | |
use lua_sys::lua_State; | |
unsafe extern "C" fn runargs(l: *mut lua_State, argv: *mut *mut c_char, n: c_int) -> c_int { | |
// slices can use normal [] access, while pointers have to use the .offset method | |
// so convert the pointer to a slice, because otherwise this'll be 99% .offset(i).deref().offset(0).deref() | |
let args = &slice::from_raw_parts(argv, n)[1..]; | |
let mut iter = args.iter().cloned().map(CStr::from_ptr); |
This is the rough implementation plan:
pick 9ae5db20d2 introduce Universe
struct
We want this. =)
pick 1da0b70c57 introduce UniverseIndex
into ParamEnv
Instead of adding a universe
to the ParamEnv
, the plan is now to
add this field to the InferenceCtxt
. It represents the maxixum
use std::collections::VecDeque; | |
use std::ffi::OsString; | |
use std::os::windows::ffi::OsStringExt; | |
use std::slice; | |
use std::iter; | |
use std::ptr; | |
/// Implements the Windows command-line argument parsing algorithm, described at | |
/// <https://docs.microsoft.com/en-us/previous-versions//17w5ykft(v=vs.85)>. | |
/// |
Latency Comparison Numbers (~2012) | |
---------------------------------- | |
L1 cache reference 0.5 ns | |
Branch mispredict 5 ns | |
L2 cache reference 7 ns 14x L1 cache | |
Mutex lock/unlock 25 ns | |
Main memory reference 100 ns 20x L2 cache, 200x L1 cache | |
Compress 1K bytes with Zippy 3,000 ns 3 us | |
Send 1K bytes over 1 Gbps network 10,000 ns 10 us | |
Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD |
This is just a brain dump. Doing all of this is not going to happen, but all of it is stuff I know of that impacts Rust's integration with the rest of the world and eventually becoming Too Big To Fail like C++ is.
- Improved support for vendored, external, and non-crates.io crates. Some of it is just a matter of documenting the workarounds to allow cargo to use local git repositories in place of networked ones. Some of it is providing official, documented registry software.
- Improved support for third-party discussion and documentation platforms. I love Users and Internals, and I can deal with Discord, but these are platforms specifically for discussing Rust. What we need is greater presence on platforms that are dedicated to problem domains: database courses
#!/bin/sh | |
# The first step is to get a list of robot IP addresses | |
# We stash it in a file for later | |
awk -F' ' '/robots.txt/ {print $1}' /var/log/nginx/access.log.1 | sort | uniq > robots-ips.txt | |
# Also add a few known bots that don't necessarily get robots.txt from the same IP | |
grep -iE '(bingbot|BingPreview|msnbot|adbeat|ArchiveBot|YandexBot|Googlebot|Pinterestbot|Spider)' /var/log/nginx/access.log.1 | awk -F' ' '{print $1}' | sort | uniq > robots-ips.txt # The second step is to get a list of non-robot IP addresses | |
# This one is comparatively complicated, so let's dissect my awk syntax | |
# NR==FNR -- FNR is the line number ("record number") in the current file, while NR is the line number processed in total. If these are equal, then we're on the current file. # {a[$1]=1;next} -- we want to load the robots-ips.txt file into an array, a |
By "rustdoc", I mean the API documentation webapp used by Rust. The Book is rendered using a different application, called mdBook, and only some of this advice is really applicable to it.
I hope you take my copycat txties as the compliment that I intend, by the way.
The first step is to get the Rust code. To help compare the old version with the new one, I set up a separate worktree for the new version, and keep the old version around. It's a lot like cloning the repository twice, but it doesn't require two downloads.
user=notriddle
cd ~/Development
#!/bin/bash | |
print-usage-and-die() { | |
echo "Usage: diffpkg.bash [cargo|npm] [pkg1] [pkg2]" | |
echo " pkg1 and pkg2 can have formats NAME-VERS, NAME@VERS, NAME:VERS, or NAME=VERS" | |
exit 1 | |
} | |
extract-name() { | |
case "$1" in |