jupyterlab / jupyterlab

JupyterLab computational environment.
https://jupyterlab.readthedocs.io/
Other
14.08k stars 3.32k forks source link

Bad performance on Safari browsers due to many layers getting rendered #14330

Open alecuea opened 1 year ago

alecuea commented 1 year ago

Description

Notebook cells in Safari browser create new layers that scale up linearly with the number of cells in the notebook, impacting rendering performance.

@ellisonbg could you please take a look at this issue?

Reproduce

  1. Access Jupyterlab 3.x using Safari
  2. Create a notebook with a few cells
  3. Use Safari dev tools to visualize rendered layers.
  4. You will see something like this:

Screen Shot 2023-04-05 at 2 57 55 PM

I have reduced the problem to be related to the CSS of the textarea inside the cell. Positioning and dimensions make it overlap with its container creating these new layers.

Screen Shot 2023-04-05 at 3 09 41 PM

I am not sure if this would be the best way to address this issue, but changing the textarea height to auto seems to solve the issue. I have verified this by running this code in the dev tools console:

var style = document.createElement('style');
style.id = 'mod';
document.head.appendChild(style);

document.getElementById('mod').innerHTML = `
.CodeMirror  textarea {
      height: auto !important;
  }
`;

After doing so, layers seem to get flattened:

Screen Shot 2023-04-05 at 2 58 41 PM

Expected behavior

Notebook Cells do not create new layers in Safari.

Context

Troubleshoot Output
(base) jovyan@58c6fe0ec3da:~$ jupyter troubleshoot
$PATH:
        /opt/conda/bin
        /opt/conda/condabin
        /opt/conda/bin
        /usr/local/sbin
        /usr/local/bin
        /usr/sbin
        /usr/bin
        /sbin
        /bin

sys.path:
        /opt/conda/bin
        /opt/conda/lib/python310.zip
        /opt/conda/lib/python3.10
        /opt/conda/lib/python3.10/lib-dynload
        /opt/conda/lib/python3.10/site-packages

sys.executable:
        /opt/conda/bin/python

sys.version:
        3.10.9 | packaged by conda-forge | (main, Feb  2 2023, 20:20:04) [GCC 11.3.0]

platform.platform():
        Linux-5.4.235-151.344.amzn2int.x86_64-x86_64-with-glibc2.35

which -a jupyter:
        /opt/conda/bin/jupyter
        /opt/conda/bin/jupyter

pip list:
        Package                       Version
        ----------------------------- -----------
        aiofiles                      22.1.0
        aiosqlite                     0.18.0
        alembic                       1.9.4
        anyio                         3.6.2
        argon2-cffi                   21.3.0
        argon2-cffi-bindings          21.2.0
        asttokens                     2.2.1
        async-generator               1.10
        attrs                         22.2.0
        Babel                         2.12.1
        backcall                      0.2.0
        backports.functools-lru-cache 1.6.4
        beautifulsoup4                4.11.2
        bleach                        6.0.0
        blinker                       1.5
        brotlipy                      0.7.0
        certifi                       2022.12.7
        certipy                       0.1.3
        cffi                          1.15.1
        charset-normalizer            2.1.1
        colorama                      0.4.6
        comm                          0.1.2
        conda                         23.1.0
        conda-package-handling        2.0.2
        conda_package_streaming       0.7.0
        cryptography                  39.0.2
        debugpy                       1.6.6
        decorator                     5.1.1
        defusedxml                    0.7.1
        entrypoints                   0.4
        executing                     1.2.0
        fastjsonschema                2.16.3
        flit_core                     3.8.0
        greenlet                      2.0.2
        idna                          3.4
        importlib-metadata            6.0.0
        importlib-resources           5.12.0
        ipykernel                     6.21.2
        ipython                       8.11.0
        ipython-genutils              0.2.0
        jedi                          0.18.2
        Jinja2                        3.1.2
        json5                         0.9.5
        jsonschema                    4.17.3
        jupyter_client                8.0.3
        jupyter_core                  5.2.0
        jupyter-events                0.6.3
        jupyter_server                2.3.0
        jupyter_server_fileid         0.8.0
        jupyter_server_terminals      0.4.4
        jupyter_server_ydoc           0.6.1
        jupyter-telemetry             0.1.0
        jupyter-ydoc                  0.2.2
        jupyterhub                    3.1.1
        jupyterlab                    3.6.1
        jupyterlab-pygments           0.2.2
        jupyterlab_server             2.19.0
        libmambapy                    1.3.1
        Mako                          1.2.4
        mamba                         1.3.1
        MarkupSafe                    2.1.2
        matplotlib-inline             0.1.6
        mistune                       2.0.5
        nbclassic                     0.5.2
        nbclient                      0.7.2
        nbconvert                     7.2.9
        nbformat                      5.7.3
        nest-asyncio                  1.5.6
        notebook                      6.5.2
        notebook_shim                 0.2.2
        oauthlib                      3.2.2
        packaging                     23.0
        pamela                        1.0.0
        pandocfilters                 1.5.0
        parso                         0.8.3
        pexpect                       4.8.0
        pickleshare                   0.7.5
        pip                           23.0.1
        pkgutil_resolve_name          1.3.10
        platformdirs                  3.0.0
        pluggy                        1.0.0
        prometheus-client             0.16.0
        prompt-toolkit                3.0.38
        psutil                        5.9.4
        ptyprocess                    0.7.0
        pure-eval                     0.2.2
        pycosat                       0.6.4
        pycparser                     2.21
        pycurl                        7.45.1
        Pygments                      2.14.0
        PyJWT                         2.6.0
        pyOpenSSL                     23.0.0
        pyrsistent                    0.19.3
        PySocks                       1.7.1
        python-dateutil               2.8.2
        python-json-logger            2.0.7
        pytz                          2022.7.1
        PyYAML                        6.0
        pyzmq                         25.0.0
        requests                      2.28.2
        rfc3339-validator             0.1.4
        rfc3986-validator             0.1.1
        ruamel.yaml                   0.17.21
        ruamel.yaml.clib              0.2.7
        Send2Trash                    1.8.0
        setuptools                    67.4.0
        six                           1.16.0
        sniffio                       1.3.0
        soupsieve                     2.3.2.post1
        SQLAlchemy                    2.0.4
        stack-data                    0.6.2
        terminado                     0.17.1
        tinycss2                      1.2.1
        tomli                         2.0.1
        toolz                         0.12.0
        tornado                       6.2
        tqdm                          4.64.1
        traitlets                     5.9.0
        typing_extensions             4.4.0
        urllib3                       1.26.14
        wcwidth                       0.2.6
        webencodings                  0.5.1
        websocket-client              1.5.1
        wheel                         0.38.4
        y-py                          0.5.9
        ypy-websocket                 0.8.2
        zipp                          3.15.0
        zstandard                     0.19.0

