ZIm/crates
Piotr Osiewicz 4fa75a78b9
gpui: Improve performance of laying out long lines (#19215)
TL;DR: Another O(n^2) strikes.

In #19194 we received a report about a 7Mb JSON file that Zed struggles
with. Naturally this file showcased a O(n^2) in line layout; this file
has one long line.

During line layout for Mac we have to convert between UTF-16 and UTF-8
indices in the string, as CoreText works with UTF-16 and Rust strings
are UTF-8. The problem stemmed from the fact that we were re-seeking our
string converter on each glyph, which boils down to: we were reparsing
[0..curr_string_position] bytes up to full length of the string, which
is the O(n^2) in question. This PR changes this behaviour to reuse the
Index Converter if the position we're seeking to is not yet reached.
Basically, we're treating the converter as forward iterator and we try
to seek with the same iterator, if possible.

Where previously you could not even open the file in OP (within
reasonable time frame, I waited for 40 seconds before giving up), now
you can do it in.. slightly over a second. The best part is: the
experience is still not ideal. Typing in the buffer is sluggish. Still,
this is a start.


Release Notes:

- Mac: Improved performance with very long lines
2024-10-15 16:28:47 +02:00
..
activity_indicator lsp: Show error message in read only buffer (#19063) 2024-10-11 12:33:08 +02:00
anthropic Restore HTTP client transition, but use reqwest everywhere (#19055) 2024-10-11 14:58:58 -07:00
assets add ui::Vector and separate images from icons (#17815) 2024-09-13 17:44:16 -04:00
assistant Redirect to checkout page when payment is required (#19179) 2024-10-14 12:39:20 +02:00
assistant_slash_command Introduce a new /delta command (#17903) 2024-09-17 08:47:08 -06:00
assistant_tool assistant: Add basic tool invocation (#17368) 2024-09-04 14:32:20 -04:00
audio Update Rust crate rodio to 0.19.0 (#17389) 2024-09-16 21:55:32 -06:00
auto_update Add remote server cross compilation (#19136) 2024-10-12 23:23:56 -07:00
breadcrumbs Add missing shortcuts in tooltips (#18282) 2024-09-27 11:06:48 +02:00
call ssh remote: Handle disconnect on project and show overlay (#19014) 2024-10-10 12:59:09 +02:00
channel Pass Summary::Context to Item::summarize (#18510) 2024-09-29 10:30:48 -06:00
cli Check paths for FS existence before parsing them as paths with line numbers (#19057) 2024-10-11 12:58:49 +03:00
client Switch from OpenSSL to Rustls (#19104) 2024-10-11 18:18:09 -07:00
clock Fix bugs with applying hunks from branch buffers (#18721) 2024-10-07 16:28:33 -07:00
collab ssh remoting: Forward LSP logs to client (#19212) 2024-10-15 16:04:29 +02:00
collab_ui Fix some issues with branch buffers (#18945) 2024-10-09 16:55:25 -07:00
collections gpui: Add SVG rendering to img element and generic asset cache (#9931) 2024-03-29 17:09:49 -07:00
command_palette chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
command_palette_hooks chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
context_servers context_servers: Remove context_type from ResourceContent (#18097) 2024-09-19 15:51:48 -04:00
copilot Fix the completions being too slow (#19013) 2024-10-10 12:53:02 +03:00
db chore: Fix some violations of 'needless_pass_by_ref_mut' lint (#18795) 2024-10-07 01:29:58 +02:00
dev_server_projects chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
diagnostics Tweak warning diagnostic toggle (#18637) 2024-10-02 13:57:20 -03:00
docs_preprocessor Don't rely on relative path for docs preprocessor (#16883) 2024-08-26 11:43:13 -04:00
editor gpui: Improve performance of laying out long lines (#19215) 2024-10-15 16:28:47 +02:00
evals Restore HTTP client transition, but use reqwest everywhere (#19055) 2024-10-11 14:58:58 -07:00
extension Restore HTTP client transition, but use reqwest everywhere (#19055) 2024-10-11 14:58:58 -07:00
extension_api zed_extension_api: Use v0.2.0 WIT types (#17802) 2024-09-13 14:49:50 -04:00
extension_cli Restore HTTP client transition, but use reqwest everywhere (#19055) 2024-10-11 14:58:58 -07:00
extensions_ui Extract Protocol Buffers support into an extension (#18704) 2024-10-03 13:37:43 -04:00
feature_flags /auto (#16696) 2024-09-13 13:17:49 -04:00
feedback Stop leaking isahc assumption (#18408) 2024-09-26 14:01:05 -06:00
file_finder Rework file picker for SSH modal (#19020) 2024-10-15 12:38:03 +02:00
file_icons chore: Clean up allocs around project panel (#15422) 2024-07-29 14:21:41 +02:00
fs Fix file watching for symlinks (#17609) 2024-09-30 23:04:35 -07:00
fsevent Retain run loop (#11241) 2024-04-30 23:31:59 -06:00
fuzzy Improve slash commands (#16195) 2024-08-13 23:06:07 -07:00
git Pass Summary::Context to Item::summarize (#18510) 2024-09-29 10:30:48 -06:00
git_hosting_providers chore: Fix some violations of 'needless_pass_by_ref_mut' lint (#18795) 2024-10-07 01:29:58 +02:00
go_to_line More git hunk highlighting fixes (#18459) 2024-09-27 13:48:37 -07:00
google_ai Stop leaking isahc assumption (#18408) 2024-09-26 14:01:05 -06:00
gpui gpui: Improve performance of laying out long lines (#19215) 2024-10-15 16:28:47 +02:00
gpui_macros add ui::Vector and separate images from icons (#17815) 2024-09-13 17:44:16 -04:00
headless Replace rpc with proto dependency for the headless server crate (#19048) 2024-10-11 01:36:40 +03:00
html_to_markdown chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
http_client Fix an issue with using non-reusable body types with redirects (#19134) 2024-10-12 13:32:08 -07:00
image_viewer chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
indexed_docs chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
inline_completion_button chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
install_cli Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
journal chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
language Standardize on CursorShape::Underline not Underscore (#19028) 2024-10-11 10:44:21 +02:00
language_model assistant: Add support for displaying billing-related errors (#19082) 2024-10-11 13:22:45 -04:00
language_selector use ssh lsp store (#17655) 2024-09-10 15:51:01 -04:00
language_tools ssh remoting: Forward LSP logs to client (#19212) 2024-10-15 16:04:29 +02:00
languages Improve auto-detection via shebang of TypeScript, JavaScript and Shell Script (#19114) 2024-10-13 02:35:46 -04:00
live_kit_client chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
live_kit_server Restore HTTP client transition, but use reqwest everywhere (#19055) 2024-10-11 14:58:58 -07:00
lsp Do not resolve more completion fields (#19021) 2024-10-10 16:10:18 +03:00
markdown chore: Fix some violations of 'needless_pass_by_ref_mut' lint (#18795) 2024-10-07 01:29:58 +02:00
markdown_preview Fix rendering of markdown tables (#18315) 2024-09-30 15:50:30 -07:00
media Update Rust crate bindgen to 0.70.0 (#17024) 2024-08-28 22:12:49 -07:00
menu open picker (#14524) 2024-07-15 17:04:15 -06:00
multi_buffer Don't disable auto-indent when typing in multi buffers (#18984) 2024-10-09 20:41:58 -07:00
node_runtime Make python run local worktree LSPs (#18353) 2024-09-25 12:45:41 -07:00
notifications Pass Summary::Context to Item::summarize (#18510) 2024-09-29 10:30:48 -06:00
ollama Fix read timeout for ollama (#18417) 2024-09-27 00:36:17 -06:00
open_ai Stop leaking isahc assumption (#18408) 2024-09-26 14:01:05 -06:00
outline More git hunk highlighting fixes (#18459) 2024-09-27 13:48:37 -07:00
outline_panel ssh remoting: Fix cmd-o (#18308) 2024-09-24 16:23:08 -06:00
paths macos: Use ~/Library/Caches/Zed instead of ~/.cache/zed (#17949) 2024-09-17 13:51:11 -04:00
picker Rework file picker for SSH modal (#19020) 2024-10-15 12:38:03 +02:00
prettier Allow using system node (#18172) 2024-09-23 15:28:04 -06:00
project ssh remoting: Forward LSP logs to client (#19212) 2024-10-15 16:04:29 +02:00
project_panel Properly compute depth and path for project panel entries (#19068) 2024-10-11 15:38:12 +03:00
project_symbols Fix renames over language server for SSH remoting (#17897) 2024-09-16 16:20:17 -06:00
proto ssh remoting: Forward LSP logs to client (#19212) 2024-10-15 16:04:29 +02:00
quick_action_bar Add missing shortcuts in tooltips (#18282) 2024-09-27 11:06:48 +02:00
recent_projects Rework file picker for SSH modal (#19020) 2024-10-15 12:38:03 +02:00
refineable Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
release_channel chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
remote ssh remote: Shutdown SSH & server process correctly on app quit (#19210) 2024-10-15 11:26:23 +02:00
remote_server ssh remoting: Forward LSP logs to client (#19212) 2024-10-15 16:04:29 +02:00
repl Styling option for separating terminal view background from background color (#17611) 2024-09-17 12:51:31 -04:00
reqwest_client Fix an issue with using non-reusable body types with redirects (#19134) 2024-10-12 13:32:08 -07:00
rich_text Disable definition lists in Markdown (#17648) 2024-09-10 11:16:27 -04:00
rope Pass Summary::Context to Item::summarize (#18510) 2024-09-29 10:30:48 -06:00
rpc Add remote server cross compilation (#19136) 2024-10-12 23:23:56 -07:00
search Adjust spacing and sizing of buffer search bar icon buttons (#18638) 2024-10-02 13:57:03 -03:00
semantic_index Restore HTTP client transition, but use reqwest everywhere (#19055) 2024-10-11 14:58:58 -07:00
semantic_version Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
session chore: Fix some violations of 'needless_pass_by_ref_mut' lint (#18795) 2024-10-07 01:29:58 +02:00
settings Rework remote task synchronization (#18746) 2024-10-09 22:28:42 +03:00
settings_ui chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
snippet Correct escaping in snippets (#14912) 2024-07-22 00:57:34 +02:00
snippet_provider chore: Fix some violations of 'needless_pass_by_ref_mut' lint (#18795) 2024-10-07 01:29:58 +02:00
snippets_ui Add snippet commands (#18453) 2024-10-02 13:27:16 +02:00
sqlez Restore HTTP client transition, but use reqwest everywhere (#19055) 2024-10-11 14:58:58 -07:00
sqlez_macros Compare migrations formatted uniformly (#18760) 2024-10-05 12:58:45 +03:00
story chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
storybook Restore HTTP client transition, but use reqwest everywhere (#19055) 2024-10-11 14:58:58 -07:00
sum_tree Pass Summary::Context to Item::summarize (#18510) 2024-09-29 10:30:48 -06:00
supermaven supermaven: Fix crash when editing non-ASCII text (#19153) 2024-10-14 18:27:15 +03:00
supermaven_api chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
tab_switcher tab_switcher: Use git-aware colors for file icons (#18733) 2024-10-04 10:37:41 -04:00
task Rework remote task synchronization (#18746) 2024-10-09 22:28:42 +03:00
tasks_ui Rework remote task synchronization (#18746) 2024-10-09 22:28:42 +03:00
telemetry_events collab: Remove dependency on X11 (#19079) 2024-10-11 13:28:34 -04:00
terminal terminal: Improve default locale handling (#18967) 2024-10-11 18:09:24 +02:00
terminal_view windows: Fix opening wrong path when clicking path in the terminal view (#18726) 2024-10-14 18:23:16 +03:00
text Fix some issues with branch buffers (#18945) 2024-10-09 16:55:25 -07:00
theme chore: Fix some violations of 'needless_pass_by_ref_mut' lint (#18795) 2024-10-07 01:29:58 +02:00
theme_importer chore: Another round of style lints fixes (#17519) 2024-09-07 02:36:55 +02:00
theme_selector settings_ui: Add theme settings controls (#15115) 2024-07-24 16:25:52 -04:00
time_format chore: Fix several style lints (#17488) 2024-09-06 11:58:39 +02:00
title_bar Rework file picker for SSH modal (#19020) 2024-10-15 12:38:03 +02:00
ui Rework file picker for SSH modal (#19020) 2024-10-15 12:38:03 +02:00
ui_input Rename ui_text_field crate to ui_input (#13949) 2024-07-08 17:05:30 -04:00
ui_macros Add ui_macros crate & DerivePathStr derive macro (#17811) 2024-09-13 16:45:16 -04:00
util Restore HTTP client transition, but use reqwest everywhere (#19055) 2024-10-11 14:58:58 -07:00
vcs_menu vcs_menu: Streamline branch creation from branch selector (#18712) 2024-10-03 16:18:28 -04:00
vim Add vim::Search command option for non-regex search (#19177) 2024-10-14 09:59:29 +02:00
welcome Welcome tweaks (#17874) 2024-09-16 08:29:46 -04:00
workspace tab: Fix copy wrong relative path for tab (#19206) 2024-10-15 09:27:34 +03:00
worktree worktree: Depend on rpc with test-support feature in tests (#18866) 2024-10-08 13:07:34 -04:00
zed ssh remoting: Restore SSH projects when reopening Zed (#19188) 2024-10-14 14:56:25 +02:00
zed_actions Improve Linux terminal keymap and context menu (#16845) 2024-08-26 01:01:46 +03:00