GUI image optimizer for Mac
imazen/imageflow 3359
High-performance image manipulation for web servers. Includes imageflow_server, imageflow_tool, and libimageflow
cloudflare/boringtun 2791
Userspace WireGuard® Implementation in Rust
A cargo subcommand for displaying when Rust dependencies are out of date
MessagePack implementation for Rust / msgpack.org[Rust]
Low output latency streaming HTML parser/rewriter with CSS selector-based API
Palette quantization library that powers pngquant and other PNG optimizers
kornelski/7z 285
Because 7-zip source code was in a 7z archive [mirror]
Safe Rust wrapper for the MozJPEG library
Rust library for retrieving and interacting with the crates.io index
pull request commentsindresorhus/Gifski
Regarding naive estimate:
-
Show a min-max range. "20MB-50MB" makes it clearer how imprecise it is.
-
Once you get any better estimate, remember the ratio between the naive and the better estimates. Apply that ratio to later naive estimates. This will give you decent estimates real time for changing parameters.
comment created time in 15 hours
issue commentmozilla/mozjpeg
Default compression profile mismatch between libjpeg and libjpeg-turbo APIs
It's been done for tests. I didn't expect anyone to use this library for the turbo API.
I guess it will need a smarter switch. Maybe read an env var?
comment created time in 16 hours
issue commentImageOptim/gifski
cargo install gifski failed on Windows
Please close the issue at rust-lang/cargo. It's not a cargo bug.
comment created time in 16 hours
issue commentImageOptim/gifski
cargo install gifski failed on Windows
Try:
cargo install gifski --no-default-features
it looks like gifsicle feature isn't Windows-compatible.
comment created time in 16 hours
Pull request review commentmozilla/mp4parse-rust
fn read_infe<T: Read>(src: &mut BMFFBox<T>) -> Result<ItemInfoEntry> { Ok(ItemInfoEntry { item_id, item_type }) } +fn read_iref<T: Read>(src: &mut BMFFBox<T>) -> Result<TryVec<ItemReferenceEntry>> {+ let mut entries = TryVec::new();+ let version = read_fullbox_version_no_flags(src)?;+ if version > 1 {+ return Err(Error::Unsupported("iref version"));+ }++ let mut iter = src.box_iter();+ while let Some(mut b) = iter.next_box()? {+ let from_item_id = if version == 0 {+ be_u16(&mut b)? as u32+ } else {+ be_u32(&mut b)?+ };+ let item_count = be_u16(&mut b)?;+ for _ in 0..item_count {+ let to_item_id = if version == 0 {+ be_u16(&mut b)? as u32+ } else {+ be_u32(&mut b)?+ };+ entries.push(ItemReferenceEntry {+ item_type: b.head.name.into(),+ from_item_id,+ to_item_id,+ })?;+ }+ }+ Ok(entries)+}++fn read_iprp<T: Read>(src: &mut BMFFBox<T>) -> Result<TryVec<AssociatedProperty>> {+ let mut iter = src.box_iter();+ let mut properties = TryVec::new();+ let mut associations = TryVec::new();++ while let Some(mut b) = iter.next_box()? {+ match b.head.name {+ BoxType::ItemPropertyContainerBox => {+ properties = read_ipco(&mut b)?;+ }+ BoxType::ItemPropertyAssociationBox => {+ associations = read_ipma(&mut b)?;+ }+ _ => return Err(Error::InvalidData("unexpected ipco child")),+ }+ }
I see you prefer strictly validating parser, rather than merely parser that can read spec-compliant files.
In this case I think code could be simpler if validity was checked separately after parsing.
comment created time in 17 hours
Pull request review commentmozilla/mp4parse-rust
impl<'a, T: Read> BMFFBox<'a, T> { } } -impl<'a, T: Read + Offset> BMFFBox<'a, T> {- /// Check whether the beginning of `extent` is within the bounds of the `BMFFBox`.- /// We assume extents to not cross box boundaries. If so, this will cause an error- /// in `read_extent`.- fn contains_extent(&self, extent: &ExtentRange) -> bool {- if self.offset() <= extent.start() {- let start_offset = extent.start() - self.offset();- start_offset < self.bytes_left()- } else {- false- }- }-- /// Read the range specified by `extent` into `buf` or return an error if the range is not- /// fully contained within the `BMFFBox`.- fn read_extent(&mut self, extent: &ExtentRange, buf: &mut TryVec<u8>) -> Result<()> {- let start_offset = extent- .start()- .checked_sub(self.offset())- .expect("box does not contain extent");- skip(self, start_offset)?;- match extent {- ExtentRange::WithLength(range) => {- let len = range- .end- .checked_sub(range.start)- .expect("range start > end");- if len > self.bytes_left() {- return Err(Error::InvalidData("extent crosses box boundary"));- }- self.take(len).try_read_to_end(buf)?;- }- ExtentRange::ToEnd(_) => {- self.try_read_to_end(buf)?;- }- }- Ok(())- }-}-
I agree there's still room for improvement, but I'd prefer to tackle it separately.
The existing approach to matching between items and extents can be O(n^2), so a malicious file could use it for DoS. It should be refactored into something more elegant that sorts extents by start offset. Or perhaps changed entirely into an API that can stream the data instead of buffering it all.
comment created time in 17 hours
Pull request review commentmozilla/mp4parse-rust
fn read_infe<T: Read>(src: &mut BMFFBox<T>) -> Result<ItemInfoEntry> { Ok(ItemInfoEntry { item_id, item_type }) } +fn read_iref<T: Read>(src: &mut BMFFBox<T>) -> Result<TryVec<ItemReferenceEntry>> {+ let mut entries = TryVec::new();+ let version = read_fullbox_version_no_flags(src)?;+ if version > 1 {+ return Err(Error::Unsupported("iref version"));+ }++ let mut iter = src.box_iter();+ while let Some(mut b) = iter.next_box()? {+ let from_item_id = if version == 0 {+ be_u16(&mut b)? as u32+ } else {+ be_u32(&mut b)?+ };+ let item_count = be_u16(&mut b)?;+ for _ in 0..item_count {+ let to_item_id = if version == 0 {+ be_u16(&mut b)? as u32+ } else {+ be_u32(&mut b)?+ };+ entries.push(ItemReferenceEntry {+ item_type: b.head.name.into(),+ from_item_id,+ to_item_id,+ })?;+ }+ }
It'd be nice to automate it, but it could be tackled as a separate refactoring.
Perhaps it could be automated by having BMFFBox keep a mutable reference to its BoxIter, and BMFFBox's drop could "poison" the iterator to return an error if the previous box hasn't been read fully.
comment created time in 17 hours
Pull request review commentmozilla/mp4parse-rust
pub fn read_avif<T: Read>(f: &mut T, context: &mut AvifContext) -> Result<()> { check_parser_state!(b.content); } - // If the `mdat` box came before the `meta` box, we need to fill in our primary item data- let primary_item_extents =- primary_item_extents.ok_or(Error::InvalidData("primary item extents missing"))?;- for (extent, data) in primary_item_extents+ let meta = meta.ok_or(Error::InvalidData("missing meta"))?;++ let alpha_item_id = meta+ .item_references .iter()- .zip(primary_item_extents_data.iter_mut())- {- if data.is_empty() {+ // Auxiliary image for the primary image+ .filter(|iref| {+ iref.to_item_id == meta.primary_item_id+ && iref.from_item_id != meta.primary_item_id+ && iref.item_type == b"auxl"+ })+ .map(|iref| iref.from_item_id)+ // which has the alpha property+ .filter(|&item_id| {+ meta.properties.iter().any(|prop| {+ prop.item_id == item_id+ && match &prop.property {+ ImageProperty::AuxiliaryType(urn) => {+ urn.as_slice()+ == "urn:mpeg:mpegB:cicp:systems:auxiliary:alpha".as_bytes()+ }+ _ => false,+ }+ })+ })+ .next();
I can add a check. It's amusing that the format uses complicated mechanism for arbitrary many to many relationships only to define a fixed 1:1 relationship :)
comment created time in 17 hours
Pull request review commentmozilla/mp4parse-rust
struct ItemInfoEntry { item_type: u32, } +/// See ISO 14496-12:2015 § 8.11.12+#[derive(Debug)]+struct ItemReferenceEntry {+ item_type: FourCC,+ from_item_id: u32,+ to_item_id: u32,
I've written it this way because a flattened structure is easier to create and easier to use. It's functionally equivalent to spec's structure, so there's nothing lost AFAIK.
I haven't seen files where one-to-many relationship would be actually needed, so I expect it to be pretty much always used with only a single to ID. Heap-allocating for just one 4-byte ID is wasteful, and creating SmallTryVec for just this case would be an overkill.
comment created time in 17 hours
issue comment3Hren/msgpack-rust
Question about zero-copy decoding
I'm not sure, since I haven't used zero-copy decoding myself. Have you tried using &[u8] instead?
comment created time in a day
created tagfrewsxcv/rust-crates-index
Rust library for retrieving and interacting with the crates.io index
created time in 2 days
push eventfrewsxcv/rust-crates-index
commit sha 62f793ac4637a3ed5df7b54b4f67598f95b0be5f
Bump SemVer crate
commit sha d6a310d678d107c99108e702648c654d44a3c105
Docs
push time in 2 days
issue closedrust-analyzer/smol_str
1.46 requirement is problematic
Due to https://github.com/rust-lang/rust/issues/75992 I'm unable to update to Rust 1.46-1.48, and currently smol_str is the only crate in my dependency tree that breaks on Rust 1.45.
Could you make the new const fn feature conditional, or yank the latest release?
closed time in 2 days
kornelskicreated tagfrewsxcv/rust-crates-index
Rust library for retrieving and interacting with the crates.io index
created time in 2 days
push eventkornelski/crev-proofs
commit sha 3d349dd563cf21d366eea54635f42bb486953bcc
Add review for smartstring v0.2.5
push time in 2 days
push eventfrewsxcv/rust-crates-index
commit sha 7e945b37dc94a442438bd1d8c2da9ee81ac3f0ad
Remove smol_str due to MSRV
push time in 2 days
issue commentrust-analyzer/smol_str
1.46 requirement is problematic
I usually agree with the "latest stable Rust" philosophy and follow that in my crates, but this time Rust 1.45 is the last Rust version that has actually been stable :)
comment created time in 2 days
issue openedrust-analyzer/smol_str
1.46 requirement is problematic
Due to https://github.com/rust-lang/rust/issues/75992 I'm unable to update to Rust 1.46-1.48, and currently smol_str is the only crate in my dependency tree that breaks on Rust 1.45.
Could you make the new const fn feature conditional, or yank the latest release?
created time in 2 days
issue closedImageOptim/mozjpeg-rust
Add mozjpeg-rust as encoder to image crate
As https://github.com/image-rs/image is getting more mature it would make sense to add mozjpeg as an full featured jpegencoder. What do you think?
closed time in 2 days
godofdreamcreated tagImageOptim/libimagequant
Palette quantization library that powers pngquant and other PNG optimizers
created time in 2 days
created tagkornelski/pngquant
Lossy PNG compressor — pngquant command based on libimagequant library
created time in 2 days
push eventkornelski/pngquant
commit sha b15515fbf0fafbf8ed706fc6ac97243b9be5ed7c
Bump
push time in 2 days
push eventImageOptim/libimagequant
commit sha b9ceb0ce11e1b6e05d08f129862bcf53683c2b9b
Bump
push time in 2 days
push eventImageOptim/libimagequant
commit sha eb31cf35128e83c4bfff280a93a2678663aecd81
initialize likely_colormap_index This is needed to avoid uninitialized usage later on, which is reported by valgrind as shown below. ==11283== Conditional jump or move depends on uninitialised value(s) ==11283== at 0x13D99C: pngquant_quantize (libimagequant.c:2000) ==11283== by 0x1384B8: liq_histogram_quantize_internal (libimagequant.c:1018) ==11283== by 0x138334: liq_image_quantize (libimagequant.c:992) ==11283== by 0x138249: liq_quantize_image (libimagequant.c:970) ==11283== by 0x12679B: image_quantize (image.c:486) ==11283== by 0x126BA8: main (main.c:92) ==11283== ==11283== Use of uninitialised value of size 8 ==11283== at 0x141A9B: nearest_search (nearest.c:174) ==11283== by 0x1355C6: kmeans_do_iteration (kmeans.c:85) ==11283== by 0x13DAAC: pngquant_quantize (libimagequant.c:2015) ==11283== by 0x1384B8: liq_histogram_quantize_internal (libimagequant.c:1018) ==11283== by 0x138334: liq_image_quantize (libimagequant.c:992) ==11283== by 0x138249: liq_quantize_image (libimagequant.c:970) ==11283== by 0x12679B: image_quantize (image.c:486) ==11283== by 0x126BA8: main (main.c:92) ==11283== ==11283== Use of uninitialised value of size 8 ==11283== at 0x141D4D: nearest_search (nearest.c:175) ==11283== by 0x1355C6: kmeans_do_iteration (kmeans.c:85) ==11283== by 0x13DAAC: pngquant_quantize (libimagequant.c:2015) ==11283== by 0x1384B8: liq_histogram_quantize_internal (libimagequant.c:1018) ==11283== by 0x138334: liq_image_quantize (libimagequant.c:992) ==11283== by 0x138249: liq_quantize_image (libimagequant.c:970) ==11283== by 0x12679B: image_quantize (image.c:486) ==11283== by 0x126BA8: main (main.c:92)
commit sha bbde661e508841d7b06d41d5be2377ec3747d073
Deprecated std error
commit sha eb74b4ecccd5e2429dfc3eda9f0e9e245205e27b
Support OpenMP in clang
commit sha cfda87055eceddaebe3329eda4648fed13b4af97
Remove IE6-bug workaround
commit sha 1d3fdecadfbe3adf255894326fc402ad716e8ffe
End sooner when on the wrong track
commit sha 215235633a2471ab164c16a2823d03d986a36efa
Allow sqrt to execute out of order
commit sha 649d06976bbf0c5ada180340abfa05c738dabb1e
Linearize leaf searches
commit sha 3740112a252a5b37489ff7b3ee0b2f7d513275e6
Use error-adjusted weighed average in voronoi
commit sha b9ceb0ce11e1b6e05d08f129862bcf53683c2b9b
Bump
commit sha 1176b319f91a1c1360a365358b63c34ccdaf9a05
Merge branch 'master' into msvc * master: Bump Use error-adjusted weighed average in voronoi Linearize leaf searches Allow sqrt to execute out of order End sooner when on the wrong track Remove IE6-bug workaround Support OpenMP in clang Deprecated std error initialize likely_colormap_index
push time in 2 days
push eventkornelski/cavif-rs
commit sha 3b90ef229e2608edc78814ab22974685b7b99692
Bump
push time in 2 days
push eventkornelski/cavif-rs
commit sha a95b3c285db85696999bf7f7eefd051680491d30
New args parser
push time in 2 days
issue commentImageOptim/mozjpeg-rust
Add mozjpeg-rust as encoder to image crate
image-rs is pure Rust. This crate is based on libjpeg-turbo, which is mostly C.
In the long term it would be cool to take SIMD-accelerated routines from libjpeg-turbo and replace C glue code with Rust, but that's a lot of work.
comment created time in 4 days
issue commentsindresorhus/Gifski
Show warning when framerate is set above 50 fps
Alternating frame delays are implemented and allow GIF to approximately specify any framerate it wants. That's separate from browsers actually honoring the choice. 60fps requires at least some frames to have delay=1, which isn't supported.
comment created time in 4 days
pull request commentsindresorhus/Gifski
Alert when opening a video may be too much, since user may not even intend to use 60fps.
I'd default the slider to 20fps (personally I think any higher framerate is too much for GIF), and display this warning only if user drags the slider to 60fps. After it's been displayed once, cap the slider to 50fps.
comment created time in 4 days
PR closed ImageOptim/mozjpeg-rust
Howdy,
This PR updates the dependencies for mozjpeg-sys and arrayvec, removes the features = ["union"] as that's now the default behavior, and adjusts those deps to be a bit more flexible for semver patch updates.
pr closed time in 4 days
pull request commentsindresorhus/Gifski
Alternative solution, which I think we've discussed previously, is to start the actual final conversion in the background, and use it for the estimate. When user presses start, instead of restarting, just reuse the in-progress conversion. This will have disadvantage of using frames from the beginning for the estimate, but OTOH it will make conversion seem faster, since it will get a head start.
comment created time in 5 days
pull request commentsindresorhus/Gifski
Looks good.
I see you're adding 10% just in case. I have an idea to make it more scientific: measure frame sizes in bytes, and compute standard deviation of frame sizes. If the deviation is large, then the estimate is uncertain and should be inflated. If all frame sizes are about the same, then the estimate is likely to be accurate.
comment created time in 5 days
pull request commentkornelski/vpsearch
Add examples for custom search methods
Thank you
comment created time in 5 days
push eventkornelski/vpsearch
commit sha 78692d31ad31387b423e18cc7b30aa2d46260001
Add example usage of radius based custom search and 'BestCandidate'
commit sha 222b9c75a73f9ca830cdbeee6b663f62cf376475
Add another example of knn custom search
commit sha 5b11a68b96b6f0d37c1fb05c01347ca284ea7d74
Ensure 'Distance' can be used in debug printing
commit sha 59d388ad1a0901edf08e305c49b5e311f3bdf52b
Remove the Debug and Default bounds on the Distance type
commit sha c8734ef036f5ae74062e8cd4d100165dba35f3dd
Merge pull request #3 from gijs-s/rust
push time in 5 days
PR merged kornelski/vpsearch
Thanks for the library! I found it really useful but thought it would be really nice to include some examples of the uses of find_nearest_custom, this pull request adds two new examples that can be used to find all the neighbours in a radius or the N nearest neighbours.
This also adds the Default and Debug traits to the Distance item, this makes it easier to build / debug these BestCandidate implementations.
This fixes: https://github.com/kornelski/vpsearch/issues/1
pr closed time in 5 days
issue closedkornelski/vpsearch
Is it possible to return at most N nearest neighbors?
According to the API doc, there is a find_nearest function. However, by default, it can only return the nearest neighbor node. How can I find out at most N nearest neighbors? This is import for interpolation.
closed time in 5 days
astrojhgupull request commentkornelski/vpsearch
Add examples for custom search methods
Thanks for the examples.
Unfortunately, addition of Default and Debug to the change of Distance bounds is a breaking change. I'd prefer to avoid breaking changes.
comment created time in 5 days
issue commentmmstick/cargo-deb
[Question] Specifying multiple packages in 'depends'
Comma-separated list should work. Can you specify what is not working?
comment created time in 6 days
issue commentrust-lang/cargo
Configurable directory for temp files that isn't the target dir
Related PRs:
https://github.com/rust-lang/cargo/pull/8686 https://github.com/rust-lang/cargo/pull/8063
comment created time in 7 days
issue commentkornelski/cavif-rs
[FR] Output to a specific filename+path
Indeed, it looks like unknown args fail like that. Thanks for pointing that out. I'll switch to a smarter arg parsing library.
comment created time in 8 days
Pull request review commentrust-lang/cargo
Mark temporary directories as excluded from macOS Spotlight
fn exclude_from_time_machine(path: &Path) { // Errors are ignored, since it's an optional feature and failure // doesn't prevent Cargo from working }++/// Absolute path to an on-disk temporary directory.+/// It may be system-wide or user-specific depending on system conventions.+/// Used in layout.rs, only needed on Unix systems.+#[cfg(unix)]+pub fn persistent_temp_path() -> Option<PathBuf> {+ #[cfg(target_os = "macos")]+ {+ // "Library/Caches" should be obtained via NSFileManager's+ // URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask+ // However, cocoa-foundation doesn't have bindings for it yet.+ // This path has remained stable for two decades,+ // so hardcode it for simplicity (dirs crate does the same).+ Some(home::home_dir()?.join("Library/Caches/Cargo"))+ }+ #[cfg(not(target_os = "macos"))]+ {+ // XDG standard+ if let Some(path) = env::var_os("XDG_CACHE_HOME") {+ let path = PathBuf::from(path);+ if path.is_absolute() {+ return Some(path.join("cargo"));+ }+ }+ // FHS standard+ // This is not using /tmp, because /tmp could be using ramfs.+ let path = Path::new("/var/tmp");+ if path.exists() {+ return Some(path.join("cargo"));+ }+ None
I think no crate can help you if your intention is to invent your own non-standard scheme anyway.
Jabs like that are unhelpful. Please don't do that.
comment created time in 8 days
PR opened atomashpolskiy/rustface
3-element vecs are not representative and make benchmarks noisy.
pr created time in 8 days
Pull request review commentrust-lang/cargo
Mark temporary directories as excluded from macOS Spotlight
fn exclude_from_time_machine(path: &Path) { // Errors are ignored, since it's an optional feature and failure // doesn't prevent Cargo from working }++/// Absolute path to an on-disk temporary directory.+/// It may be system-wide or user-specific depending on system conventions.+/// Used in layout.rs, only needed on Unix systems.+#[cfg(unix)]+pub fn persistent_temp_path() -> Option<PathBuf> {+ #[cfg(target_os = "macos")]+ {+ // "Library/Caches" should be obtained via NSFileManager's+ // URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask+ // However, cocoa-foundation doesn't have bindings for it yet.+ // This path has remained stable for two decades,+ // so hardcode it for simplicity (dirs crate does the same).+ Some(home::home_dir()?.join("Library/Caches/Cargo"))+ }+ #[cfg(not(target_os = "macos"))]+ {+ // XDG standard+ if let Some(path) = env::var_os("XDG_CACHE_HOME") {+ let path = PathBuf::from(path);+ if path.is_absolute() {+ return Some(path.join("cargo"));+ }+ }+ // FHS standard+ // This is not using /tmp, because /tmp could be using ramfs.+ let path = Path::new("/var/tmp");+ if path.exists() {+ return Some(path.join("cargo"));+ }+ None
I've considered using a library, but it this area is full of abandoned projects and half-abandoned forks, so I didn't see any suitable crate.
I think the best option would be to use a cargo-specific variable/setting for customizing this dir.
comment created time in 8 days
push eventsparkle-project/Sparkle
commit sha 7a8ead559b09b6be5d6997effd324c6367a7a51c
Clean up generate_keys/main.swift quite a bit - more comments, better output to console, cleaner error reporting
commit sha 741ec1a08b20d2dd1e6feb27e414122616805c40
Further cleanup generate_keys and its new "lookup-only mode".
commit sha 93e4fd9424ab174d3ad9c7a4c8d789188c6d0ff9
Fix generate_appcast so links to localized release notes are embedded as full URLs instead of unescaped filenames. This makes them load reliably in complex contexts (such as the presence of characters like spaces in the filenames).
commit sha 94d05336a6c59ebca6ed2c3ee5907a782b9a8692
Merge pull request #1664 from skelpo/improve-generator-tools
push time in 8 days
PR merged sparkle-project/Sparkle
This PR includes the following changes:
-
generate_keys/main.swiftreorganized somewhat and cleaned up significantly. The code has been heavily commented, failure messages are displayed consistently (and where the context allows, using ANSI color), error messages and informational text has been rewritten for grammar and clarity, and top-level code has been encapsulated in function context for consistency. The remaining vestiges of the abandoned "syncable keychain item" implementation have been removed. -
generate_keysnow has a "lookup mode", enabled by passing the-pflag on the command line. In this mode,generate_keyslooks up whether a key already exists - if so, it outputs the public key as a single line of Base64 and immediately exits with success; if not, an error is printed and it exits with failure. This mode is intended to assist other tools and scripts in retrieving the public signing key automatically, without having to hardcode Sparkle's keychain matching parameters or any assumptions about how the data in the keychain item is laid out. An obvious use of this would be in a shell script Xcode build phase which automatically updates the value ofSUPublicEDKeyin an app'sInfo.plist. -
generate_appcastnow generates full URLs for links to localized release notes in an appcast, utilizing the same logic used to generate the link to "base" release notes (use a release notes URL prefix if specified, otherwise use the feed URL if available). Previously, localized release notes links would be specified only as filenames. Before:
<sparkle:releaseNotesLink>https://bucket.s3.amazonaws.com/release%20notes-123.html</sparkle:releaseNotesLink>
<sparkle:releaseNotesLink xml:lang="de">release notes-123.de.html</sparkle:releaseNotesLink>
<sparkle:releaseNotesLink xml:lang="zh">release notes-123.zh.html</sparkle:releaseNotesLink>
After:
<sparkle:releaseNotesLink>https://bucket.s3.amazonaws.com/release%20notes-123.html</sparkle:releaseNotesLink>
<sparkle:releaseNotesLink xml:lang="de">https://bucket.s3.amazonaws.com/release%20notes-123.de.html</sparkle:releaseNotesLink>
<sparkle:releaseNotesLink xml:lang="zh">https://bucket.s3.amazonaws.com/release%20notes-123.zh.html</sparkle:releaseNotesLink>
This change guarantees that localized release notes always load correctly when applicable even when their filenames contain otherwise problematic characters such as spaces - previously, in many cases they would simply fail to load.
pr closed time in 8 days
pull request commentsparkle-project/Sparkle
Cleanup generate_keys and fix URLs for localized release notes
That's great. Thank you
comment created time in 8 days
issue commentkornelski/cavif-rs
[FR] Output to a specific filename+path
I don't understand. caviv -o file.avif file.jpg works.
comment created time in 8 days
Pull request review commentrust-lang/cargo
Mark temporary directories as excluded from macOS Spotlight
fn exclude_from_time_machine(path: &Path) { // Errors are ignored, since it's an optional feature and failure // doesn't prevent Cargo from working }++/// Absolute path to an on-disk temporary directory.+/// It may be system-wide or user-specific depending on system conventions.+/// Used in layout.rs, only needed on Unix systems.+#[cfg(unix)]+pub fn persistent_temp_path() -> Option<PathBuf> {+ #[cfg(target_os = "macos")]+ {+ // "Library/Caches" should be obtained via NSFileManager's+ // URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask+ // However, cocoa-foundation doesn't have bindings for it yet.+ // This path has remained stable for two decades,+ // so hardcode it for simplicity (dirs crate does the same).+ Some(home::home_dir()?.join("Library/Caches/Cargo"))+ }+ #[cfg(not(target_os = "macos"))]+ {+ // XDG standard+ if let Some(path) = env::var_os("XDG_CACHE_HOME") {+ let path = PathBuf::from(path);+ if path.is_absolute() {+ return Some(path.join("cargo"));+ }+ }+ // FHS standard+ // This is not using /tmp, because /tmp could be using ramfs.+ let path = Path::new("/var/tmp");+ if path.exists() {+ return Some(path.join("cargo"));+ }+ None
What "important" part do you mean?
I am afraid that touching XDG is going to attract bikeshed fiesta. I'm tempted to remove it for that reason, and go straight for /var/tmp instead.
comment created time in 8 days
push eventkornelski/rustface
commit sha 610284368107b3ef8de537dfb6e6b978acf05ab0
Use slices for image data
push time in 9 days
pull request commentatomashpolskiy/rustface
I'm not sure about speed, because I can't set a baseline in criterion. Hey, it's even same issue you've had: https://github.com/bheisler/criterion.rs/issues/193
comment created time in 9 days
PR opened atomashpolskiy/rustface
- Makes extend_from_slice manage img_buf's capacity, which avoids reallocations
- safe
copy_u8_to_i32generates the same assembly for the inner loop - ImageData can actually have a correct lifetime
pr created time in 9 days
push eventkornelski/rustface
commit sha 5d8a1f4c15e9807b6cd4cca71733460bafb46b7e
Use slices for image data
push time in 9 days
push eventkornelski/rustface
commit sha 3e71c3fab4efdf33a4e598dd5a6b5a875951528d
Update dependencies
commit sha 9c192ae1e6d5f2e66c61400528838fc6a1b78574
Edition 2018
commit sha 2a8a0c2ef1c8a9060ae4e716e128ae72a2413dfb
Safer function
commit sha 217e68148645d1cce51991578ceda40f4d395474
Read model from any stream, not just Vec
commit sha 04f8850e7861c5e4366e980dd09461a28d88b0ea
bumped version number
commit sha 444c92b0ad81a7b951d2fc5ae470ac937e67e308
Add feature to make use of rayon optional
commit sha e79db289c09b1b118e044f20a4c4e9e6a06d4c5d
Corrected feature flag section (feature list was incorrectly specified and ignored)
commit sha abbb569e3d96efaf7d017bc935122056843db7fe
updated Rayon version
commit sha 6ba002f9e10004df4916b624069c8448350acda6
DRYed out copied iterator chains
commit sha 315de474c6a656d2dc7694d1bda322175c110705
updated README
commit sha 678384fbbc5b61c63a4b35c59ac4175fbd484cdf
Added changelog and bumped version number
commit sha 304c46bcf55bd97e96fc773e3100df119d56a833
Update README.md
commit sha a812a0246c6b2e95787a0b5e9aefde7d2917ed65
Replace vector_inner_product with a safe function
commit sha 4fa6420cbccf1d2002ee0ecbb43f14e6ef27fc03
Mark pointer-dereferencing math functions as unsafe
commit sha 4e1fd981016773deeea17f965cb63c6e3e24f9a0
Replace square with a safe function
commit sha 1052cd080135ca57917f85b3b32cbf99f7b12e5c
updated README
commit sha e6cb75f752ba2a267dec44765e23516388a62144
Use slices for image data
push time in 9 days
issue commentbheisler/criterion.rs
error: Unrecognized option: 'save-baseline'
I've run into the same problem (rust 1.47, criterion = "0.3"), and the workaround doesn't seem to work.
If I run cargo bench, I get proper benchmarks. If I run cargo test --release --bench benchmarks, I get only a series of:
Testing <test name>
Success
Testing <another test name>
Success
`
and it ends immediately, without performing any actual benchmarking.
comment created time in 9 days
push eventkornelski/dssim
commit sha 159d623a55fe8ba9b27e381e6b30657080617678
Tiny fixes
push time in 9 days
push eventkornelski/dssim
commit sha 485b2241829d1ba6b373664fdc92dee301c28bf1
Move image loading to the lib part
push time in 9 days
push eventkornelski/dssim
commit sha 2855ed8073363c5d78a86e24a1c1db492e51e0b4
Bump
push time in 9 days
pull request commentrust-lang/rfcs
Let Cargo put data into platform-specific directories
I've started working on moving cache folders: https://github.com/rust-lang/cargo/pull/8686 It's quite tricky to make all the tests pass :/
comment created time in 9 days
push eventImageOptim/libimagequant
commit sha 1d3fdecadfbe3adf255894326fc402ad716e8ffe
End sooner when on the wrong track
commit sha 215235633a2471ab164c16a2823d03d986a36efa
Allow sqrt to execute out of order
commit sha 649d06976bbf0c5ada180340abfa05c738dabb1e
Linearize leaf searches
commit sha 3740112a252a5b37489ff7b3ee0b2f7d513275e6
Use error-adjusted weighed average in voronoi
push time in 10 days
issue closedImageOptim/gifski
Artifacts present in 1.2.0 that are not in 1.1.1
When converting a MP4 source to GIF with gifski 1.2.0 commandline program for mac, I get some jarring visual artifacts that are not present when converting the same file with gifski 1.1.1.
Input is 1080p@24FPS. I get the same types of artifacts with different output sizes and qualities.
This is a screenshot of the GIF playing in Chrome. I get similar artifacts with any other viewer.

closed time in 10 days
justinrugglesissue commentImageOptim/gifski
Artifacts present in 1.2.0 that are not in 1.1.1
Fixed in 1.2.2
comment created time in 10 days
issue closedImageOptim/gifski
Just tried the CLI, installed 1.2.0 via brew on MacOS 10.14.6
I was really confused, running this command gifski -o gifski-test.gif WaterOnlyFrame*.png, which showed like this in the Finder preview & Preview app

The png frames are 2418x1482 in size and at the bottom not cut like this. Then, while writing this issue I realized that the result is actually less cut than in Finder, though the last drop is still cut-off like shown here

& easier to catch in this slower one gifski -o gifski-test_fps2_small.gif -r 2 WaterOnlyFrame*.png

I would've expected it to be similar to the source frames in size, not cut off & better in colors, though I understand that the last one might be an issue with the translucent watercolory effect, as another one I tried is good in colors, just really small and cut off at the bottom as well, what am I doing wrong? 🤔
I thought it'll give me the same dimensions but I'm able to change that with the args opposed to it massively shrinking it and I have to "keep" it the expected size by setting the args.
Original png Frames

closed time in 10 days
CanRaupush eventkornelski/cargo
commit sha 3042ec68b6e5405ecdec73fc25f5fa99704d77e7
Add --name hint for `new` when package name is retricted
commit sha 9cda385ab327ff765f84193c85e4daf7e6d76b59
Test for --name hint
commit sha c00ad7922dee8882df1f39b93c0a56ce5ef20401
Fix test for windows reserved filename error message
commit sha f92961923b35d726e96c14d2dba88ffc4a0c36d4
Sweep unrelated message from unnecessary workspace infromation
commit sha 392b902f06dedaa4a8f514e7ad64c0bcefe1c7b3
Only `--path` and cwd crate installation need workspace info
commit sha 71cae39de00c39e0a903faf070d55675f3d792a0
Test for crate installation without emitting messages from cwd
commit sha 45cfd0cd126d08a3adbf8aa78e91bf6d122d5445
Fix formatting
commit sha a527caa24855ec3551281e91c8e1d7909e533254
test: check stderr containment explicitly
commit sha 2fbce89dd625bcd49ce7fd75f02d793ce0e1b658
Rephrase message of restricted crate name
commit sha c6fcb0e2efa74131cf456ddf8f3e26a5e65d5aad
Fix unintenional newline in stderr assertion
commit sha f110fd9fc1d8117143ce5e92be8871f588723fb1
Auto merge of #8681 - weihanglo:fix/redundant-messsage-local-crate-install, r=ehuss Sweep unrelated message from unnecessary workspace infromation Resolves #8619 Only pass workspace information when the source is from a local crate installation.
commit sha 2c10f2611f123c6964efe46711ad0b945891ee08
Auto merge of #8675 - weihanglo:fix/name-help, r=Eh2406 Add --name suggestion for cargo new Resolves #8613 Since `check_name` have already got a parameter to show name help, I reuse the logic and sync the behavior between `cargo init` and `cargo new`. The divergence seems to be intentionally made in #7959: _...Only print the --name suggestion for `cargo init`._ Feel free to discuss.
commit sha cb3f9f4046251347999c5e4e9524df24737504de
updated yank error message
commit sha 8d610e1d28c907bf33c40abed7e16ac735a4826b
Display formatted output for JSON diffing in tests.
commit sha 60151333640eb81408c8c4ed1af72a52b2a4a201
Auto merge of #8692 - yaymukund:improve-tests-json-diffing, r=alexcrichton Display formatted output for JSON diffing in tests. This affects all tests that use `validate_upload`. Before <img src="https://user-images.githubusercontent.com/590450/92583169-da972000-f289-11ea-9f27-f09071a023b1.png" width="400"> After <img src="https://user-images.githubusercontent.com/590450/92583195-e2ef5b00-f289-11ea-9ee5-a32f630a6472.png" width="400">
commit sha 51fa3a4d28c9cf9ebea6d7adef3a949025827ef9
--vers arg now required for yank cmd
commit sha 9efa0d55265a740d850ef2d5e6bec72014d497eb
Fix non-determinism with new feature resolver.
commit sha 7f44ba46d3de2e72da2b43ff42524db36326c700
Auto merge of #8701 - ehuss:unique-unit-dep-hash, r=alexcrichton Fix non-determinism with new feature resolver. This fixes a problem where Cargo was getting confused when two units were identical, but linked to different dependencies. Cargo generally assumes `Unit` is unique, but the new feature resolver can introduce a situation where two identical `Unit`s need to link to different dependencies. In particular, when building without the `--target` flag, the difference between a host unit and a target unit is not captured in the `Unit` structure. A dependency shared between normal dependencies and build dependencies can need to link to a second shared dependency whose features may be different. The solution here is to build the unit graph pretending that `--target` was specified. Then, after the graph has been built, a second pass replaces `CompileKind::Target(host)` with `CompileKind::Host`, and adds a hash of the dependencies to the `Unit` to ensure it stays unique when necessary. This is done to ensure that dependencies are shared if possible. I did a little performance testing, and I couldn't measure an appreciable difference. I also ran the tests in a loop for a few hours without problems. An alternate solution here is to assume `--target=host` if `--target` isn't specified, and then have some kind of backwards-compatible linking in the `target` directory to retain the old directory layout. However, this would result in building shared host/normal dependencies twice. For *most* projects, this isn't a problem. This already happens when `--target` is specified, or `--release` is used (due to #8500). I'm just being very cautious because in a few projects this can be a large increase in build times. Maybe some day in the future we can be more bold and force this division, but I'm a little hesitant to make that jump. Fixes #8549
commit sha 8777a6b1e8834899f51b7e09cc9b8d85b2417110
Auto merge of #8697 - Mikastiv:pr-8695, r=ehuss updated yank error message Fixes #8695
commit sha 157ed9f79a55212ac9c39b0c3aa3534c6411b45e
Add test for whitespace behavior in env flags.
push time in 10 days
created tagImageOptim/gifski
GIF encoder based on libimagequant (pngquant). Squeezes maximum possible quality from the awful GIF format.
created time in 10 days
push eventImageOptim/gifski
commit sha 7ecefd85ec7d061e3831da993e29060ebca3ba0e
Fix GIF size when the first frame has transparent edges
commit sha 08392458acf94abc6ab10b67b63caf30ba30192f
Update Rust gif crate
push time in 10 days
pull request commentsindresorhus/Gifski
Workaround macOS 11 issue with decoding some videos
Maybe ignore errors if they're less than x% of frames that succeeded?
comment created time in 10 days
PR opened atomashpolskiy/rustface
Criterion reports the replacements are faster.
pr created time in 11 days
pull request commentsindresorhus/Gifski
Workaround macOS 11 issue with decoding some videos
This does NOT fix the issue for me. In my case a decoding error also happens at 33% of the video.
comment created time in 12 days
pull request commentrust-lang/rust
linker: MSVC supports linking static libraries as a whole archive
There has been a user report that this change broke MSVC builds:
cl Compilateur d'optimisation Microsoft (R) C/C++ version 19.26.28806 pour x64 Copyright (C) Microsoft Corporation. Tous droits réservés.
link Microsoft (R) Incremental Linker Version 14.26.28806.0 Copyright (C) Microsoft Corporation. All rights reserved.
comment created time in 12 days
issue commentimazen/imageflow
imageflow server returns 500 for some jpegs
The error message suggests these are BMP files, not JPEGs.
comment created time in 12 days
Pull request review commentrust-lang/rust
Issue 72408 nested closures exponential
-error: reached the recursion limit while instantiating `test::<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Nil>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`+error: reached the recursion limit while instantiating `test::<Cons<Cons<Cons<Cons<Cons<...>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
It's tricky, because the part of the code that understands type's structures doesn't track its printed length. The part that truncates the text length doesn't understand the type.
comment created time in 13 days
Pull request review commentrust-lang/rust
Issue 72408 nested closures exponential
-error: reached the recursion limit while instantiating `test::<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Cons<Nil>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`+error: reached the recursion limit while instantiating `test::<Cons<Cons<Cons<Cons<Cons<...>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
Final truncation is based on number of characters (32 each side).
comment created time in 13 days
issue openedqarmin/czkawka
Find duplicate files without reading their full content
You could use approach of https://github.com/kornelski/dupe-krill to hash only as little as necessary, instead of hashing whole files.
created time in 14 days
created tagcrev-dev/cargo-crev
A cryptographically verifiable code review system for the cargo (Rust) package manager.
created time in 14 days
push eventcrev-dev/cargo-crev
commit sha 04c6d46c7f7ba5eebbc563214b45a400e8d800b4
Update deps
push time in 14 days