Commit Graph

37832 Commits

Author SHA1 Message Date
rust-bors[bot]
2807b75fa7 Auto merge of #150540 - JonathanBrouwer:incremental_test, r=cjgillot
Also hash spans inside the same file as relative (V2)

Hashes spans relatively to their parent, even if they are not contained inside their parent.

Fixes https://github.com/rust-lang/rust/issues/150400

Closes https://github.com/rust-lang/rust/pull/143882, as this is a successor PR
This PR is very closely based on that PR with a few minor changes, so to give proper credit I made @cjgillot coauthor of the commit.
2026-01-11 08:54:50 +00:00
rust-bors[bot]
b72f50f244 Auto merge of #146923 - oli-obk:comptime-reflect, r=BoxyUwU
Reflection MVP

I am opening this PR for discussion about the general design we should start out with, as there are various options (that are not too hard to transition between each other, so we should totally just pick one and go with it and reiterate later)

r? @scottmcm and @joshtriplett

project goal issue: https://github.com/rust-lang/rust-project-goals/issues/406
tracking issue: https://github.com/rust-lang/rust/issues/146922

The design currently implemented by this PR is

* `TypeId::info` (method, usually used as `id.info()` returns a `Type` struct
* the `Type` struct has fields that contain information about the type
* the most notable field is `kind`, which is a non-exhaustive enum over all possible type kinds and their specific information. So it has a `Tuple(Tuple)` variant, where the only field is a `Tuple` struct type that contains more information (The list of type ids that make up the tuple).
* To get nested type information (like the type of fields) you need to call `TypeId::info` again.
* There is only one language intrinsic to go from `TypeId` to `Type`, and it does all the work

An alternative design could be

* Lots of small methods (each backed by an intrinsic) on `TypeId` that return all the individual information pieces (size, align, number of fields, number of variants, ...)
* This is how C++ does it (see https://lemire.me/blog/2025/06/22/c26-will-include-compile-time-reflection-why-should-you-care/ and https://isocpp.org/files/papers/P2996R13.html#member-queries)
* Advantage: you only get the information you ask for, so it's probably cheaper if you get just one piece of information for lots of types (e.g. reimplementing size_of in terms of `TypeId::info` is likely expensive and wasteful)
* Disadvantage: lots of method calling (and `Option` return types, or "general" methods like `num_fields` returning 0 for primitives) instead of matching and field accesses
* a crates.io crate could implement `TypeId::info` in terms of this design

The backing implementation is modular enough that switching from one to the other is probably not an issue, and the alternative design could be easier for the CTFE engine's implementation, just not as nice to use for end users (without crates wrapping the logic)

One wart of this design that I'm fixing in separate branches is that `TypeId::info` will panic if used at runtime, while it should be uncallable
2026-01-10 15:00:14 +00:00
rust-bors[bot]
6373f9fc40 Auto merge of #150502 - petrochenkov:overglob, r=yaahc
resolve: Factor out and document the glob binding overwriting logic

Also, avoid creating fresh name declarations and overwriting declarations in modules to update some fields in `DeclData`, when possible.
Instead, change the fields directly in `DeclData` using cells.

Unblocks https://github.com/rust-lang/rust/pull/149195.
2026-01-10 05:03:09 +00:00
rust-bors[bot]
a405ba32cc Auto merge of #150818 - flip1995:clippy-subtree-update, r=Manishearth,samueltardieu
Clippy subtree update

r? Manishearth

Cargo.lock update due to askama bump to be in line with the Rust repo.
2026-01-09 22:04:59 +00:00
rust-bors[bot]
b11dffccd4 Auto merge of #150739 - weihanglo:update-cargo, r=weihanglo
Update cargo submodule

27 commits in 94c368ad2b9db0f0da5bdd8421cea13786ce4412..8c133afcd5e0d69932fe11f5907683723f8d361d
2025-12-26 19:39:15 +0000 to 2026-01-09 03:50:15 +0000
- Isolate build script metadata progation between std and non-std crates (rust-lang/cargo#16489)
- Add Clippy like lint groups (rust-lang/cargo#16464)
- feat: in-memory only `Manifest` (rust-lang/cargo#16409)
- Fixed incorrect version comparision during build script dependency selection (rust-lang/cargo#16486)
- refactor: new type for unit index (rust-lang/cargo#16485)
- feat(test): Make CARGO_BIN_EXE_ available at runtime  (rust-lang/cargo#16421)
- fix(package): detect dirty files when run from workspace member (rust-lang/cargo#16479)
- fix(timing)!: remove `--timings=<FMT>` optional format values (rust-lang/cargo#16420)
- docs(unstable): expand docs for `-Zbuild-analysis` (rust-lang/cargo#16476)
- test: add `-Zunstable-options` with custom targets (rust-lang/cargo#16467)
- feat(report): add cargo report rebuilds  (rust-lang/cargo#16456)
- feat(test-support): Use test name for dir when running tests (rust-lang/cargo#16121)
- refactor: Migrate some cases to expect/reason (rust-lang/cargo#16461)
- docs(build-script): clarify OUT_DIR is not cleaned between builds (rust-lang/cargo#16437)
- chore: Update dependencies (rust-lang/cargo#16460)
- Update handlebars to 6.4.0 (rust-lang/cargo#16457)
- chore(deps): update alpine docker tag to v3.23 (rust-lang/cargo#16454)
- Any build scripts can now use cargo::metadata=KEY=VALUE (rust-lang/cargo#16436)
- fix(log): add `dependencies` field to `UnitRegistered` (rust-lang/cargo#16448)
- Implement fine grain locking for `build-dir` (rust-lang/cargo#16155)
- feat(resolver): List features when no close match (rust-lang/cargo#16445)
- feat(report): new command `cargo report sessions` (rust-lang/cargo#16428)
- feat (patch): Display where the patch was defined in patch-related error messages (rust-lang/cargo#16407)
- test(build-rs): Reduce from 'build' to 'check' where possible (rust-lang/cargo#16444)
- feat(toml): TOML 1.1 parse support (rust-lang/cargo#16415)
- feat(report): support --manifest-path in `cargo report timings` (rust-lang/cargo#16441)
- fix(vendor): recursively filter git files in subdirectories (rust-lang/cargo#16439)
2026-01-09 15:35:19 +00:00
rust-bors[bot]
3d51d360e0 Auto merge of #150866 - GuillaumeGomez:rollup-puFKE8I, r=GuillaumeGomez
Rollup of 11 pull requests

Successful merges:

 - rust-lang/rust#150272 (docs(core): update `find()` and `rfind()` examples)
 - rust-lang/rust#150385 (fix `Expr::can_have_side_effects` for `[x; N]` style array literal and binary expressions)
 - rust-lang/rust#150561 (Finish transition from `semitransparent` to `semiopaque` for `rustc_macro_transparency`)
 - rust-lang/rust#150574 (Clarify `MoveData::init_loc_map`.)
 - rust-lang/rust#150762 (Use functions more in rustdoc GUI tests)
 - rust-lang/rust#150808 (rename the `derive_{eq, clone_copy}` features to `*_internals`)
 - rust-lang/rust#150816 (Fix trait method anchor disappearing before user can click on it)
 - rust-lang/rust#150821 (tests/ui/borrowck/issue-92157.rs: Remove (bug not fixed))
 - rust-lang/rust#150829 (make attrs actually use `Target::GenericParam`)
 - rust-lang/rust#150834 (Add tracking issue for `feature(multiple_supertrait_upcastable)`)
 - rust-lang/rust#150864 (The aarch64-unknown-none target requires NEON, so the docs were wrong.)

r? @ghost
2026-01-09 12:19:48 +00:00
Guillaume Gomez
2142b8be40 Rollup merge of #150864 - fix-aarch64-platform-docs, r=jdonszelmann
The aarch64-unknown-none target requires NEON, so the docs were wrong.

As discussed [on zulip](https://rust-lang.zulipchat.com/#narrow/channel/242906-t-compiler.2Farm/topic/aarch64-unknown-none.20platform.20docs/with/567045743), we think the docs for the aarch64-unknown-none target don't match the target spec.
2026-01-09 12:00:03 +01:00
Guillaume Gomez
afce6cd119 Rollup merge of #150834 - multiple_supertrait_upcastable-not-internal, r=Kivooeo
Add tracking issue for `feature(multiple_supertrait_upcastable)`

Move feature(multiple_supertrait_upcastable) to the actual feature gates section (from the internal feature gates section) and give it a tracking issue.

Tracking issue: rust-lang/rust#150833

Fixes https://github.com/rust-lang/rust/issues/150773

This feature is for the `multiple_supertrait_upcastable` lint, which was added as `unstable` without a tracking issue, but was placed in the internal feature gates section. This PR moves its listing to the actual feature gates section and gives it a tracking issue.

If the lint is intended to stay internal-only, then this can be changed to instead mark it as `internal` (and maybe close the tracking issue).
2026-01-09 12:00:03 +01:00
Guillaume Gomez
73902f74f4 Rollup merge of #150829 - fix_generic_param_target, r=JonathanBrouwer
make attrs actually use `Target::GenericParam`

currently attributes lower `GenericParam` -> `Target::Param` this PR fixes this, so that `GenericParam` is lowered to `Target::GenericParam`

r? @JonathanBrouwer
2026-01-09 12:00:02 +01:00
Guillaume Gomez
c3c1e1d139 Rollup merge of #150821 - remove-test, r=jackh726
tests/ui/borrowck/issue-92157.rs: Remove (bug not fixed)

The bug the test tests for is masked by the wrong `#[lang = "start"]` signature. If the signature is corrected, the test builds. But that is not because the bug is fixed, but because the test has been changed too much from the original reproducer. The original reproducer still ICE:s. See https://github.com/rust-lang/rust/issues/92157#issuecomment-3722060317.

But that's fine since in the latest compiler says:

> note: using internal features is not supported and expected to cause internal compiler errors when used incorrectly

So let's remove the test and close the issue as "won't fix". See https://github.com/rust-lang/rust/issues/92157#issuecomment-3725036997.

r? @JohnTitor since you added the test in https://github.com/rust-lang/rust/pull/106878
2026-01-09 12:00:02 +01:00
Guillaume Gomez
5063e1b0bf Rollup merge of #150816 - method-anchor, r=camelid
Fix trait method anchor disappearing before user can click on it

A good example of this bug is going to https://doc.rust-lang.org/nightly/nightly-rustc/rustc_hir_analysis/collect/struct.ItemCtxt.html#impl-HirTyLowerer%3C'tcx%3E-for-ItemCtxt%3C'tcx%3E, and then try to click on the `§` anchor of the `tcx` method.

The solution to this bug is to simply "glue" the anchor to the method, so when the mouse cursor moves to it, there is no gap between the two, preventing the anchor to disappear (hopefully this explanation doesn't make sense only to me ^^').

First commit fixes the bug by expanding the anchor size.
Second commit is a small clean-up of the GUI test.
Third commit actually adds the GUI regression test.

cc @BoxyUwU
r? @camelid
2026-01-09 12:00:01 +01:00
Guillaume Gomez
1e56307066 Rollup merge of #150808 - derive-internals, r=jhpratt
rename the `derive_{eq, clone_copy}` features to `*_internals`

Features like `derive_from` and `derive_coerce_pointee` refer to actual unstable derive macros, but the `derive_eq` and `derive_clone_copy` features are internal hacks. Rename them accordingly by adding the suffix `_internals`.
2026-01-09 12:00:00 +01:00
Guillaume Gomez
b69ba8111f Rollup merge of #150762 - cleanup-gui, r=lolbinarycat
Use functions more in rustdoc GUI tests

Now that conditions are supported in `browser-ui-test`, we can start simplify some parts of the tests. This is a first cleanup, but I guess a lot more could be simplified. For follow-ups I guess. :)

I made some improvements in backtrace display in `browser-ui-test`, hence the version update once more.

r? @lolbinarycat
2026-01-09 12:00:00 +01:00
Guillaume Gomez
5ee051fe87 Rollup merge of #150574 - MoveData-init_loc_map, r=cjgillot
Clarify `MoveData::init_loc_map`.

Change the `SmallVec` size from 4 to 1, because that's sufficient in the vast majority of cases. (This doesn't affect performance in practice, so it's more of a code clarity change than a performance change.)

r? @cjgillot
2026-01-09 11:59:59 +01:00
Guillaume Gomez
885a19c729 Rollup merge of #150561 - semiopaque, r=BoxyUwU
Finish transition from `semitransparent` to `semiopaque` for `rustc_macro_transparency`

Since it's a bit annoying to have different names for the same thing.

My understanding is that this is just internal stuff that is not part of any public API even tough rust-analyzer knows about it.

Continuation of
- https://github.com/rust-lang/rust/pull/139084.

Discovered while investigating
- https://github.com/rust-lang/rust/issues/150514
2026-01-09 11:59:59 +01:00
Guillaume Gomez
17f82485ee Rollup merge of #150385 - fix-expr-can-have-side-effects, r=jdonszelmann,samueltardieu
fix `Expr::can_have_side_effects` for `[x; N]` style array literal and binary expressions

AFAIK `[0; 3]` is basically a syntax sugar for `[0, 0, 0]` so it should return whether the repeat's element can have side effects, like what it does on arrays.
And it seems that the rule for unary operators and indexings can be applied to binary operators as well.
2026-01-09 11:59:58 +01:00
Guillaume Gomez
3eef439dba Rollup merge of #150272 - doc/improve-iter-find-docs, r=scottmcm
docs(core): update `find()` and `rfind()` examples

[find()](https://doc.rust-lang.org/std/iter/trait.Iterator.html) has a missing example. In the docs there is mention of an example with double reference but it doesn't exist.

<img width="1476" height="1229" alt="image" src="https://github.com/user-attachments/assets/b99062ed-3a47-4b87-8e0c-58afd7de1332" />

[rfind()](https://doc.rust-lang.org/core/iter/trait.DoubleEndedIterator.html#method.rfind) is also very similar to `find()`, however it has the double reference example and no owned value example like `find()` does.

<img width="1473" height="1163" alt="image" src="https://github.com/user-attachments/assets/7977ae5c-9888-4513-8dfc-a7c03c7ef072" />

This commit adds the missing examples and making them look consistent.
2026-01-09 11:59:57 +01:00
rust-bors[bot]
bef8050b59 Auto merge of #148545 - cramertj:alloc-map, r=Amanieu
Add allocator parameter to HashMap

Hashbrown support originally added in https://github.com/rust-lang/hashbrown/pull/133
Part of https://github.com/rust-lang/wg-allocators/issues/7

~See also: hashset support in https://github.com/rust-lang/rust/pull/148550~ (Edit: merged into this PR for crater)
2026-01-08 20:22:35 +00:00
Martin Nordholts
72a6823f8b rust-analyzer: Also use semiopaque instead of semitransparent
Like in rustc.
2026-01-08 19:14:45 +01:00
rust-bors[bot]
7b16f3e24d Auto merge of #150538 - Kobzol:dist-cg-gcc-component, r=jieyouxu
Add a dist component for cg_gcc

try-job: dist-x86_64-linux
2026-01-08 09:53:23 +00:00
rust-bors[bot]
aea42e3bfd Auto merge of #148339 - folkertdev:naked-macos-private-extern, r=Amanieu
naked functions: emit `.private_extern` on macos

fixes https://github.com/rust-lang/rust/issues/148307

Emit `.private_extern` on macos when the naked function uses `Linkage::Internal`. Failing to do so can cause issues with LTO.

The documentation on this directive is kind of sparse, but I believe this is at least not incorrect, and does fix the issue.

r? @Amanieu
cc @bjorn3
2026-01-07 20:38:46 +00:00
bors
f7e2c1e048 Auto merge of #147893 - fee1-dead-contrib:constheapheapheap, r=oli-obk
`Vec::push` in consts MVP

Example:

```rust
const X: &'static [u32] = {
    let mut v = Vec::with_capacity(6);
    let mut x = 1;
    while x < 42 {
        v.push(x);
        x *= 2;
    }
    assert!(v.len() == 6);
    v.const_make_global()
};

assert_eq!([1, 2, 4, 8, 16, 32], X);
```

Oh this is fun...

* We split out the implementation of `Global` such that it calls `intrinsics::const_allocate` and `intrinsics::const_deallocate` during compile time. This is achieved using `const_eval_select`
* This allows us to `impl const Allocator for Global`
* We then constify everything necessary for `Vec::with_capacity` and `Vec::push`.
* Added `Vec::const_make_global` to leak and intern the final value via `intrinsics::const_make_global`. If we see any pointer in the final value of a `const` that did not call `const_make_global`, we error as implemented in rust-lang/rust#143595.

r? `@rust-lang/wg-const-eval`

To-do for me:
* [x] Assess the rustdoc impact of additional bounds in the method
* [x] ~~Increase test coverage~~ I think this is enough for an unstable feature.
2026-01-06 11:39:17 +00:00
bors
d776d9e484 Auto merge of #150640 - AprilNEA:mgca-merge-associated-const-equality, r=BoxyUwU
Merge `associated_const_equality` feature gate into MGCA

Tracking Issues: rust-lang/rust#132980 rust-lang/rust#92827

Merge `associated_const_equality`(ACE) feature gate into `min_generic_const_args`(MGCA).

- Replaces `features().associated_const_equality()` checks with `features().min_generic_const_args()`
- Updates the parser to gate associated const equality under `min_generic_const_args`
- Moves `associated_const_equality` to the removed features list
- Removes the `associated_const_equality` method from the `Features` trait
- Updates all affected tests and tools (rust-analyzer, clippy)

Closes rust-lang/rust#150617

r? `@BoxyUwU`
2026-01-06 01:36:53 +00:00
bors
58d77bb882 Auto merge of #150702 - lnicola:sync-from-ra, r=lnicola
`rust-analyzer` subtree update

Subtree update of `rust-analyzer` to 6a1246b69c.

Created using https://github.com/rust-lang/josh-sync.

r? `@ghost`
2026-01-05 22:21:47 +00:00
bors
7d4a5b7564 Auto merge of #150535 - Kobzol:rename-ci-gcc, r=jieyouxu
Rename the gcc component to gcc-dev

In preparation for https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Safe.20rustup.20distribution.20of.20rustc_codegen_gcc/with/565801325.

try-job: dist-x86_64-linux
2026-01-05 05:02:20 +00:00
AprilNEA
820bfac635 Merge associated_const_equality feature gate into MGCA
This removes `associated_const_equality` as a separate feature gate and makes it part of `min_generic_const_args` (mgca).

Key changes:
  - Remove `associated_const_equality` from unstable features, add to removed
  - Update all test files to use `min_generic_const_args` instead
  - Preserve the original "associated const equality is incomplete" error message by specially handling `sym::associated_const_equality` spans in `feature_gate.rs`
  - Rename FIXME(associated_const_equality) to FIXME(mgca)
2026-01-05 12:31:42 +08:00
Chayim Refael Friedman
6a1246b69c Merge pull request #21403 from ShoyuVanilla/missing-assoc-specialize
fix: Suppress false positive missing assoc item diag on specialization
2026-01-05
2026-01-04 18:36:03 +00:00
Shoyu Vanilla
ee12c4021a fix: Suppress false positive missing assoc item diag on specialization 2026-01-05 02:16:12 +09:00
Shoyu Vanilla (Flint)
3493b4cb64 Merge pull request #21369 from A4-Tacks/migrate-move-guard
Migrate `move_arm_cond_to_match_guard` assist to use `SyntaxEditor`
2026-01-04 15:41:17 +00:00
Lukas Wirth
87536b0081 Merge pull request #21401 from Veykril/push-optyvyworqny
Add a README.md to proc-macro-srv-cli
2026-01-04 11:18:25 +00:00
Lukas Wirth
dc36ad329f Add a README.md to proc-macro-srv-cli 2026-01-04 12:09:44 +01:00
Lukas Wirth
697b16554c Merge pull request #21400 from Veykril/push-kslvlxlpmwwu
internal: Clean up proc-macro-srv callback trait
2026-01-04 10:55:28 +00:00
Lukas Wirth
148028ba33 internal: Clean up proc-macro-srv callback trait 2026-01-04 11:46:34 +01:00
Lukas Wirth
13d71e07b6 Merge pull request #21397 from Shourya742/2026-01-03-fix-source-text
Fix source text
2026-01-04 09:38:15 +00:00
bors
fece728bfe Auto merge of #150595 - antonilol:deque_extend_front_prepend_drain_spec, r=jhpratt
Add specialization for `deque1.prepend(deque2.drain(range))` (VecDeque::prepend and extend_front)

Tracking issue: rust-lang/rust#146975

This specialization makes sure `deque1.prepend(deque2.drain(..))` gets similar speed to `deque1.append(&mut deque2)`. `deque1.prepend(deque2.drain(..))` is the equivalent of `deque1.append(&mut deque2)` but appending to the front (see the [second example of prepend](https://doc.rust-lang.org/nightly/std/collections/struct.VecDeque.html#method.prepend), prepend is from the same tracking issue).
2026-01-04 05:21:49 +00:00
bit-aloo
41f424522b remove serde from span 2026-01-03 20:13:41 +05:30
bit-aloo
49c15b2eeb remove span related API from proc-macro-srv/cli/api and remove span from procmacrosrvcli 2026-01-03 20:10:00 +05:30
bit-aloo
89831ff809 Add span to callbacks and correct the source_text implementation 2026-01-03 19:18:36 +05:30
bit-aloo
cff51826dd refactor subreq/resp variants to carry span 2026-01-03 19:15:42 +05:30
bit-aloo
eef4f3d24c add span to proc-macro-srv-cliy 2026-01-03 19:13:06 +05:30
bit-aloo
c7f8f6b557 added serde to span 2026-01-03 19:06:26 +05:30
bit-aloo
c129572c67 Replace sourcedb with expanddb 2026-01-03 19:04:35 +05:30
Lukas Wirth
0b0d29933a Merge pull request #21396 from Veykril/push-vowxzulyqvuu
perf: Only compute lang items for `#![feature(lang_items)]` crates
2026-01-03 10:15:06 +00:00
Lukas Wirth
8facf7344d perf: Only compute lang items for #![feature(lang_items)] crates 2026-01-03 11:06:33 +01:00
Lukas Wirth
036c71ad81 Merge pull request #21377 from Shourya742/2025-12-31-add-more-proc-macro-bidirectional-flow
proc-macro-srv: support file and local_file via bidirectional callbacks
2026-01-03 10:05:23 +00:00
bit-aloo
26b3c82562 use fullpath instead of filename 2026-01-03 15:13:53 +05:30
Lukas Wirth
e3268f7405 Merge pull request #21391 from Veykril/push-zttspnlnqpto
internal: Reduce `impl_signature` query dependencies in method resolution
2026-01-03 09:37:31 +00:00
Lukas Wirth
8f5634af33 Merge pull request #21393 from benodiwal/fix/generic-param-inlay-hint-location-links
feat: Add location links for generic parameter type hints
2026-01-03 09:32:40 +00:00
bors
176fb3d042 Auto merge of #145948 - a4lg:riscv-stabilize-target-features-v2, r=Amanieu
Stabilize 29 RISC-V target features (`riscv_ratified_v2`)

This commit stabilizes RISC-V target features with following constraints:

*   Describes a ratified extension.
*   Implemented on Rust 1.88.0 or before.
    Waiting for four+ version cycles seems sufficient.
*   Does not disrupt current rustc's target feature (cf. rust-lang/rust#140570) + ABI (cf. rust-lang/rust#132618) handling.
    It excludes `E` and all floating point-arithmetic extensions.  The `Zfinx` family does not involve floating point registers but not stabilizing for now to avoid possible confusion between the `F` extension family.
*   Not vector-related (floating point and integer).
    While integer vector subsets should not cause any ABI issues (as they don't use ABI-dependent floating point registers), we need to discuss before stabilizing them.
*   Supported by the lowest LLVM version supported by rustc (LLVM 20).

List of target features to be stabilized:

1.  `b`
2.  `za64rs` (no-RT)
3.  `za128rs` (no-RT)
4.  `zaamo`
5.  `zabha`
6.  `zacas`
7.  `zalrsc`
8.  `zama16b` (no-RT)
9.  `zawrs`
10.  `zca`
11. `zcb`
12. `zcmop`
13. `zic64b` (no-RT)
14. `zicbom`
15. `zicbop` (no-RT)
16. `zicboz`
17. `ziccamoa` (no-RT)
18. `ziccif` (no-RT)
19. `zicclsm` (no-RT)
20. `ziccrse` (no-RT)
21. `zicntr`
22. `zicond`
23. `zicsr`
24. `zifencei`
25. `zihintntl`
26. `zihintpause`
27. `zihpm`
28. `zimop`
29. `ztso`

Of which, 20 of them (29 minus 9 "no-RT" target features) support runtime detection through `std::arch::is_riscv_feature_detected!()`.

Corresponding PR for the Reference: rust-lang/reference#1987
2026-01-03 07:26:35 +00:00
bit-aloo
3bae2c75c3 emit same info via localfilename and filename 2026-01-03 09:12:32 +05:30