conda list:
        # packages in environment at /opt/conda:
        #
        # Name                    Version                   Build  Channel
        _libgcc_mutex             0.1                 conda_forge    conda-forge
        _openmp_mutex             4.5                       2_gnu    conda-forge
        aiofiles                  22.1.0             pyhd8ed1ab_0    conda-forge
        aiosqlite                 0.18.0             pyhd8ed1ab_0    conda-forge
        alembic                   1.9.4              pyhd8ed1ab_0    conda-forge
        anyio                     3.6.2              pyhd8ed1ab_0    conda-forge
        argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
        argon2-cffi-bindings      21.2.0          py310h5764c6d_3    conda-forge
        asttokens                 2.2.1              pyhd8ed1ab_0    conda-forge
        async_generator           1.10                       py_0    conda-forge
        attrs                     22.2.0             pyh71513ae_0    conda-forge
        babel                     2.12.1             pyhd8ed1ab_1    conda-forge
        backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
        backports                 1.0                pyhd8ed1ab_3    conda-forge
        backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
        beautifulsoup4            4.11.2             pyha770c72_0    conda-forge
        bleach                    6.0.0              pyhd8ed1ab_0    conda-forge
        blinker                   1.5                pyhd8ed1ab_0    conda-forge
        brotlipy                  0.7.0           py310h5764c6d_1005    conda-forge
        bzip2                     1.0.8                h7f98852_4    conda-forge
        c-ares                    1.18.1               h7f98852_0    conda-forge
        ca-certificates           2022.12.7            ha878542_0    conda-forge
        certifi                   2022.12.7          pyhd8ed1ab_0    conda-forge
        certipy                   0.1.3                      py_0    conda-forge
        cffi                      1.15.1          py310h255011f_3    conda-forge
        charset-normalizer        2.1.1              pyhd8ed1ab_0    conda-forge
        colorama                  0.4.6              pyhd8ed1ab_0    conda-forge
        comm                      0.1.2              pyhd8ed1ab_0    conda-forge
        conda                     23.1.0          py310hff52083_0    conda-forge
        conda-package-handling    2.0.2              pyh38be061_0    conda-forge
        conda-package-streaming   0.7.0              pyhd8ed1ab_1    conda-forge
        configurable-http-proxy   4.5.4                he2f69ee_2    conda-forge
        cryptography              39.0.2          py310h34c0648_0    conda-forge
        debugpy                   1.6.6           py310heca2aa9_0    conda-forge
        decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
        defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
        entrypoints               0.4                pyhd8ed1ab_0    conda-forge
        executing                 1.2.0              pyhd8ed1ab_0    conda-forge
        flit-core                 3.8.0              pyhd8ed1ab_0    conda-forge
        fmt                       9.1.0                h924138e_0    conda-forge
        greenlet                  2.0.2           py310heca2aa9_0    conda-forge
        icu                       70.1                 h27087fc_0    conda-forge
        idna                      3.4                pyhd8ed1ab_0    conda-forge
        importlib-metadata        6.0.0              pyha770c72_0    conda-forge
        importlib_metadata        6.0.0                hd8ed1ab_0    conda-forge
        importlib_resources       5.12.0             pyhd8ed1ab_0    conda-forge
        ipykernel                 6.21.2             pyh210e3f2_0    conda-forge
        ipython                   8.11.0             pyh41d4057_0    conda-forge
        ipython_genutils          0.2.0                      py_1    conda-forge
        jedi                      0.18.2             pyhd8ed1ab_0    conda-forge
        jinja2                    3.1.2              pyhd8ed1ab_1    conda-forge
        json5                     0.9.5              pyh9f0ad1d_0    conda-forge
        jsonschema                4.17.3             pyhd8ed1ab_0    conda-forge
        jupyter_client            8.0.3              pyhd8ed1ab_0    conda-forge
        jupyter_core              5.2.0           py310hff52083_0    conda-forge
        jupyter_events            0.6.3              pyhd8ed1ab_0    conda-forge
        jupyter_server            2.3.0              pyhd8ed1ab_0    conda-forge
        jupyter_server_fileid     0.8.0              pyhd8ed1ab_0    conda-forge
        jupyter_server_terminals  0.4.4              pyhd8ed1ab_1    conda-forge
        jupyter_server_ydoc       0.6.1              pyhd8ed1ab_0    conda-forge
        jupyter_telemetry         0.1.0              pyhd8ed1ab_1    conda-forge
        jupyter_ydoc              0.2.2              pyhd8ed1ab_0    conda-forge
        jupyterhub                3.1.1              pyh2a2186d_0    conda-forge
        jupyterhub-base           3.1.1              pyh2a2186d_0    conda-forge
        jupyterlab                3.6.1              pyhd8ed1ab_0    conda-forge
        jupyterlab_pygments       0.2.2              pyhd8ed1ab_0    conda-forge
        jupyterlab_server         2.19.0             pyhd8ed1ab_0    conda-forge
        keyutils                  1.6.1                h166bdaf_0    conda-forge
        krb5                      1.20.1               h81ceb04_0    conda-forge
        ld_impl_linux-64          2.40                 h41732ed_0    conda-forge
        libarchive                3.6.2                h3d51595_0    conda-forge
        libcurl                   7.88.1               hdc1c0ab_0    conda-forge
        libedit                   3.1.20191231         he28a2e2_2    conda-forge
        libev                     4.33                 h516909a_1    conda-forge
        libffi                    3.4.2                h7f98852_5    conda-forge
        libgcc-ng                 12.2.0              h65d4601_19    conda-forge
        libgomp                   12.2.0              h65d4601_19    conda-forge
        libiconv                  1.17                 h166bdaf_0    conda-forge
        libmamba                  1.3.1                hcea66bb_1    conda-forge
        libmambapy                1.3.1           py310h1428755_1    conda-forge
        libnghttp2                1.52.0               h61bc06f_0    conda-forge
        libnsl                    2.0.0                h7f98852_0    conda-forge
        libsodium                 1.0.18               h36c2ea0_1    conda-forge
        libsolv                   0.7.23               h3eb15da_0    conda-forge
        libsqlite                 3.40.0               h753d276_0    conda-forge
        libssh2                   1.10.0               hf14f497_3    conda-forge
        libstdcxx-ng              12.2.0              h46fd767_19    conda-forge
        libuuid                   2.32.1            h7f98852_1000    conda-forge
        libuv                     1.44.2               h166bdaf_0    conda-forge
        libxml2                   2.10.3               h7463322_0    conda-forge
        libzlib                   1.2.13               h166bdaf_4    conda-forge
        lz4-c                     1.9.4                hcb278e6_0    conda-forge
        lzo                       2.10              h516909a_1000    conda-forge
        mako                      1.2.4              pyhd8ed1ab_0    conda-forge
        mamba                     1.3.1           py310h51d5547_1    conda-forge
        markupsafe                2.1.2           py310h1fa729e_0    conda-forge
        matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
        mistune                   2.0.5              pyhd8ed1ab_0    conda-forge
        nbclassic                 0.5.2              pyhd8ed1ab_0    conda-forge
        nbclient                  0.7.2              pyhd8ed1ab_0    conda-forge
        nbconvert                 7.2.9              pyhd8ed1ab_0    conda-forge
        nbconvert-core            7.2.9              pyhd8ed1ab_0    conda-forge
        nbconvert-pandoc          7.2.9              pyhd8ed1ab_0    conda-forge
        nbformat                  5.7.3              pyhd8ed1ab_0    conda-forge
        ncurses                   6.3                  h27087fc_1    conda-forge
        nest-asyncio              1.5.6              pyhd8ed1ab_0    conda-forge
        nodejs                    18.13.0              h8d033a5_0    conda-forge
        notebook                  6.5.2              pyha770c72_1    conda-forge
        notebook-shim             0.2.2              pyhd8ed1ab_0    conda-forge
        oauthlib                  3.2.2              pyhd8ed1ab_0    conda-forge
        openssl                   3.0.8                h0b41bf4_0    conda-forge
        packaging                 23.0               pyhd8ed1ab_0    conda-forge
        pamela                    1.0.0                      py_0    conda-forge
        pandoc                    2.19.2               h32600fe_1    conda-forge
        pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
        parso                     0.8.3              pyhd8ed1ab_0    conda-forge
        pexpect                   4.8.0              pyh1a96a4e_2    conda-forge
        pickleshare               0.7.5                   py_1003    conda-forge
        pip                       23.0.1             pyhd8ed1ab_0    conda-forge
        pkgutil-resolve-name      1.3.10             pyhd8ed1ab_0    conda-forge
        platformdirs              3.0.0              pyhd8ed1ab_0    conda-forge
        pluggy                    1.0.0              pyhd8ed1ab_5    conda-forge
        prometheus_client         0.16.0             pyhd8ed1ab_0    conda-forge
        prompt-toolkit            3.0.38             pyha770c72_0    conda-forge
        prompt_toolkit            3.0.38               hd8ed1ab_0    conda-forge
        psutil                    5.9.4           py310h5764c6d_0    conda-forge
        ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
        pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
        pybind11-abi              4                    hd8ed1ab_3    conda-forge
        pycosat                   0.6.4           py310h5764c6d_1    conda-forge
        pycparser                 2.21               pyhd8ed1ab_0    conda-forge
        pycurl                    7.45.1          py310h60f9ec7_3    conda-forge
        pygments                  2.14.0             pyhd8ed1ab_0    conda-forge
        pyjwt                     2.6.0              pyhd8ed1ab_0    conda-forge
        pyopenssl                 23.0.0             pyhd8ed1ab_0    conda-forge
        pyrsistent                0.19.3          py310h1fa729e_0    conda-forge
        pysocks                   1.7.1              pyha2e5f31_6    conda-forge
        python                    3.10.9          he550d4f_0_cpython    conda-forge
        python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
        python-fastjsonschema     2.16.3             pyhd8ed1ab_0    conda-forge
        python-json-logger        2.0.7              pyhd8ed1ab_0    conda-forge
        python_abi                3.10                    3_cp310    conda-forge
        pytz                      2022.7.1           pyhd8ed1ab_0    conda-forge
        pyyaml                    6.0             py310h5764c6d_5    conda-forge
        pyzmq                     25.0.0          py310h059b190_0    conda-forge
        readline                  8.1.2                h0f457ee_0    conda-forge
        reproc                    14.2.4               h0b41bf4_0    conda-forge
        reproc-cpp                14.2.4               hcb278e6_0    conda-forge
        requests                  2.28.2             pyhd8ed1ab_0    conda-forge
        rfc3339-validator         0.1.4              pyhd8ed1ab_0    conda-forge
        rfc3986-validator         0.1.1              pyh9f0ad1d_0    conda-forge
        ruamel.yaml               0.17.21         py310h5764c6d_2    conda-forge
        ruamel.yaml.clib          0.2.7           py310h1fa729e_1    conda-forge
        send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
        setuptools                67.4.0             pyhd8ed1ab_0    conda-forge
        six                       1.16.0             pyh6c4a22f_0    conda-forge
        sniffio                   1.3.0              pyhd8ed1ab_0    conda-forge
        soupsieve                 2.3.2.post1        pyhd8ed1ab_0    conda-forge
        sqlalchemy                2.0.4           py310h1fa729e_0    conda-forge
        stack_data                0.6.2              pyhd8ed1ab_0    conda-forge
        terminado                 0.17.1             pyh41d4057_0    conda-forge
        tinycss2                  1.2.1              pyhd8ed1ab_0    conda-forge
        tk                        8.6.12               h27826a3_0    conda-forge
        tomli                     2.0.1              pyhd8ed1ab_0    conda-forge
        toolz                     0.12.0             pyhd8ed1ab_0    conda-forge
        tornado                   6.2             py310h5764c6d_1    conda-forge
        tqdm                      4.64.1             pyhd8ed1ab_0    conda-forge
        traitlets                 5.9.0              pyhd8ed1ab_0    conda-forge
        typing-extensions         4.4.0                hd8ed1ab_0    conda-forge
        typing_extensions         4.4.0              pyha770c72_0    conda-forge
        tzdata                    2022g                h191b570_0    conda-forge
        urllib3                   1.26.14            pyhd8ed1ab_0    conda-forge
        wcwidth                   0.2.6              pyhd8ed1ab_0    conda-forge
        webencodings              0.5.1                      py_1    conda-forge
        websocket-client          1.5.1              pyhd8ed1ab_0    conda-forge
        wheel                     0.38.4             pyhd8ed1ab_0    conda-forge
        xz                        5.2.6                h166bdaf_0    conda-forge
        y-py                      0.5.9           py310h4426083_0    conda-forge
        yaml                      0.2.5                h7f98852_2    conda-forge
        yaml-cpp                  0.7.0                h27087fc_2    conda-forge
        ypy-websocket             0.8.2              pyhd8ed1ab_0    conda-forge
        zeromq                    4.3.4                h9c3ff4c_1    conda-forge
        zipp                      3.15.0             pyhd8ed1ab_0    conda-forge
        zlib                      1.2.13               h166bdaf_4    conda-forge
        zstandard                 0.19.0          py310hdeb6495_1    conda-forge
        zstd                      1.5.2                h3eb15da_6    conda-forge

conda env:
        name: base
        channels:
          - conda-forge
        dependencies:
          - _libgcc_mutex=0.1=conda_forge
          - _openmp_mutex=4.5=2_gnu
          - aiofiles=22.1.0=pyhd8ed1ab_0
          - aiosqlite=0.18.0=pyhd8ed1ab_0
          - alembic=1.9.4=pyhd8ed1ab_0
          - anyio=3.6.2=pyhd8ed1ab_0
          - argon2-cffi=21.3.0=pyhd8ed1ab_0
          - argon2-cffi-bindings=21.2.0=py310h5764c6d_3
          - asttokens=2.2.1=pyhd8ed1ab_0
          - async_generator=1.10=py_0
          - attrs=22.2.0=pyh71513ae_0
          - babel=2.12.1=pyhd8ed1ab_1
          - backcall=0.2.0=pyh9f0ad1d_0
          - backports=1.0=pyhd8ed1ab_3
          - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
          - beautifulsoup4=4.11.2=pyha770c72_0
          - bleach=6.0.0=pyhd8ed1ab_0
          - blinker=1.5=pyhd8ed1ab_0
          - brotlipy=0.7.0=py310h5764c6d_1005
          - bzip2=1.0.8=h7f98852_4
          - c-ares=1.18.1=h7f98852_0
          - ca-certificates=2022.12.7=ha878542_0
          - certifi=2022.12.7=pyhd8ed1ab_0
          - certipy=0.1.3=py_0
          - cffi=1.15.1=py310h255011f_3
          - charset-normalizer=2.1.1=pyhd8ed1ab_0
          - colorama=0.4.6=pyhd8ed1ab_0
          - comm=0.1.2=pyhd8ed1ab_0
          - conda=23.1.0=py310hff52083_0
          - conda-package-handling=2.0.2=pyh38be061_0
          - conda-package-streaming=0.7.0=pyhd8ed1ab_1
          - configurable-http-proxy=4.5.4=he2f69ee_2
          - cryptography=39.0.2=py310h34c0648_0
          - debugpy=1.6.6=py310heca2aa9_0
          - decorator=5.1.1=pyhd8ed1ab_0
          - defusedxml=0.7.1=pyhd8ed1ab_0
          - entrypoints=0.4=pyhd8ed1ab_0
          - executing=1.2.0=pyhd8ed1ab_0
          - flit-core=3.8.0=pyhd8ed1ab_0
          - fmt=9.1.0=h924138e_0
          - greenlet=2.0.2=py310heca2aa9_0
          - icu=70.1=h27087fc_0
          - idna=3.4=pyhd8ed1ab_0
          - importlib-metadata=6.0.0=pyha770c72_0
          - importlib_metadata=6.0.0=hd8ed1ab_0
          - importlib_resources=5.12.0=pyhd8ed1ab_0
          - ipykernel=6.21.2=pyh210e3f2_0
          - ipython=8.11.0=pyh41d4057_0
          - ipython_genutils=0.2.0=py_1
          - jedi=0.18.2=pyhd8ed1ab_0
          - jinja2=3.1.2=pyhd8ed1ab_1
          - json5=0.9.5=pyh9f0ad1d_0
          - jsonschema=4.17.3=pyhd8ed1ab_0
          - jupyter_client=8.0.3=pyhd8ed1ab_0
          - jupyter_core=5.2.0=py310hff52083_0
          - jupyter_events=0.6.3=pyhd8ed1ab_0
          - jupyter_server=2.3.0=pyhd8ed1ab_0
          - jupyter_server_fileid=0.8.0=pyhd8ed1ab_0
          - jupyter_server_terminals=0.4.4=pyhd8ed1ab_1
          - jupyter_server_ydoc=0.6.1=pyhd8ed1ab_0
          - jupyter_telemetry=0.1.0=pyhd8ed1ab_1
          - jupyter_ydoc=0.2.2=pyhd8ed1ab_0
          - jupyterhub=3.1.1=pyh2a2186d_0
          - jupyterhub-base=3.1.1=pyh2a2186d_0
          - jupyterlab=3.6.1=pyhd8ed1ab_0
          - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0
          - jupyterlab_server=2.19.0=pyhd8ed1ab_0
          - keyutils=1.6.1=h166bdaf_0
          - krb5=1.20.1=h81ceb04_0
          - ld_impl_linux-64=2.40=h41732ed_0
          - libarchive=3.6.2=h3d51595_0
          - libcurl=7.88.1=hdc1c0ab_0
          - libedit=3.1.20191231=he28a2e2_2
          - libev=4.33=h516909a_1
          - libffi=3.4.2=h7f98852_5
          - libgcc-ng=12.2.0=h65d4601_19
          - libgomp=12.2.0=h65d4601_19
          - libiconv=1.17=h166bdaf_0
          - libmamba=1.3.1=hcea66bb_1
          - libmambapy=1.3.1=py310h1428755_1
          - libnghttp2=1.52.0=h61bc06f_0
          - libnsl=2.0.0=h7f98852_0
          - libsodium=1.0.18=h36c2ea0_1
          - libsolv=0.7.23=h3eb15da_0
          - libsqlite=3.40.0=h753d276_0
          - libssh2=1.10.0=hf14f497_3
          - libstdcxx-ng=12.2.0=h46fd767_19
          - libuuid=2.32.1=h7f98852_1000
          - libuv=1.44.2=h166bdaf_0
          - libxml2=2.10.3=h7463322_0
          - libzlib=1.2.13=h166bdaf_4
          - lz4-c=1.9.4=hcb278e6_0
          - lzo=2.10=h516909a_1000
          - mako=1.2.4=pyhd8ed1ab_0
          - mamba=1.3.1=py310h51d5547_1
          - markupsafe=2.1.2=py310h1fa729e_0
          - matplotlib-inline=0.1.6=pyhd8ed1ab_0
          - mistune=2.0.5=pyhd8ed1ab_0
          - nbclassic=0.5.2=pyhd8ed1ab_0
          - nbclient=0.7.2=pyhd8ed1ab_0
          - nbconvert=7.2.9=pyhd8ed1ab_0
          - nbconvert-core=7.2.9=pyhd8ed1ab_0
          - nbconvert-pandoc=7.2.9=pyhd8ed1ab_0
          - nbformat=5.7.3=pyhd8ed1ab_0
          - ncurses=6.3=h27087fc_1
          - nest-asyncio=1.5.6=pyhd8ed1ab_0
          - nodejs=18.13.0=h8d033a5_0
          - notebook=6.5.2=pyha770c72_1
          - notebook-shim=0.2.2=pyhd8ed1ab_0
          - oauthlib=3.2.2=pyhd8ed1ab_0
          - openssl=3.0.8=h0b41bf4_0
          - packaging=23.0=pyhd8ed1ab_0
          - pamela=1.0.0=py_0
          - pandoc=2.19.2=h32600fe_1
          - pandocfilters=1.5.0=pyhd8ed1ab_0
          - parso=0.8.3=pyhd8ed1ab_0
          - pexpect=4.8.0=pyh1a96a4e_2
          - pickleshare=0.7.5=py_1003
          - pip=23.0.1=pyhd8ed1ab_0
          - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_0
          - platformdirs=3.0.0=pyhd8ed1ab_0
          - pluggy=1.0.0=pyhd8ed1ab_5
          - prometheus_client=0.16.0=pyhd8ed1ab_0
          - prompt-toolkit=3.0.38=pyha770c72_0
          - prompt_toolkit=3.0.38=hd8ed1ab_0
          - psutil=5.9.4=py310h5764c6d_0
          - ptyprocess=0.7.0=pyhd3deb0d_0
          - pure_eval=0.2.2=pyhd8ed1ab_0
          - pybind11-abi=4=hd8ed1ab_3
          - pycosat=0.6.4=py310h5764c6d_1
          - pycparser=2.21=pyhd8ed1ab_0
          - pycurl=7.45.1=py310h60f9ec7_3
          - pygments=2.14.0=pyhd8ed1ab_0
          - pyjwt=2.6.0=pyhd8ed1ab_0
          - pyopenssl=23.0.0=pyhd8ed1ab_0
          - pyrsistent=0.19.3=py310h1fa729e_0
          - pysocks=1.7.1=pyha2e5f31_6
          - python=3.10.9=he550d4f_0_cpython
          - python-dateutil=2.8.2=pyhd8ed1ab_0
          - python-fastjsonschema=2.16.3=pyhd8ed1ab_0
          - python-json-logger=2.0.7=pyhd8ed1ab_0
          - python_abi=3.10=3_cp310
          - pytz=2022.7.1=pyhd8ed1ab_0
          - pyyaml=6.0=py310h5764c6d_5
          - pyzmq=25.0.0=py310h059b190_0
          - readline=8.1.2=h0f457ee_0
          - reproc=14.2.4=h0b41bf4_0
          - reproc-cpp=14.2.4=hcb278e6_0
          - requests=2.28.2=pyhd8ed1ab_0
          - rfc3339-validator=0.1.4=pyhd8ed1ab_0
          - rfc3986-validator=0.1.1=pyh9f0ad1d_0
          - ruamel.yaml=0.17.21=py310h5764c6d_2
          - ruamel.yaml.clib=0.2.7=py310h1fa729e_1
          - send2trash=1.8.0=pyhd8ed1ab_0
          - setuptools=67.4.0=pyhd8ed1ab_0
          - six=1.16.0=pyh6c4a22f_0
          - sniffio=1.3.0=pyhd8ed1ab_0
          - soupsieve=2.3.2.post1=pyhd8ed1ab_0
          - sqlalchemy=2.0.4=py310h1fa729e_0
          - stack_data=0.6.2=pyhd8ed1ab_0
          - terminado=0.17.1=pyh41d4057_0
          - tinycss2=1.2.1=pyhd8ed1ab_0
          - tk=8.6.12=h27826a3_0
          - tomli=2.0.1=pyhd8ed1ab_0
          - toolz=0.12.0=pyhd8ed1ab_0
          - tornado=6.2=py310h5764c6d_1
          - tqdm=4.64.1=pyhd8ed1ab_0
          - traitlets=5.9.0=pyhd8ed1ab_0
          - typing-extensions=4.4.0=hd8ed1ab_0
          - typing_extensions=4.4.0=pyha770c72_0
          - tzdata=2022g=h191b570_0
          - urllib3=1.26.14=pyhd8ed1ab_0
          - wcwidth=0.2.6=pyhd8ed1ab_0
          - webencodings=0.5.1=py_1
          - websocket-client=1.5.1=pyhd8ed1ab_0
          - wheel=0.38.4=pyhd8ed1ab_0
          - xz=5.2.6=h166bdaf_0
          - y-py=0.5.9=py310h4426083_0
          - yaml=0.2.5=h7f98852_2
          - yaml-cpp=0.7.0=h27087fc_2
          - ypy-websocket=0.8.2=pyhd8ed1ab_0
          - zeromq=4.3.4=h9c3ff4c_1
          - zipp=3.15.0=pyhd8ed1ab_0
          - zlib=1.2.13=h166bdaf_4
          - zstandard=0.19.0=py310hdeb6495_1
          - zstd=1.5.2=h3eb15da_6
        prefix: /opt/conda
Command Line Output
(base) jovyan@58c6fe0ec3da:~$ jupyter lab --debug
[D 2023-04-05 22:17:52.361 ServerApp] Searching ['/home/jovyan/.jupyter', '/home/jovyan/.local/etc/jupyter', '/opt/conda/etc/jupyter', '/usr/local/etc/jupyter', '/etc/jupyter'] for config files
[D 2023-04-05 22:17:52.361 ServerApp] Looking for jupyter_config in /etc/jupyter
[D 2023-04-05 22:17:52.361 ServerApp] Looking for jupyter_config in /usr/local/etc/jupyter
[D 2023-04-05 22:17:52.361 ServerApp] Looking for jupyter_config in /opt/conda/etc/jupyter
[D 2023-04-05 22:17:52.362 ServerApp] Looking for jupyter_config in /home/jovyan/.local/etc/jupyter
[D 2023-04-05 22:17:52.362 ServerApp] Looking for jupyter_config in /home/jovyan/.jupyter
[D 2023-04-05 22:17:52.362 ServerApp] Looking for jupyter_server_config in /etc/jupyter
[D 2023-04-05 22:17:52.363 ServerApp] Loaded config file: /etc/jupyter/jupyter_server_config.py
[D 2023-04-05 22:17:52.363 ServerApp] Looking for jupyter_server_config in /usr/local/etc/jupyter
[D 2023-04-05 22:17:52.363 ServerApp] Looking for jupyter_server_config in /opt/conda/etc/jupyter
[D 2023-04-05 22:17:52.363 ServerApp] Looking for jupyter_server_config in /home/jovyan/.local/etc/jupyter
[D 2023-04-05 22:17:52.363 ServerApp] Looking for jupyter_server_config in /home/jovyan/.jupyter
[D 2023-04-05 22:17:52.365 ServerApp] Paths used for configuration of jupyter_server_config: 
        /etc/jupyter/jupyter_server_config.json
[D 2023-04-05 22:17:52.366 ServerApp] Paths used for configuration of jupyter_server_config: 
        /usr/local/etc/jupyter/jupyter_server_config.json
[D 2023-04-05 22:17:52.366 ServerApp] Paths used for configuration of jupyter_server_config: 
        /opt/conda/etc/jupyter/jupyter_server_config.d/jupyter_server_fileid.json
        /opt/conda/etc/jupyter/jupyter_server_config.d/jupyter_server_terminals.json
        /opt/conda/etc/jupyter/jupyter_server_config.d/jupyter_server_ydoc.json
        /opt/conda/etc/jupyter/jupyter_server_config.d/jupyterlab.json
        /opt/conda/etc/jupyter/jupyter_server_config.d/nbclassic.json
        /opt/conda/etc/jupyter/jupyter_server_config.d/notebook_shim.json
        /opt/conda/etc/jupyter/jupyter_server_config.json
[D 2023-04-05 22:17:52.366 ServerApp] Paths used for configuration of jupyter_server_config: 
        /home/jovyan/.local/etc/jupyter/jupyter_server_config.json
[D 2023-04-05 22:17:52.366 ServerApp] Paths used for configuration of jupyter_server_config: 
        /home/jovyan/.jupyter/jupyter_server_config.json
