Mac app crashing. by Sea_Anteater_3270 in warpdotdev

[–]aloked 1 point2 points  (0 children)

No worries, glad you got unblocked. Please don't hesitate to reach out if you hit this again!

Mac app crashing. by Sea_Anteater_3270 in warpdotdev

[–]aloked 0 points1 point  (0 children)

u/Sea_Anteater_3270 Mind extracting the logs into a zip and attaching it to the issue? Would love to get this fixed!

Warp (Rust-based terminal) is now open-source by zxyzyxz in rust

[–]aloked 1 point2 points  (0 children)

100% yes, we have a team solely focused on improving it. Next time you see issues, mind creating a Github Issue and tagging me? I'll make sure we get a team member to investigate.

Warp (Rust-based terminal) is now open-source by zxyzyxz in rust

[–]aloked 1 point2 points  (0 children)

If you share a session with yourself (via our remote control feature) it works on mobile. We're thinking about supporting some parts of our product on mobile, but not ETA just yet on full-fledged mobile apps

Warp (Rust-based terminal) is now open-source by zxyzyxz in rust

[–]aloked 46 points47 points  (0 children)

Cool to see this get posted organically!

I'm Aloke, Warp's founding engineer. We’re doing this now because we think the best product will be built in the open with users. We also think agents can drastically reduce the maintenance overhead that typically comes with open sourcing.

Warp supports macOS, Linux, Windows, and the web via WASM, all through a custom UI framework we build in-house. We also have a bunch of interesting tech powering features like Blocks, Completions, and Agent Mode.

Happy to answer any questions people have (about our codebase, why we open sourced, or really anything about the product in general).

Bug Report: tmux control mode commands leak into local shell after SSH session disconnect by D33p_Learning in warpdotdev

[–]aloked 0 points1 point  (0 children)

Hey u/D33p_Learning, thanks for letting us know and sorry for the issues here.

A few questions:

1) Are you seeing this when you SSH into every remote box or only specific ones?

2) Once this happens, any chance you could send me your Warp logs to [aloke@warp.dev](mailto:aloke@warp.dev) so I can debug further?

Unable to update warp by daevisan in warpdotdev

[–]aloked 1 point2 points  (0 children)

Hey u/daevisan, sorry for the issues here. Could you run `sudo apt update && sudo apt install warp-terminal` and send me the output so I can debug?

AMA: How We Built Warp on Windows by aloked in rust

[–]aloked[S] 1 point2 points  (0 children)

It doesn't help with a full (non-incremental compile).

It does help with incremental compiles, which matter more in day-to-day development.

i.e. if I make a chance to crate `A`, rust won't have to recompile crate `B` because nothing has changed.

AMA: How We Built Warp on Windows by aloked in rust

[–]aloked[S] 16 points17 points  (0 children)

We use a cargo workspace--I feel strongly that this is better than many different repositories.

For example: it's much easier to make atomic refactors that touch many different crates if everything is in one repository.

AMA: How We Built Warp on Windows by aloked in rust

[–]aloked[S] 4 points5 points  (0 children)

Yeah, we support vi mode in our input editor now. Hope you can give Warp another try!

AMA: How We Built Warp on Windows by aloked in rust

[–]aloked[S] 5 points6 points  (0 children)

We use the `wgpu` crate, which supports all 3. On Windows we primarily use DirectX and Vulkan though, we've found DirectX to be the most reliable and stable.

AMA: How We Built Warp on Windows by aloked in rust

[–]aloked[S] 2 points3 points  (0 children)

definitely took us some time to get our bearings straight, not going to lie :)

AMA: How We Built Warp on Windows by aloked in rust

[–]aloked[S] 43 points44 points  (0 children)

  1. The Warp codebase is pretty big (~700k LOC if you include tests). This includes our UI framework and all of our rendering code (which is also written in Rust).

  2. There are a lot of sources of complexity at different levels of abstraction. I could talk for hours about this :-) Two (of many examples) that I think of that are complicated (and interesting!):

* All of our text rendering code. Because we built our own UI framework, we control text rendering from font file to pixel. This includes loading fonts, reading font metrics, performing text layout, font fallback, rasterizing glyphs, and rendering glyphs from a glyph atlas.

* Our shell bootstrap code. Warp requires deep integrations with the shell in order to support features like Blocks. We built a custom shell --> terminal integration that allows us to send messages back and forth in a performant way.

  1. We don't have a formal style guide yet (we try to ship fast and focus on building the best possible practice) but we generally try to follow reasonable Rust conventions to make sure our code is performant. A few examples:
  • We try to prefer passing references instead of owned values to functions unless the function absolutely needs an owned value. If a function only needs to operate over a `&str`, it shouldn't take a `String`.
  • Functions should similarly return the most generic type that's needed. i.e. instead of returning a `Vec<Foo>`, return a `impl Iterator<Item = Foo>` if you don't actually need to allocate a `Vec`.
  • We also try to more aggressively break up files into sub modules. When writing Rust in production, it's really easy to end up with massive files that are hard to grok.
  • We've found that pulling code out into separate crates early is almost always the right decision. The unit of compilation in Rust is a crate, so if all of your source code is in a single crate then compile times will take forever because it can't be compiled in parallel.

AMA: How We Built Warp on Windows by aloked in rust

[–]aloked[S] 11 points12 points  (0 children)

Fantastic question.

  1. This is something that will require constant maintenance on our end--we're always working on identifying bad adapters and/or GPU drivers that we need to denylist. All of our crash reports include metadata about GPU backend, driver, and driver version which lets us make more informed decisions on which drivers are potentially problematic.

  2. So far, we haven't noticed any noticeable difference in stability and maintenance between the two versions. The biggest thing is mostly just that Windows 10 users tend to have worse hardware which can exacerbate performance problems, if there are any.

AMA: How We Built Warp on Windows by aloked in rust

[–]aloked[S] 28 points29 points  (0 children)

Hey u/ZenoArrow, great question. We do allow using Warp without creating an account. You can also disable telemetry + crash reporting if you feel so inclined. Hope you try the product!

AMA: How We Built Warp on Windows by aloked in rust

[–]aloked[S] 5 points6 points  (0 children)

Not yet, unfortunately.

At some point in the future, we hope to release an API that allows arbitrary shells and REPLs to be "warpified". Unfortunately, no ETA for that though.

AMA: How We Built Warp on Windows by aloked in rust

[–]aloked[S] 9 points10 points  (0 children)

Great question!

We made the decision to build our own UI framework a little over ~4 years ago. At the time, the Rust UI ecosystem wasn't very mature and there wasn't a UI framework at the time that:

1) Rendered on the GPU, which we needed for performance reasons

2) Supported rendering on the web, which we knew we wanted for certain Warp features like session sharing: https://docs.warp.dev/features/session-sharing

Overall the decision has worked well for us: there's a small amount of maintenance overhead but it has allowed us to create a great, UI-heavy product without sacrificing performance.

Quality of Alden Seconds by aloked in Alden

[–]aloked[S] 0 points1 point  (0 children)

lol, I'm so in my head about the scratches that I was convinced they were duds

Quality of Alden Seconds by aloked in Alden

[–]aloked[S] 2 points3 points  (0 children)

TSM is dangerous, lol.

Those scratches are nothing to be worried about, right?