By Developers, For Developers
PDF Pg | Paper Pg | Type | Description | Fixed on | Comments |
---|---|---|---|---|---|
9 | TYPO | “wast” instead of “wasm”, towards the bottom of the page | 2019-01-11 | ||
29 | SUGGEST | checkers/func_test.js console.debug(“Black is not white”, instance.exports.isWhite(black)); should be console.debug(“Black is white”, instance.exports.isWhite(black)); because ‘Black is not white’ expects the function to return true, but the function is supposed to return false in this case. | 2019-01-11 | ||
viii | TYPO | “has spurred years of refinining” (should be “refining”) | 2018-12-12 | ||
15 | SUGGEST | “What is WebAssembly NOT?” Switching from positive claim to negative, it doesn’t flow well. Rather than trying to mirror “What is WebAssembly” it is better to contrast it - change it to “What WebAssembly is not!” | 2018-12-12 | ||
* | TYPO | There is no “try and”, only “try to” :) www(dot)blog(dot)givemesomeenglish(dot)com/try-and-vs-try-to/ | 2018-12-12 | ||
55 | TYPO | I cannot copy/paste the text “rust uptarget add wasm32-unknown-unknown” - when I do it copies to the clipboard as “rustuptargetadd wasm32-unknown-unknown” which then obviously fails in the console. | 2019-01-11 | ||
58 | SUGGEST | Wording is a bit a awkward, the commas look like I am about to see a list of points when in fact it is an interjection: “This allows you to nest modules, fosters some really good isolation and encapsulation practices, but it can….” Instead try | 2018-12-12 | ||
58 | SUGGEST | “Since we put mod board in the root module (which is always called lib.rs in a library), the board module is one below the rustycheckers module (the root module name comes from the Cargo.toml file), and you can refer to elements defined in this module with the rustycheckers::board prefix. ” I had to re-read this a few times to understand it. It’s a bit forwards/backwards/forwards in the depth of the concepts it is describing. TRoot module => where root module is => sub-module => where to name root module => how to access elements within the sub-module. The sub-module introduction should come after you’ve finished describe the root module. Try something like this (emphasis indicated with * before and after text) Each Rust library has is a single root module, the name of this module is specified in the Cargo.toml file (the name setting under the section). By convention, the code for the root module is always found in the lib.rs file, so by including mod board; in the top of lib.rs we have declared a sub-module named board that exists directly under the root. Elements within this sub-module can be referenced from anywhere by using the rustycheckers::board prefix. | 2019-01-11 | ||
59 | TYPO | There are no carriage returns in the source code samples, so I cannot copy/paste the source. It ends up looking like this #[derive(Debug, Copy, Clone, PartialEq)] pub enum PieceColor { White, Black, } #[derive(Debug, Clone, Copy, PartialEq)] pub struct GamePiece { pub color: PieceColor, pub crowned: bool, } impl GamePiece { pub fn new(color: PieceColor) -> GamePiece { GamePiece { color, crowned: false, } } pub fn crowned(p: GamePiece) -> GamePiece { GamePiece { color: p.color, crowned: true, } } } | 2019-01-11 | ||
60 | SUGGEST | Copy/paste the soure also copies the (1) (2) and (3) symbols when reading in PDF. Change layout so the source can be copied to clipboard without these. | 2019-01-11 | ||
60 | ERROR | x <= 7 && y <= 7 should also check >= 0 x >= 0 && x <= 7 && y >= 0 && y <= 7 | 2019-01-11 | ||
53 | 45 | SUGGEST | “Its genesis moment is when a compiler written in that language is able to compile that language—a compiler inception”. I’m not English native speaker, but “its genesis moment is when a compiler of some language is written in that language—a compiler inception” | 2019-01-11 | |
60 | SUGGEST | To Peter Morris: “x <= 7 && y <= 7” in the book is OK. Coordinate structure consists of usizes (which are unsigned), and as such x and y are always >=0, no need to additionally check it. | 2019-01-11 | ||
36 | TYPO | “wast” term appears to be used for the first time without definition or context. Suggest adding some description or orientation to the two WebAssembly formats (text and binary). | 2019-01-11 | ||
19 | ERROR | “In the case of those virtual machines, developers are spared the I would have said that in postfix the operator comes LAST. Maybe I’m not understanding this properly. I have an old HP calculator that uses Reverse Polish Notation a.k.a. postfix. You type in “8 enter 2 +” and 10 pops up on the display. From the user’s point of view the operator comes last, but from the stack machine’s point of view the operator is popped first, so I dunno. | 2019-01-11 | ||
* | TYPO | “wasm” should be “Wasm” according to the official specification. | 2019-01-11 | ||
63 | ERROR | Missing a final } in the first code sample. | 2019-01-11 | ||
20 | ERROR | Slight confusion. | 2019-01-11 | ||
30 | SUGGEST | Directly opening in the browser the file from the filesystem seems to work fine without need for and http server, Firefox 63.0.3, Archlinux. | 2019-01-11 | ||
36 | TYPO | Why do we have some | 2019-01-11 | ||
59 | ERROR | Footnote link is now broken. | 2019-01-11 | ||
71 | ERROR | Need to include “copy-webpack-plugin” in package.json dependencies. The webpack.config.js file depends on this. | 2019-01-11 | ||
63 | ERROR | Building the release with the stable channel failed. I had to use #![feature(uniform_paths)] with the nightly (1.33) to get it working. | 2019-01-11 | ||
27 | ERROR | The colors on the chart explaining the AND operations are mixed up for both the Meaning and Result columns. | 2019-01-11 | ||
21 | SUGGEST | In chapter 1, we are taken through the installation of the tooling, but on this page, we are asked to create a single file called “checkers.wat”. Before this line, there is no indication of the directory structure of where the file lives, where the commands need to be run, etc. For a beginner who is going to read this book to learn about Wasm, I feel there’s a gap here. | 2019-01-11 | ||
49 | ERROR | From page 48, the “context” that the reader follows is being run on the parent directory of where the project was created using `cargo new —lib rustwasmhello` was being run. Suddenly, the instruction for `cargo build` command does not say where this should be run from. Missing a `cd rustwasmhello` command? | 2019-01-11 | ||
52 | ERROR | Unable to copy-paste the code block in the beginning of page 52 inside the function `crowned`. | 2019-01-11 | ||
61 | SUGGEST | Use a callout with a bolded title like “Pro Tip” for places where you want the reader to pay special attention. For eg, in page 61, you can put this whole sentence in such a callout: “In production-grade applications,…” | 2019-01-11 | ||
69 | TYPO | In latest version of wasm-bindgen, 0.2.29, the generated code differs slightly: | 2019-01-11 | ||
71 | SUGGEST | I had to install manually webpack | 2019-01-11 | ||
75 | SUGGEST | Why does one need to specify the namespace ROT for the draw function, and nothing is required for the Display type, if it is in the ROT namespace? | 2019-01-11 | ||
62 | SUGGEST | Source snippets can come with line numbers and syntax highlighting - there are online libraries that can do this in html, maybe use one of them in the PDF? This makes it easier to describe errata, etc when referring to line numbers. | |||
74 | TYPO | The code snippet formatting for the `package.json` file are missing. | 2019-01-11 | ||
75 | ERROR | Clicking on the green strip for the “roguewasm/index.html” link renders the html page - as opposed to showing the raw html content. This is different from the behavior of the other code snippets throughout the book. | 2019-01-11 | ||
94 | TYPO | Need to add the copyright headers for the linked raw source code in each green background line. This is for all the files in this whole chapter - not limited to page 95 alone. | 2019-01-22 | ||
9 | TYPO | It says ‘wast’, but I think it should be ‘wasm’. Originally: But when you’re writing wast by hand, it could trip you up in unexpected ways. | 2019-01-11 | ||
11 | TYPO | I think the “lineary” was supposed to be “linear”. “Your WebAssembly module can grow the lineary memory block in increments called pages of | 2019-03-05 | ||
20 | TYPO | I think it should be “assigning meaning to” “Bit flags is a technique for assigning meaning individual bits within a number.” | 2019-03-05 | ||
73 | SUGGEST | For those, like me, who don’t know js/node/npm at all, it would be great to add the instructions for installing webpack, webpack-dev-server and html-webpack-plugin: `npm install —save-dev (webpack|webpack-dev-server|html-webpack-plugin)`. Otherwise, `npm run build` fails, and since these instructions were missing, I assumed `npm run build` would download these as needed. | |||
109 | 97 | TYPO | Only js! macro is defined by stdweb, html is defined by yew. | ||
103 | TYPO | The book says p112 app is served at /wasmchat.js but the index.html in the code given online and earlier in the chapter links js/app.js which is deprecated. | |||
100 | ERROR | It looks like PubNub have changed how to create a chat app considerably. | |||
77 | ERROR | I tried to build the game locally but kept running into a runtime error in the browser console where the game would break after the first player move. After doing some digging I found that this will happen for anyone building from source with a recent version of the wasm-bindgen-cli binary installed, due to a recent change in the behavior of local JS dependencies, see RFC 6: github.com/rustwasm/rfcs/blob/master/text/006-local-js-dependencies.md The existing bindgen syntax for stats_updated will not generate the needed ‘import’ statement in roguewasm.js, which causes an undefined method error at runtime. This can be fixed by moving the stats_updated function out to its own “extern” block and annotating the whole block with #[wasm_bindgen(raw_module = “./index”)] Note the use of raw_module rather than module See also: github.com/rustwasm/wasm-bindgen/issues/1343 | |||
45 | 23 | TYPO | Errors in commands and code | ||
39 | ERROR | In wasmcheckers/index.js the moves appear to have the wrong x and y positions. The first one says black moves from (0, 5) to (0, 4)… but black doesn’t have a piece at (0, 5) and that isn’t a valid move anyway. Replacing it with (2,6) -> (3,5) makes a move. | |||
48 | SUGGEST | In order to successfully build for the wasm target, it was necessary after rust installation to also install the build target: rustup target add wasm32-unknown-unknown | |||
37 | TYPO | In the second block of code on the page, after checking if a piece should be crowned, it lists the function to call as `call $crownPiece`` , but earlier in the book, this function is named `$withCrown`. The line should read `(then (call $withCrown (get_local $toX) (get_local $toY))))` | |||
37 | TYPO | Not a bug :) RE: errata #86696 by Ada, the book is correct. The $crownPiece function is different than $withCrown, and is defined on page 34 (at the bottom). On page 37, where Ada suggests $withCrown is the same as $crownPiece, $crownPiece actually first gets the piece by coordinates, then crowns the piece using $withCrown before emitting the $notify_piececrowned event. What’s printed in the book is what you want. |