zellij-org / zellij

A terminal workspace with batteries included
https://zellij.dev
MIT License
20.72k stars 638 forks source link

Bug: opening a new tab is a little slow #176

Open imsnif opened 3 years ago

imsnif commented 3 years ago

When we open a tab, zellij waits until a new pty starts and only then opens the tab. This feels slow to the user. It can be cool to first render an empty tab and "connect" it to a pty when it finishes opening. That should be a more pleasant user experience.

captain-yossarian commented 3 years ago

Hi @imsnif , I'd like to take some easy task for start. Can I start with this issue?

a-kenji commented 3 years ago

We'd be happy if you started on this issue. Please feel free to reach out, if you have any questions.

captain-yossarian commented 3 years ago

@a-kenji is it possible to run it on windows?

a-kenji commented 3 years ago

@captain-yossarian Currently not natively, just under WSL atm. There is an open issue and definitley interest there #316.

captain-yossarian commented 3 years ago

@a-kenji no problem, I will use virtual box.

captain-yossarian commented 3 years ago

@a-kenji @imsnif could you please provide more context about the issue ? I don't know what means - pty. In order to reproduce the bug, should I open second Tab? if - Yes, how to do it? Could You please point me where I should start? Thanks a lot

a-kenji commented 3 years ago

@captain-yossarian

Sure, no problem! https://en.wikipedia.org/wiki/Pseudo_terminal https://github.com/zellij-org/zellij/blob/main/src/common/pty_bus.rs https://github.com/zellij-org/zellij/blob/main/src/common/screen.rs

https://github.com/zellij-org/zellij/blob/fe1f0ba3c4b6731262736f4a1611da59e7465ac9/src/common/mod.rs#L205

If you have more questions, please feel free asking them!

captain-yossarian commented 3 years ago

@a-kenji how I can create new Tab ?

a-kenji commented 3 years ago

@captain-yossarian

You create it with Ctrl-t and then n, in the code that Action is called NewTab, so an ag NewTab should give you a good starting point.

captain-yossarian commented 3 years ago

@a-kenji could you please take a look on this error:

   Compiling zellij v0.6.0 (/home/yossarian/Documents/rust/zellij)
