Skip to content

Latest commit

 

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rweb

rweb is a Rust implementation of a small web browser, built while following Web Browser Engineering by Pavel Panchekha and Chris Harrelson.

The goal of this project is to learn how browsers work by building the core pieces step by step.

Development

The development requires:

  • just
  • rust nightly toolchain

Configure Git to use the repository's pre-commit hook:

just setup-hooks

Run just to list the available recipes.

Status

This repository is in an early stage. The project structure and implementation will grow as chapters from Web Browser Engineering are completed.

Completed:

  • Chapter 1. Downloading Web Pages
    • 1-1 HTTP/1.1
    • 1-2 File URLs (does not default to a file when no URL is provided)
    • 1-3 data
    • 1-4 Entities
    • 1-5 view-source
    • 1-6 Keep-alive
    • 1-7 Redirects
    • 1-8 Caching
    • 1-9 Compression
  • Chapter 2. Drawing to the Screen
    • 2-1 Line breaks
    • 2-2 Mouse wheel
    • 2-3 Resizing
    • 2-4 Scrollbar
    • 2-5 Emoji
    • 2-6 about:blank
    • 2-7 Alternate text direction
  • Chapter 3. Formatting Text
    • 3-1 Centered text
    • 3-2 Superscripts
    • 3-3 Soft hyphens
    • 3-4 Small caps
    • 3-5 Preformatted text
  • Chapter 4. Constructing an HTML Tree
    • 4-1 Comments
    • 4-2 Paragraphs
    • 4-3 Scripts
    • 4-4 Quoted attributes
    • 4-5 Syntax highlighting
    • 4-6 Mis-nested formatting tags
  • Chapter 5. Laying Out Pages
    • 5-1 Links bar
    • 5-2 Hidden head
    • 5-3 Bullets
    • 5-4 Table of contents
    • 5-5 Anonymous block boxes
    • 5-6 Run-ins
  • Chapter 6. Applying Author Styles
    • 6-1 Fonts
    • 6-2 Width/height
    • 6-3 Class selectors
    • 6-4 display
    • 6-5 Shorthand properties
    • 6-6 Inline style sheets
    • 6-7 Fast descendant selectors
    • 6-8 Selector sequences
    • 6-9 !important
    • 6-10 :has selectors
  • Chapter 7. Handling Buttons and Links
    • 7-1 Backspace
    • 7-2 Middle-click
    • 7-3 Window title
    • 7-4 Forward
    • 7-5 Fragments
    • 7-6 Search
    • 7-7 Visited links
    • 7-8 Bookmarks
    • 7-9 Cursor
    • 7-10 Multiple windows
    • 7-11 Clicks via the display list

Reference

License

This project is licensed under the MIT License. See LICENSE for details.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages