<feed xmlns='http://www.w3.org/2005/Atom'>
<title>r-alacritty.git/tests/ref, branch rahm</title>
<subtitle>My custom-patched version of alacritty.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/'/>
<entry>
<title>Split alacritty into a separate crates</title>
<updated>2019-04-28T13:24:58+00:00</updated>
<author>
<name>Theodore Dubois</name>
<email>tblodt@icloud.com</email>
</author>
<published>2019-04-28T13:24:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=dbd8538762ef8968a493e1bf996e8693479ca783'/>
<id>dbd8538762ef8968a493e1bf996e8693479ca783</id>
<content type='text'>
The crate containing the entry point is called alacritty, and the crate
containing everything else is called alacritty_terminal.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The crate containing the entry point is called alacritty, and the crate
containing everything else is called alacritty_terminal.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixing tabs in copy-paste</title>
<updated>2018-12-15T21:33:33+00:00</updated>
<author>
<name>Steve Blundy</name>
<email>sblundy@users.noreply.github.com</email>
</author>
<published>2018-12-15T21:33:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=0c3e28617a95b4ca30ad9bdbb9114f1e4d41dce5'/>
<id>0c3e28617a95b4ca30ad9bdbb9114f1e4d41dce5</id>
<content type='text'>
This resolves issues with copy-pasting tabs by including them in the
pasted string.

Selection of tabs is still inconsistent with what might be expected
based on other terminal emulators, however the behavior hasn't
regressed.

This fixes https://github.com/jwilm/alacritty/issues/219.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This resolves issues with copy-pasting tabs by including them in the
pasted string.

Selection of tabs is still inconsistent with what might be expected
based on other terminal emulators, however the behavior hasn't
regressed.

This fixes https://github.com/jwilm/alacritty/issues/219.</pre>
</div>
</content>
</entry>
<entry>
<title>Fix rendering of zero-width characters</title>
<updated>2018-12-09T15:28:22+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>chrisduerr@users.noreply.github.com</email>
</author>
<published>2018-12-09T15:28:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=1cebcd660bf0b6dc514341fe6bc7a392b1572849'/>
<id>1cebcd660bf0b6dc514341fe6bc7a392b1572849</id>
<content type='text'>
Instead of rendering zero-width characters as full characters, they are
now properly rendered without advancing the cursor.

Because of performance limitations, this implementation only supports up
to 5 zero-width characters per cell. However, as a result of this
limitation there should not be any performance impact.

This fixes #1317, fixes #696 and closes #1318.

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of rendering zero-width characters as full characters, they are
now properly rendered without advancing the cursor.

Because of performance limitations, this implementation only supports up
to 5 zero-width characters per cell. However, as a result of this
limitation there should not be any performance impact.

This fixes #1317, fixes #696 and closes #1318.

</pre>
</div>
</content>
</entry>
<entry>
<title>Fix failing test with `bench` feature</title>
<updated>2018-09-29T20:48:24+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>chrisduerr@users.noreply.github.com</email>
</author>
<published>2018-09-29T20:48:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=e01317d88593af7874da13c2043aa53336fb2d73'/>
<id>e01317d88593af7874da13c2043aa53336fb2d73</id>
<content type='text'>
Using the `bench` feature, `cargo test` was failing since one of the
benchmarks was running into a debug assertion for attempting to access a
line with an index beyond the grid length.

Since this issue was caused by the `len` property not being serialized
and deserialized, the `#[serde(skip)]` attribute has been changed to
`#[serde(default)]`. The ref-test has been edited to include the correct
grid length for proper deserialization.

This fixes #1604.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using the `bench` feature, `cargo test` was failing since one of the
benchmarks was running into a debug assertion for attempting to access a
line with an index beyond the grid length.

Since this issue was caused by the `len` property not being serialized
and deserialized, the `#[serde(skip)]` attribute has been changed to
`#[serde(default)]`. The ref-test has been edited to include the correct
grid length for proper deserialization.