[I 2023-04-05 22:17:52.368 ServerApp] Package jupyterlab took 0.0000s to import
[I 2023-04-05 22:17:52.371 ServerApp] Package jupyter_server_fileid took 0.0021s to import
[I 2023-04-05 22:17:52.375 ServerApp] Package jupyter_server_terminals took 0.0045s to import
[I 2023-04-05 22:17:52.389 ServerApp] Package jupyter_server_ydoc took 0.0131s to import
[I 2023-04-05 22:17:52.389 ServerApp] Package nbclassic took 0.0000s to import
[W 2023-04-05 22:17:52.391 ServerApp] A `_jupyter_server_extension_points` function was not found in nbclassic. Instead, a `_jupyter_server_extension_paths` function was found and will be used for now. This function name will be deprecated in future releases of Jupyter Server.
[I 2023-04-05 22:17:52.391 ServerApp] Package notebook_shim took 0.0000s to import
[W 2023-04-05 22:17:52.391 ServerApp] A `_jupyter_server_extension_points` function was not found in notebook_shim. Instead, a `_jupyter_server_extension_paths` function was found and will be used for now. This function name will be deprecated in future releases of Jupyter Server.
[D 2023-04-05 22:17:52.394 FileIdExtension] Config changed: {'ServerApp': {'log_level': 'DEBUG', 'ip': '0.0.0.0', 'open_browser': False, 'jpserver_extensions': }, 'ExtensionApp': {'log_level': 'DEBUG'}, 'InlineBackend': {'figure_formats': {'pdf', 'png', 'svg', 'jpeg'}}, 'FileContentsManager': {'delete_to_trash': False}}
[D 2023-04-05 22:17:52.395 ServerApp] Config changed: {'ServerApp': {'log_level': 'DEBUG', 'ip': '0.0.0.0', 'open_browser': False, 'jpserver_extensions': }, 'ExtensionApp': {'log_level': 'DEBUG'}, 'InlineBackend': {'figure_formats': {'pdf', 'png', 'svg', 'jpeg'}}, 'FileContentsManager': {'delete_to_trash': False}}
[I 2023-04-05 22:17:52.396 ServerApp] jupyter_server_fileid | extension was successfully linked.
[D 2023-04-05 22:17:52.399 TerminalsExtensionApp] Config changed: {'ServerApp': {'log_level': 'DEBUG', 'ip': '0.0.0.0', 'open_browser': False, 'jpserver_extensions': }, 'ExtensionApp': {'log_level': 'DEBUG'}, 'InlineBackend': {'figure_formats': {'pdf', 'png', 'svg', 'jpeg'}}, 'FileContentsManager': {'delete_to_trash': False}}
[D 2023-04-05 22:17:52.400 ServerApp] Config changed: {'ServerApp': {'log_level': 'DEBUG', 'ip': '0.0.0.0', 'open_browser': False, 'jpserver_extensions': }, 'ExtensionApp': {'log_level': 'DEBUG'}, 'InlineBackend': {'figure_formats': {'pdf', 'png', 'svg', 'jpeg'}}, 'FileContentsManager': {'delete_to_trash': False}}
[I 2023-04-05 22:17:52.400 ServerApp] jupyter_server_terminals | extension was successfully linked.
[D 2023-04-05 22:17:52.403 YDocExtension] Config changed: {'ServerApp': {'log_level': 'DEBUG', 'ip': '0.0.0.0', 'open_browser': False, 'jpserver_extensions': }, 'ExtensionApp': {'log_level': 'DEBUG'}, 'InlineBackend': {'figure_formats': {'pdf', 'png', 'svg', 'jpeg'}}, 'FileContentsManager': {'delete_to_trash': False}}
[D 2023-04-05 22:17:52.404 ServerApp] Config changed: {'ServerApp': {'log_level': 'DEBUG', 'ip': '0.0.0.0', 'open_browser': False, 'jpserver_extensions': }, 'ExtensionApp': {'log_level': 'DEBUG'}, 'InlineBackend': {'figure_formats': {'pdf', 'png', 'svg', 'jpeg'}}, 'FileContentsManager': {'delete_to_trash': False}}
[I 2023-04-05 22:17:52.405 ServerApp] jupyter_server_ydoc | extension was successfully linked.
[D 2023-04-05 22:17:52.409 LabApp] Config changed: {'NotebookApp': {}, 'ServerApp': {'log_level': 'DEBUG', 'ip': '0.0.0.0', 'open_browser': False, 'jpserver_extensions': }, 'ExtensionApp': {'log_level': 'DEBUG'}, 'InlineBackend': {'figure_formats': {'pdf', 'png', 'svg', 'jpeg'}}, 'FileContentsManager': {'delete_to_trash': False}}
[I 2023-04-05 22:17:52.409 ServerApp] jupyterlab | extension was successfully linked.
[W 2023-04-05 22:17:52.411 NotebookApp] 'ip' has moved from NotebookApp to ServerApp. This config will be passed to ServerApp. Be sure to update your config before our next release.
[W 2023-04-05 22:17:52.411 NotebookApp] 'ip' has moved from NotebookApp to ServerApp. This config will be passed to ServerApp. Be sure to update your config before our next release.
[D 2023-04-05 22:17:52.414 NotebookApp] Config changed: {'NotebookApp': {'open_browser': False}, 'ServerApp': {'ip': '0.0.0.0', 'log_level': 'DEBUG', 'open_browser': False, 'jpserver_extensions': }, 'InlineBackend': {'figure_formats': {'pdf', 'png', 'svg', 'jpeg'}}, 'FileContentsManager': {'delete_to_trash': False}, 'ExtensionApp': {'log_level': 'DEBUG'}}
[I 2023-04-05 22:17:52.414 ServerApp] nbclassic | extension was successfully linked.
[D 2023-04-05 22:17:52.575 ServerApp] Paths used for configuration of jupyter_notebook_config: 
        /home/jovyan/.jupyter/jupyter_notebook_config.json
[D 2023-04-05 22:17:52.575 ServerApp] Paths used for configuration of jupyter_notebook_config: 
        /etc/jupyter/jupyter_notebook_config.json
[D 2023-04-05 22:17:52.575 ServerApp] Paths used for configuration of jupyter_notebook_config: 
        /usr/local/etc/jupyter/jupyter_notebook_config.json
[D 2023-04-05 22:17:52.575 ServerApp] Paths used for configuration of jupyter_notebook_config: 
        /opt/conda/etc/jupyter/jupyter_notebook_config.d/jupyter_server_ydoc.json
        /opt/conda/etc/jupyter/jupyter_notebook_config.d/jupyterlab.json
        /opt/conda/etc/jupyter/jupyter_notebook_config.json
[D 2023-04-05 22:17:52.575 ServerApp] Paths used for configuration of jupyter_notebook_config: 
        /home/jovyan/.local/etc/jupyter/jupyter_notebook_config.json
[D 2023-04-05 22:17:52.576 ServerApp] Paths used for configuration of jupyter_notebook_config: 
        /home/jovyan/.jupyter/jupyter_notebook_config.json
[I 2023-04-05 22:17:52.576 ServerApp] notebook_shim | extension was successfully linked.
[D 2023-04-05 22:17:52.576 ServerApp] Config changed: {'ExtensionApp': {'log_level': 'DEBUG'}, 'InlineBackend': {'figure_formats': {'pdf', 'png', 'svg', 'jpeg'}}, 'FileContentsManager': {'delete_to_trash': False}, 'NotebookApp': {'open_browser': False}, 'ServerApp': {'ip': '0.0.0.0', 'log_level': 'DEBUG', 'open_browser': False, 'jpserver_extensions': }}
[I 2023-04-05 22:17:52.646 ServerApp] notebook_shim | extension was successfully loaded.
[I 2023-04-05 22:17:52.646 FileIdExtension] Configured File ID manager: ArbitraryFileIdManager
[I 2023-04-05 22:17:52.646 FileIdExtension] ArbitraryFileIdManager : Configured root dir: /home/jovyan
[I 2023-04-05 22:17:52.646 FileIdExtension] ArbitraryFileIdManager : Configured database path: /home/jovyan/.local/share/jupyter/file_id_manager.db
[I 2023-04-05 22:17:52.646 FileIdExtension] ArbitraryFileIdManager : Successfully connected to database file.
[I 2023-04-05 22:17:52.646 FileIdExtension] ArbitraryFileIdManager : Creating File ID tables and indices with journal_mode = DELETE
[I 2023-04-05 22:17:52.646 FileIdExtension] Attached event listeners.
[I 2023-04-05 22:17:52.647 ServerApp] jupyter_server_fileid | extension was successfully loaded.
[I 2023-04-05 22:17:52.647 ServerApp] jupyter_server_terminals | extension was successfully loaded.
[I 2023-04-05 22:17:52.648 ServerApp] jupyter_server_ydoc | extension was successfully loaded.
[I 2023-04-05 22:17:52.648 LabApp] JupyterLab extension loaded from /opt/conda/lib/python3.10/site-packages/jupyterlab
[I 2023-04-05 22:17:52.648 LabApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 2023-04-05 22:17:52.650 ServerApp] jupyterlab | extension was successfully loaded.

  _   _          _      _
 | | | |_ __  __| |__ _| |_ ___
 | |_| | '_ \/ _` / _` |  _/ -_)
  \___/| .__/\__,_\__,_|\__\___|
       |_|

Read the migration plan to Notebook 7 to learn about the new features and the actions to take if you are using extensions.

https://jupyter-notebook.readthedocs.io/en/latest/migrate_to_notebook7.html

Please note that updating to Notebook 7 might break some of your extensions.

[I 2023-04-05 22:17:52.653 ServerApp] nbclassic | extension was successfully loaded.
[I 2023-04-05 22:17:52.653 ServerApp] The port 8888 is already in use, trying another port.
[I 2023-04-05 22:17:52.653 ServerApp] Serving notebooks from local directory: /home/jovyan
[I 2023-04-05 22:17:52.653 ServerApp] Jupyter Server 2.3.0 is running at:
[I 2023-04-05 22:17:52.654 ServerApp] http://58c6fe0ec3da:8889/lab?token=cbfcab2ca1cc012c801094727d5bb60d86dde0daa874b411
[I 2023-04-05 22:17:52.654 ServerApp]     http://127.0.0.1:8889/lab?token=cbfcab2ca1cc012c801094727d5bb60d86dde0daa874b411
[I 2023-04-05 22:17:52.654 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 2023-04-05 22:17:52.656 ServerApp] 

    To access the server, open this file in a browser:
        file:///home/jovyan/.local/share/jupyter/runtime/jpserver-3396-open.html
    Or copy and paste one of these URLs:
        http://58c6fe0ec3da:8889/lab?token=cbfcab2ca1cc012c801094727d5bb60d86dde0daa874b411
        http://127.0.0.1:8889/lab?token=cbfcab2ca1cc012c801094727d5bb60d86dde0daa874b411
Browser Output
N/A
welcome[bot] commented 1 year ago

Thank you for opening your first issue in this project! Engagement like this is essential for open source projects! :hugs:
If you haven't done so already, check out Jupyter's Code of Conduct. Also, please try to follow the issue template as it helps other other community members to contribute more effectively. welcome You can meet the other Jovyans by joining our Discourse forum. There is also an intro thread there where you can stop by and say Hi! :wave:
Welcome to the Jupyter community! :tada:

krassowski commented 1 year ago

JupyterLab 4 (currently in beta) uses a new version of CodeMirror which is said to have better performance. Would you mind trying out the pre-release to see if this is satisfactory?

How does the number of layer translates to performance, how did you measure it? We made a number of performance improvements for 4.0 and being able to compare specific statistics for bottlenecks would be very helpful.

krassowski commented 1 month ago

@alecuea is this still a problem with the more recent versions of Safari after the substantial layout engine refactor in webkit or can we close this issue?