Skip to content

Complete French & Turkish translations - #776

Merged
mrjimenez merged 1 commit into
amule-project:masterfrom
cardpuncher:master
May 31, 2026
Merged

Complete French & Turkish translations#776
mrjimenez merged 1 commit into
amule-project:masterfrom
cardpuncher:master

Conversation

@cardpuncher

Copy link
Copy Markdown
Contributor

No description provided.

@mrjimenez
mrjimenez merged commit 5870c22 into amule-project:master May 31, 2026
7 checks passed
got3nks added a commit to got3nks/amule that referenced this pull request Jun 4, 2026
…ndex

Adds 55+ merged PRs to the 3.0.0 changelog since the last update
(amule-project#747, 2026-05-27). Narrative additions cover:

- Packaging: expanded the top list to include the macOS per-arch .app
  bundles and the Windows NSIS installer alongside the existing
  AppImage / Flatpak / .dmg / .zip entries. New bullets for amule-project#785
  (alc/alcc/cas/wxcas everywhere + Windows amuleweb), amule-project#794 (.dmg
  amuleweb path), amule-project#789 (<OS>-<arch> artifact naming), amule-project#780 / amule-project#796
  (Windows DPI + comctl32 manifest), amule-project#784 (FHS share/amule paths).

- Bug Fixes & Stability: post-amule-project#744 fixes including EC notification
  leak (amule-project#797), big-library scaling (amule-project#736, amule-project#840 superseding amule-project#728),
  amulegui ghost entries (amule-project#810, amule-project#819, amule-project#841, amule-project#824, amule-project#830, amule-project#760),
  PartFile early hash (amule-project#762), server protocol fixes (amule-project#835, amule-project#788,
  amule-project#721, amule-project#787), crypto stream UB (amule-project#779), UAF prevention (amule-project#756),
  Kad rotation (amule-project#795, amule-project#799/amule-project#805), GTK warning silencing (amule-project#833,
  amule-project#826/amule-project#836), and the clang-tidy worklist (amule-project#770, amule-project#772-amule-project#774).

- Translations: late-cycle wave covering French/Turkish manpages
  (amule-project#753/amule-project#754/amule-project#776), Galician (amule-project#763), Slovenian (amule-project#771), pt-BR
  (amule-project#768/amule-project#775/amule-project#812), French (amule-project#811), plus man-page tooling for
  date+version drift (amule-project#802).

- Contributors: added ngosang for UX feedback on the late-3.0
  cycle (amule-project#817/amule-project#818/amule-project#821/amule-project#828/amule-project#844) and ongoing work on the
  user-facing manual at amule-org.github.io.

- Merged PRs flat index: extended with amule-project#746-amule-project#845 + amule-project#841.
got3nks added a commit to got3nks/amule that referenced this pull request Jun 4, 2026
…ndex

Adds 55+ merged PRs to the 3.0.0 changelog since the last update
(amule-project#747, 2026-05-27). Narrative additions cover:

- Packaging: expanded the top list to include the macOS per-arch .app
  bundles and the Windows NSIS installer alongside the existing
  AppImage / Flatpak / .dmg / .zip entries. New bullets for amule-project#785
  (alc/alcc/cas/wxcas everywhere + Windows amuleweb), amule-project#794 (.dmg
  amuleweb path), amule-project#789 (<OS>-<arch> artifact naming), amule-project#780 / amule-project#796
  (Windows DPI + comctl32 manifest), amule-project#784 (FHS share/amule paths).

- Bug Fixes & Stability: post-amule-project#744 fixes including EC notification
  leak (amule-project#797), big-library scaling (amule-project#736, amule-project#840 superseding amule-project#728),
  amulegui ghost entries (amule-project#810, amule-project#819, amule-project#841, amule-project#824, amule-project#830, amule-project#760),
  PartFile early hash (amule-project#762), server protocol fixes (amule-project#835, amule-project#788,
  amule-project#721, amule-project#787), crypto stream UB (amule-project#779), UAF prevention (amule-project#756),
  Kad rotation (amule-project#795, amule-project#799/amule-project#805), GTK warning silencing (amule-project#833,
  amule-project#826/amule-project#836), and the clang-tidy worklist (amule-project#770, amule-project#772-amule-project#774).

- Translations: late-cycle wave covering French/Turkish manpages
  (amule-project#753/amule-project#754/amule-project#776), Galician (amule-project#763), Slovenian (amule-project#771), pt-BR
  (amule-project#768/amule-project#775/amule-project#812), French (amule-project#811), plus man-page tooling for
  date+version drift (amule-project#802).

- Contributors: added ngosang for UX feedback on the late-3.0
  cycle (amule-project#817/amule-project#818/amule-project#821/amule-project#828/amule-project#844) and ongoing work on the
  user-facing manual at amule-org.github.io.

- Merged PRs flat index: extended with amule-project#746-amule-project#845 + amule-project#841.
mrjimenez pushed a commit that referenced this pull request Jun 4, 2026
Adds 55+ merged PRs to the 3.0.0 changelog since the last update
(#747, 2026-05-27). Narrative additions cover:

- Packaging: expanded the top list to include the macOS per-arch .app
  bundles and the Windows NSIS installer alongside the existing
  AppImage / Flatpak / .dmg / .zip entries. New bullets for #785
  (alc/alcc/cas/wxcas everywhere + Windows amuleweb), #794 (.dmg
  amuleweb path), #789 (<OS>-<arch> artifact naming), #780 / #796
  (Windows DPI + comctl32 manifest), #784 (FHS share/amule paths).

- Bug Fixes & Stability: post-#744 fixes including EC notification
  leak (#797), big-library scaling (#736, #840 superseding #728),
  amulegui ghost entries (#810, #819, #841, #824, #830, #760),
  PartFile early hash (#762), server protocol fixes (#835, #788,
  #721, #787), crypto stream UB (#779), UAF prevention (#756),
  Kad rotation (#795, #799/#805), GTK warning silencing (#833,
  #826/#836), and the clang-tidy worklist (#770, #772-#774).

- Translations: late-cycle wave covering French/Turkish manpages
  (#753/#754/#776), Galician (#763), Slovenian (#771), pt-BR
  (#768/#775/#812), French (#811), plus man-page tooling for
  date+version drift (#802).

- Contributors: added ngosang for UX feedback on the late-3.0
  cycle (#817/#818/#821/#828/#844) and ongoing work on the
  user-facing manual at amule-org.github.io.

- Merged PRs flat index: extended with #746-#845 + #841.
got3nks added a commit to got3nks/amule that referenced this pull request Aug 3, 2026
amule-project#776)

CFileEncoderMap becomes a std::vector kept sorted by ECID instead of a std::map. Lookup becomes a binary search, iteration a linear scan, and structural change a merge or a compaction rather than a per-node insert or erase.

The hypothesis was that the GET_UPDATE walk was dominated by chasing red-black-tree pointers. That was wrong. Measured on a production daemon with 1206 shared files, over 66 windows against 22 in a matched band of 26-38 peers: `sync` 0.260 -> 0.190 ms (-27%), `walk` 0.340 -> 0.350 ms (+3%), and `rest` -- untouched, the control -- 0.600 -> 0.495 ms. The walk did not improve, and since the control moved 17% in the same window the two runs are not on equal footing even at matched peer count.

The walk turns out to track peer count despite iterating a fixed 1206 files (0.15 ms at 5-15 peers rising to 0.44 ms at 39-47). It is memory-bound, but the misses are on the encoder and CKnownFile objects, whose cache residency the per-peer tag building destroys between polls -- not on the container. Making the spine contiguous does not help when each entry immediately dereferences two unrelated heap addresses. Moving the CKnownFile pointer and the sent-with-detail flag into the vector entry would be the direct attack, as a follow-up.

What it does buy is `sync` at 27% cheaper on every poll for every connected client, from the reconcile's per-file find() calls, and that saving grows with the library rather than staying flat.

Three correctness items travel with it. operator[] no longer inserts on a miss, where std::map's did, leaving a NULL encoder for the next reconcile to dereference; both call sites now assert the contract they already relied on. The removal sweep loses a set, compacting dead encoders out in one ordered pass instead of collecting them and erasing one lookup at a time. And the ordering checks become conformant: std::is_sorted requires a strict weak ordering and the `<=` used to reject equal neighbours is not irreflexive, so libstdc++ under _GLIBCXX_DEBUG aborts on the predicate itself -- on a debug build, which is the only build these checks run in. Both sites now use std::adjacent_find, which also fixes ECIdDiff.h carrying the same construct from amule-project#775.

The merge runs after the downloads pass as well as at the end: a partfile appears in both lists, and the shares pass uses find() to ask whether the reconcile already reached it, so leaving new entries unmerged would build a second encoder for the same file.

Exercised against a daemon in a Debug build with the ordering invariant live: shared list stable across repeated polls, a file added appeared and one removed disappeared with counts exact either side, and a partfile entered the download queue. The ComputeRemovedIds preconditions are mutation-proven. The encoder map's own invariant assert is not -- removing the sort on a small test config still produced ordered input, so that mutation was inconclusive.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants