mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-07 18:21:16 -03:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a2c5b2a567 | ||
|
|
18295f4402 | ||
|
|
443fd604cc | ||
|
|
9e022ff7cf | ||
|
|
aba927054f |
@@ -1,3 +1,10 @@
|
|||||||
|
fish 4.3.1 (released December 28, 2025)
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
This release fixes the following problem identified in 4.3.0:
|
||||||
|
|
||||||
|
- Possible crash after expanding an abbreviation (:issue:`12223`).
|
||||||
|
|
||||||
fish 4.3.0 (released December 28, 2025)
|
fish 4.3.0 (released December 28, 2025)
|
||||||
=======================================
|
=======================================
|
||||||
|
|
||||||
|
|||||||
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -152,7 +152,7 @@ checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fish"
|
name = "fish"
|
||||||
version = "4.3.0"
|
version = "4.3.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"cc",
|
"cc",
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ debug = true
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "fish"
|
name = "fish"
|
||||||
version = "4.3.0"
|
version = "4.3.1"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
rust-version.workspace = true
|
rust-version.workspace = true
|
||||||
default-run = "fish"
|
default-run = "fish"
|
||||||
|
|||||||
@@ -86,9 +86,10 @@ sed -i \
|
|||||||
CommitVersion() {
|
CommitVersion() {
|
||||||
sed -i "s/^version = \".*\"/version = \"$1\"/g" Cargo.toml
|
sed -i "s/^version = \".*\"/version = \"$1\"/g" Cargo.toml
|
||||||
cargo fetch --offline
|
cargo fetch --offline
|
||||||
# debchange is a Debian script to manage the Debian changelog, but
|
if [ "$1" = "$version" ]; then
|
||||||
# it's too annoying to install everywhere. Just do it by hand.
|
# debchange is a Debian script to manage the Debian changelog, but
|
||||||
cat - contrib/debian/changelog > contrib/debian/changelog.new <<EOF
|
# it's too annoying to install everywhere. Just do it by hand.
|
||||||
|
cat - contrib/debian/changelog > contrib/debian/changelog.new <<EOF
|
||||||
fish (${version}-1) stable; urgency=medium
|
fish (${version}-1) stable; urgency=medium
|
||||||
|
|
||||||
* Release of new version $version.
|
* Release of new version $version.
|
||||||
@@ -98,8 +99,10 @@ fish (${version}-1) stable; urgency=medium
|
|||||||
-- $committer $(date -R)
|
-- $committer $(date -R)
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
mv contrib/debian/changelog.new contrib/debian/changelog
|
mv contrib/debian/changelog.new contrib/debian/changelog
|
||||||
git add CHANGELOG.rst Cargo.toml Cargo.lock contrib/debian/changelog
|
git add contrib/debian/changelog
|
||||||
|
fi
|
||||||
|
git add CHANGELOG.rst Cargo.toml Cargo.lock
|
||||||
git commit -m "$2
|
git commit -m "$2
|
||||||
|
|
||||||
Created by ./build_tools/release.sh $version"
|
Created by ./build_tools/release.sh $version"
|
||||||
@@ -296,6 +299,8 @@ milestone_number() {
|
|||||||
gh_api_repo milestones/"$(milestone_number "$milestone_version")" \
|
gh_api_repo milestones/"$(milestone_number "$milestone_version")" \
|
||||||
--method PATCH --raw-field state=closed
|
--method PATCH --raw-field state=closed
|
||||||
|
|
||||||
|
next_minor_version=$(echo "$minor_version" |
|
||||||
|
awk -F. '{ printf "%s.%s", $1, $2+1 }')
|
||||||
if [ -z "$(milestone_number "$next_minor_version")" ]; then
|
if [ -z "$(milestone_number "$next_minor_version")" ]; then
|
||||||
gh_api_repo milestones --method POST \
|
gh_api_repo milestones --method POST \
|
||||||
--raw-field title="fish $next_minor_version"
|
--raw-field title="fish $next_minor_version"
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
fish (4.3.1-1) stable; urgency=medium
|
||||||
|
|
||||||
|
* Release of new version 4.3.1.
|
||||||
|
|
||||||
|
See https://github.com/fish-shell/fish-shell/releases/tag/4.3.1 for details.
|
||||||
|
|
||||||
|
-- Johannes Altmanninger <aclopte@gmail.com> Sun, 28 Dec 2025 16:54:44 +0100
|
||||||
|
|
||||||
fish (4.3.0-1) stable; urgency=medium
|
fish (4.3.0-1) stable; urgency=medium
|
||||||
|
|
||||||
* Release of new version 4.3.0.
|
* Release of new version 4.3.0.
|
||||||
|
|||||||
@@ -19,11 +19,25 @@ pub fn count_newlines(s: &wstr) -> usize {
|
|||||||
count
|
count
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn is_prefix(mut lhs: impl Iterator<Item = char>, mut rhs: impl Iterator<Item = char>) -> bool {
|
||||||
|
loop {
|
||||||
|
match (lhs.next(), rhs.next()) {
|
||||||
|
(None, _) => return true,
|
||||||
|
(Some(_), None) => return false,
|
||||||
|
(Some(lhs), Some(rhs)) => {
|
||||||
|
if lhs != rhs {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Test if a string prefixes another without regard to case. Returns true if a is a prefix of b.
|
/// Test if a string prefixes another without regard to case. Returns true if a is a prefix of b.
|
||||||
pub fn string_prefixes_string_case_insensitive(proposed_prefix: &wstr, value: &wstr) -> bool {
|
pub fn string_prefixes_string_case_insensitive(proposed_prefix: &wstr, value: &wstr) -> bool {
|
||||||
let mut proposed_prefix = lowercase(proposed_prefix.chars());
|
let proposed_prefix = lowercase(proposed_prefix.chars());
|
||||||
let value = lowercase(value.chars());
|
let value = lowercase(value.chars());
|
||||||
proposed_prefix.by_ref().zip(value).all(|(a, b)| a == b) && proposed_prefix.next().is_none()
|
is_prefix(proposed_prefix, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn string_prefixes_string_maybe_case_insensitive(
|
pub fn string_prefixes_string_maybe_case_insensitive(
|
||||||
@@ -48,9 +62,9 @@ pub fn strip_executable_suffix(path: &wstr) -> Option<&wstr> {
|
|||||||
|
|
||||||
/// Test if a string is a suffix of another.
|
/// Test if a string is a suffix of another.
|
||||||
pub fn string_suffixes_string_case_insensitive(proposed_suffix: &wstr, value: &wstr) -> bool {
|
pub fn string_suffixes_string_case_insensitive(proposed_suffix: &wstr, value: &wstr) -> bool {
|
||||||
let mut proposed_suffix = lowercase_rev(proposed_suffix.chars());
|
let proposed_suffix = lowercase_rev(proposed_suffix.chars());
|
||||||
let value = lowercase_rev(value.chars());
|
let value = lowercase_rev(value.chars());
|
||||||
proposed_suffix.by_ref().zip(value).all(|(a, b)| a == b) && proposed_suffix.next().is_none()
|
is_prefix(proposed_suffix, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Test if a string prefixes another. Returns true if a is a prefix of b.
|
/// Test if a string prefixes another. Returns true if a is a prefix of b.
|
||||||
@@ -573,6 +587,8 @@ macro_rules! validate {
|
|||||||
validate!("İ", "i\u{307}_", true);
|
validate!("İ", "i\u{307}_", true);
|
||||||
validate!("i\u{307}", "İ", true); // prefix is longer
|
validate!("i\u{307}", "İ", true); // prefix is longer
|
||||||
validate!("i", "İ", true);
|
validate!("i", "İ", true);
|
||||||
|
validate!("gs", "gs_", true);
|
||||||
|
validate!("gs_", "gs", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
@@ -590,6 +606,8 @@ macro_rules! validate {
|
|||||||
validate!("İ", "i\u{307}", true); // suffix is longer
|
validate!("İ", "i\u{307}", true); // suffix is longer
|
||||||
validate!("İ", "_İ", true);
|
validate!("İ", "_İ", true);
|
||||||
validate!("i", "_İ", false);
|
validate!("i", "_İ", false);
|
||||||
|
validate!("gs", "_gs", true);
|
||||||
|
validate!("_gs ", "gs", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
Reference in New Issue
Block a user