thread 'rustc' panicked at 'assertion failed: `(left == right)`
  left: `Some(Fingerprint(4303387229712160276, 2320185052139668143))`,
 right: `Some(Fingerprint(3938687373395906223, 7235903109474142037))`: found unstable fingerprints for predicates_of(core[ec89]::marker::Sync): GenericPredicates { parent: None, predicates: [(Binder(TraitPredicate(<Self as std::marker::Sync>), []), /home/yossarian/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/marker.rs:469:1: 469:27 (#0))] }', /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/compiler/rustc_query_system/src/query/plumbing.rs:593:5
stack backtrace:
   0:     0x7ff834ceb7e0 - std::backtrace_rs::backtrace::libunwind::trace::hdcf4f90f85129e83
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
   1:     0x7ff834ceb7e0 - std::backtrace_rs::backtrace::trace_unsynchronized::h2669e30cb82f6732
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7ff834ceb7e0 - std::sys_common::backtrace::_print_fmt::hfbda19e17f6db318
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/sys_common/backtrace.rs:67:5
   3:     0x7ff834ceb7e0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h1a8751bf59281272
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/sys_common/backtrace.rs:46:22
   4:     0x7ff834d5cbbf - core::fmt::write::h7aa6cd0067dca82a
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/core/src/fmt/mod.rs:1094:17
   5:     0x7ff834cdff75 - std::io::Write::write_fmt::hd7dd3a1df9b6befb
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/io/mod.rs:1580:15
   6:     0x7ff834cef53b - std::sys_common::backtrace::_print::h551e9ec8a9fa8106
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/sys_common/backtrace.rs:49:5
   7:     0x7ff834cef53b - std::sys_common::backtrace::print::ha4b1c5e95fa040b3
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/sys_common/backtrace.rs:36:9
   8:     0x7ff834cef53b - std::panicking::default_hook::{{closure}}::h0b34c9ab7fb9f857
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/panicking.rs:208:50
   9:     0x7ff834cef01d - std::panicking::default_hook::h3067e8318decd17a
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/panicking.rs:225:9
  10:     0x7ff8354b10ad - rustc_driver::report_ice::h8bc35a5e54cf0d4e
  11:     0x7ff821e481c3 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hcd5dcf2ec9abdd36
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/alloc/src/boxed.rs:1560:9
  12:     0x7ff821e438b6 - proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::enter::{{closure}}::{{closure}}::he6098042e1b09c6e
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/proc_macro/src/bridge/client.rs:320:21
  13:     0x7ff834cefc50 - std::panicking::rust_panic_with_hook::h81b8facc50f34daa
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/panicking.rs:595:17
  14:     0x7ff834cef827 - std::panicking::begin_panic_handler::{{closure}}::ha376ab85d95a000e
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/panicking.rs:497:13
  15:     0x7ff834cebc9c - std::sys_common::backtrace::__rust_end_short_backtrace::h6795c8afdd1a77e6
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/sys_common/backtrace.rs:141:18
  16:     0x7ff834cef789 - rust_begin_unwind
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/panicking.rs:493:5
  17:     0x7ff834cbd321 - core::panicking::panic_fmt::hbe99dddd3092ba3c
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/core/src/panicking.rs:92:14
  18:     0x7ff834d596ae - core::panicking::assert_failed_inner::h4fdb1013d187f202
  19:     0x7ff835b6292c - core::panicking::assert_failed::h19965e301f985c41
  20:     0x7ff8373ae778 - rustc_query_system::query::plumbing::incremental_verify_ich::h5f9a122113df9ca7
  21:     0x7ff8373b7197 - rustc_query_system::query::plumbing::load_from_disk_and_cache_in_memory::h005dd8c8c697eec8
  22:     0x7ff83685b2a0 - rustc_query_system::query::plumbing::get_query_impl::h6db941aa40a33502
  23:     0x7ff8368ea489 - <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::predicates_of::h0e0b25befa5c420e
  24:     0x7ff8377d0abe - rustc_trait_selection::traits::object_safety::generics_require_sized_self::hc9ff40b3917107d4
  25:     0x7ff8377ce466 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once::h44578d15ba388dee
  26:     0x7ff8377ddc92 - <core::iter::adapters::flatten::FlatMap<I,U,F> as core::iter::traits::iterator::Iterator>::next::h45dd38cfdbef0c8b
  27:     0x7ff8377e01ad - <smallvec::SmallVec<A> as core::iter::traits::collect::Extend<<A as smallvec::Array>::Item>>::extend::h3c8f6eda12bc5a46
  28:     0x7ff8377e93d1 - rustc_middle::arena::Arena::alloc_from_iter::hb30f9d8e4f047415
  29:     0x7ff8377cfbe3 - rustc_trait_selection::traits::object_safety::object_safety_violations::haec9cb7ee9dd8320
  30:     0x7ff835b86aa7 - rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::h3ee80f9ea5471c3b
  31:     0x7ff8359c8beb - rustc_query_system::query::plumbing::load_from_disk_and_cache_in_memory::h6fedfc6d725a25f6
  32:     0x7ff8373dea5f - rustc_data_structures::stack::ensure_sufficient_stack::h593384ab3f5e90b7
  33:     0x7ff83733dbfc - rustc_query_system::query::plumbing::get_query_impl::h4dd4f35b13187211
  34:     0x7ff83748483a - <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::object_safety_violations::h59903eb6de6499f6
  35:     0x7ff837877f60 - rustc_middle::ty::<impl rustc_middle::ty::context::TyCtxt>::is_object_safe::h918ec71e681ba269
  36:     0x7ff836dc8322 - rustc_trait_selection::traits::fulfill::FulfillProcessor::progress_changed_obligations::h49b2fd724ac87f00
  37:     0x7ff836de4c42 - rustc_data_structures::obligation_forest::ObligationForest<O>::process_obligations::hb6a299a027ee1ef3
  38:     0x7ff836dc79ab - <rustc_trait_selection::traits::fulfill::FulfillmentContext as rustc_infer::traits::engine::TraitEngine>::select_where_possible::h9a8565afc02fd26c
  39:     0x7ff836dc77c0 - <rustc_trait_selection::traits::fulfill::FulfillmentContext as rustc_infer::traits::engine::TraitEngine>::select_all_or_error::h99db70751d1f457a
  40:     0x7ff8366889ca - rustc_typeck::check::fn_ctxt::_impl::<impl rustc_typeck::check::fn_ctxt::FnCtxt>::select_all_obligations_or_error::h090eec5fdbb06f7a
  41:     0x7ff8372248b8 - rustc_infer::infer::InferCtxtBuilder::enter::h0a279c2de5d3a413
  42:     0x7ff83676bc40 - rustc_typeck::check::wfcheck::check_item_well_formed::h050c06be72496ecf
  43:     0x7ff837490a7c - rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::h211b6d3b7f5bae76
  44:     0x7ff8368e2e3e - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::hc4b2fd7b87bf8ded
  45:     0x7ff8368819ee - rustc_query_system::query::plumbing::force_query_with_job::h6a46056dcab7224b
  46:     0x7ff836851874 - rustc_query_system::query::plumbing::get_query_impl::h372a567531ca4c6f
  47:     0x7ff8368eca5d - <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::check_item_well_formed::hfb2c232624afeefb
  48:     0x7ff836770d8c - <rustc_typeck::check::wfcheck::CheckTypeWellFormedVisitor as rustc_hir::intravisit::Visitor>::visit_item::h0b8817437244938d
  49:     0x7ff8367630fe - rustc_data_structures::sync::par_for_each_in::hc5ca15a054d22e20
  50:     0x7ff837236129 - rustc_hir::hir::Crate::par_visit_all_item_likes::hf6e92d857a2b1ed6
  51:     0x7ff837205ef6 - rustc_session::session::Session::track_errors::h408406eec0de43c6
  52:     0x7ff83723bf47 - rustc_typeck::check_crate::h94f0ca08944dc8ff
  53:     0x7ff836fd237d - rustc_interface::passes::analysis::hd5ac31040f53a69b
  54:     0x7ff835b9ce6a - rustc_middle::dep_graph::<impl rustc_query_system::dep_graph::DepKind for rustc_middle::dep_graph::dep_node::DepKind>::with_deps::hf60de661605b5623
  55:     0x7ff8374656b8 - rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl::h2df1aabf2d2671a7
  56:     0x7ff8373dc897 - rustc_data_structures::stack::ensure_sufficient_stack::h219e3f3ae77528e1
  57:     0x7ff83737e521 - rustc_query_system::query::plumbing::force_query_with_job::h091c05ae70f452e6
  58:     0x7ff8373482a3 - rustc_query_system::query::plumbing::get_query_impl::h6dda0d4814804c64
  59:     0x7ff837481bdf - <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::analysis::h1f41c15d7c7a398d
  60:     0x7ff836fb29aa - rustc_interface::passes::QueryContext::enter::h45323040f32afcbe
  61:     0x7ff836f97905 - rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter::h724400ac5ffcdd64
  62:     0x7ff836f96894 - rustc_span::with_source_map::h07c07459e999f3c9
  63:     0x7ff836f988d1 - rustc_interface::interface::create_compiler_and_run::h83442de2b4cadf7a
  64:     0x7ff836fb1ef8 - scoped_tls::ScopedKey<T>::set::hb23c9cb7764fa643
  65:     0x7ff836fb2413 - std::sys_common::backtrace::__rust_begin_short_backtrace::h81398fdbb964f101
  66:     0x7ff836fb5d05 - core::ops::function::FnOnce::call_once{{vtable.shim}}::hc030ad45e4e8f0df
  67:     0x7ff834cfe6f7 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h3aa31cb6360b59d9
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/alloc/src/boxed.rs:1546:9
  68:     0x7ff834cfe6f7 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h7719d3c7c5841461
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/alloc/src/boxed.rs:1546:9
  69:     0x7ff834cfe6f7 - std::sys::unix::thread::Thread::new::thread_start::hfbe13ead469fd0bc
                               at /rustc/42816d61ead7e46d462df997958ccfd514f8c21c/library/std/src/sys/unix/thread.rs:71:17
  70:     0x7ff834c2e609 - start_thread
  71:     0x7ff834b42293 - clone
  72:                0x0 - <unknown>

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.53.0-nightly (42816d61e 2021-04-24) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type bin

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [predicates_of] computing predicates of `std::marker::Sync`
#1 [object_safety_violations] determine object safety of trait `common::os_input_output::OsApi`
#2 [check_item_well_formed] checking that `common::start` is well-formed
#3 [analysis] running analysis passes on this crate
end of query stack
error: could not compile `zellij`

This error occured after I installed rust extension on vscode

a-kenji commented 3 years ago

@captain-yossarian What happens if you try using our pinned toolchain? eg. If you consume the toolchain file to setup rust?

captain-yossarian commented 3 years ago

@a-kenji could you please specify how I can consume it? Should I use your toolchain in VS Code extension or I should to install somehow your toolchain rustup toolchain install .... ? P.S. thanks for your patience and time

a-kenji commented 3 years ago

@captain-yossarian Sure! I'll try, since it differs a little from the way you do it, depending on your setup.

You can show your active toolchain with: rustup show

You should be able to activate the toolchain from rustup-toolchain, if none is active by being in the zellij root directory then running rustup update.