This fixes #1604.</pre>
</div>
</content>
</entry>
<entry>
<title>Dynamically initialize grid storage</title>
<updated>2018-09-24T18:40:09+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>chrisduerr@users.noreply.github.com</email>
</author>
<published>2018-09-24T18:40:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=3d7e88e8a975f40996aaa71d951842db6f2fccbb'/>
<id>3d7e88e8a975f40996aaa71d951842db6f2fccbb</id>
<content type='text'>
Previously Alacritty has initialized all lines in the buffer as soon as
it is started. This had the effect that terminals which aren't making
use of the scrollback buffer yet, would still consume large amounts of
memory, potentially even freezing the system at startup.

To resolve this problem, the grid is now dynamically resized in chunks
of `1000` rows. The initial size is just the visible area itself, then
every time lines are written to the terminal emulator, the grid storage
is grown when required.

With the worst-case scenario of having 100_000 lines scrollback
configured, this change improves startup performance at the cost of
scrolling performance.

On my machine the startup changes from ~0.3 to ~0.2 seconds.

The scrolling performance with large throughput is not affected, however
it is slowed down when the number of lines scrolled are close to the
100_000 configured as scrollback. The most taxing benchmark I've found
for this was running `yes | dd count=500 &gt; 500.txt` (note the relatively
small file size). This will cause a slowdown on the first run from 0.05s
to 0.15s. While this is significant, it lines up with the time saved at
startup.

This fixes #1236.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously Alacritty has initialized all lines in the buffer as soon as
it is started. This had the effect that terminals which aren't making
use of the scrollback buffer yet, would still consume large amounts of
memory, potentially even freezing the system at startup.

To resolve this problem, the grid is now dynamically resized in chunks
of `1000` rows. The initial size is just the visible area itself, then
every time lines are written to the terminal emulator, the grid storage
is grown when required.

With the worst-case scenario of having 100_000 lines scrollback
configured, this change improves startup performance at the cost of
scrolling performance.

On my machine the startup changes from ~0.3 to ~0.2 seconds.

The scrolling performance with large throughput is not affected, however
it is slowed down when the number of lines scrolled are close to the
100_000 configured as scrollback. The most taxing benchmark I've found
for this was running `yes | dd count=500 &gt; 500.txt` (note the relatively
small file size). This will cause a slowdown on the first run from 0.05s
to 0.15s. While this is significant, it lines up with the time saved at
startup.

This fixes #1236.
</pre>
</div>
</content>
</entry>
<entry>
<title>Optimize Row::reset</title>
<updated>2018-06-02T16:56:50+00:00</updated>
<author>
<name>Joe Wilm</name>
<email>joe@jwilm.com</email>
</author>
<published>2018-05-19T18:18:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=c61a912f6221a320ec4787cd883527b0e7f26a8e'/>
<id>c61a912f6221a320ec4787cd883527b0e7f26a8e</id>
<content type='text'>
Now, only cells that have been used are cleared. This is achieved by
using a "occupied" memo on the Row itself. The value, `occ`, is updated
wherever the Row is accessed mutably, and it's cleared to zero in
Row::reset.

The tests for grid scroll_up and scroll_down were updated to include a
test on the value `occ` and slightly refactored, but are otherwise
equivalent to the previous implementation of those tests.

Because of the change to the `Row` struct, the ref tests were updated so
Deserialization keeps working as expected.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now, only cells that have been used are cleared. This is achieved by
using a "occupied" memo on the Row itself. The value, `occ`, is updated
wherever the Row is accessed mutably, and it's cleared to zero in
Row::reset.

The tests for grid scroll_up and scroll_down were updated to include a
test on the value `occ` and slightly refactored, but are otherwise
equivalent to the previous implementation of those tests.

Because of the change to the `Row` struct, the ref tests were updated so
Deserialization keeps working as expected.
</pre>
</div>
</content>
</entry>
<entry>
<title>Truncate invisible lines before storing ref-tests</title>
<updated>2018-06-02T16:56:50+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>contact@christianduerr.com</email>
</author>
<published>2018-05-15T20:36:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=ac93f6d03198c1826dbed60fa8283aeb8d1a577d'/>
<id>ac93f6d03198c1826dbed60fa8283aeb8d1a577d</id>
<content type='text'>
Because there is no good way to store invisible lines in a backwards-
and forwards-compatible way, they buffer now gets truncated before
dumping the state of a grid when creating a ref-test.

This involved a few workaround of which a few required adding additional
methods which are only used in ref-tests, these should be minimal
though.

Since this required the creation of a truncation method anyways, some
logic has been added which automatically truncates the invisible buffer
when there are more than X (set to 100) invisible lines. This should not
impact performance because it rarely occurs, but it could save a bit of
memory when the history size is shrunk during runtime (see #1293).

This also adds an optional `config.json` file to the ref-test output
where it is possible to manually specify variables which should override
config defaults, this has been used only for history_size so far.

Creating a new ref-test does also still work, so there was no regression
here, if history size is altered, the config.json just has to be created
manually with the content `{"history_size":HIST_SIZE}`, where
`HIST_SIZE` is the desired history size.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Because there is no good way to store invisible lines in a backwards-
and forwards-compatible way, they buffer now gets truncated before
dumping the state of a grid when creating a ref-test.

This involved a few workaround of which a few required adding additional
methods which are only used in ref-tests, these should be minimal
though.

Since this required the creation of a truncation method anyways, some
logic has been added which automatically truncates the invisible buffer
when there are more than X (set to 100) invisible lines. This should not
impact performance because it rarely occurs, but it could save a bit of
memory when the history size is shrunk during runtime (see #1293).

This also adds an optional `config.json` file to the ref-test output
where it is possible to manually specify variables which should override
config defaults, this has been used only for history_size so far.

Creating a new ref-test does also still work, so there was no regression
here, if history size is altered, the config.json just has to be created
manually with the content `{"history_size":HIST_SIZE}`, where
`HIST_SIZE` is the desired history size.
</pre>
</div>
</content>
</entry>
<entry>
<title>Re-record grid_reset test</title>
<updated>2018-06-02T16:56:50+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>contact@christianduerr.com</email>
</author>
<published>2018-04-28T14:22:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=dec3ee20e93914976b709634efb63332a9d79ad3'/>
<id>dec3ee20e93914976b709634efb63332a9d79ad3</id>
<content type='text'>
The old grid_reset test expected the complete grid to be reset, but
instead of resetting the whole grid the `grid.scroll_limit` is just set
to `0` now. This leads to the rest of the grid still containing the old
information.

To fix this test it has simply be re-recorded. The new tests now still
contains the complete history but it is checked that the `scroll_limit`
is correctly reset.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The old grid_reset test expected the complete grid to be reset, but
instead of resetting the whole grid the `grid.scroll_limit` is just set
to `0` now. This leads to the rest of the grid still containing the old
information.

To fix this test it has simply be re-recorded. The new tests now still
contains the complete history but it is checked that the `scroll_limit`
is correctly reset.
</pre>
</div>
</content>
</entry>
<entry>
<title>Reduce size of ref tests</title>
<updated>2018-06-02T16:56:50+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>contact@christianduerr.com</email>
</author>
<published>2018-04-24T17:08:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=31c0f291e0f1b8489366e011a5206e981a68beb2'/>
<id>31c0f291e0f1b8489366e011a5206e981a68beb2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Reset grid content when running `reset`</title>
<updated>2018-06-02T16:56:50+00:00</updated>
<author>
<name>Christian Duerr</name>
<email>contact@christianduerr.com</email>
</author>
<published>2018-04-14T15:37:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/r-alacritty.git/commit/?id=d39370514a127faa05832701bb4a56fc6811de9d'/>
<id>d39370514a127faa05832701bb4a56fc6811de9d</id>
<content type='text'>
In the current scrollback PR the `reset` command does not affect the
scrollback history. To make sure the terminal is properly reset, it
should clear the scrollback history.

This commit fixes this by creating a new and empty grid whenever `reset`
is executed. It takes the current dimensions and history size from the
old grid.

Right now there's an empty ref-test called `grid_reset` without any
content, this should be implemented once #1244 is resolved.

This fixes #1242.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the current scrollback PR the `reset` command does not affect the
scrollback history. To make sure the terminal is properly reset, it
should clear the scrollback history.

This commit fixes this by creating a new and empty grid whenever `reset`
is executed. It takes the current dimensions and history size from the
old grid.

Right now there's an empty ref-test called `grid_reset` without any
content, this should be implemented once #1244 is resolved.

This fixes #1242.
</pre>
</div>
</content>
</entry>
</feed>
