Book Reviews - Hack and HHVM

Book Reviews - Hack and HHVM
How can you take advantage of the HipHop Virtual Machine (HHVM) and the Hack programming language, two new technologies that Facebook developed to run their web servers? With this practical guide, Owen Yamauchi a member of Facebook’s core Hack and HHVM teams shows you how to get started with these battle-tested open-source tools.
You’ll explore static typechecking and several other features that separate Hack from its PHP origins, and learn how to set up, configure, deploy, and monitor HHVM. Ideal for developers with basic PHP knowledge or experience with other languages, this book also demonstrates how these tools can be used with existing PHP codebases and new projects alike.
Learn how Hack provides static typechecking while retaining PHP’s flexible, rapid development capability
Write typesafe code with Hack’s generics feature
Explore HHVM, a just-in-time compilation runtime engine with full PHP compatibility
Dive into Hack collections, asynchronous functions, and the XHP extension for PHP
Understand Hack’s design rationale, including why it omits some PHP features
Use Hack for multitasking, and for generating HTML securely
Learn tools for working with Hack code, including PHP-to-Hack migration

1. Typechecking
Why Use the Typechecker?
Setting Up the Typechecker
Autoload Everything
Reading Error Messages
Type Annotation Syntax
Function Return Types
Function Parameters
Properties
Hack’s Type System
Typechecker Modes
Code Without Annotations
Calling into PHP
Rules
Using Superglobals
Types of Overriding Methods
Property Initialization
Typed Variadic Arguments
Types for Generators
Fallthrough in switch Statements
Type Inference
Variables Don’t Have Types
Unresolved Types
Inference Is Function-Local
Refining Types
Refining Nullable Types to Non-Nullable
Refining Mixed Types to Primitives
Refining Object Types
Inference on Properties
Enforcement of Type Annotations at Runtime
2. Generics
Introductory Example
Other Generic Entities
Functions and Methods
Traits and Interfaces
Type Aliases
Type Erasure
Constraints
Unresolved Types, Revisited
Generics and Subtypes
Arrays and Collections
Advanced: Covariance and Contravariance
Syntax
When to Use Them
3. Other Features of Hack
Enums
Enum Functions
Type Aliases
Transparent Type Aliases
Opaque Type Aliases
Autoloading Type Aliases
Array Shapes
Lambda Expressions
Constructor Parameter Promotion
Attributes
Attribute Syntax
Special Attributes
Enhanced Autoloading
Integer Arithmetic Overflow
Nullsafe Method Call Operator
Trait and Interface Requirements
Silencing Typechecker Errors
4. PHP Features Not Supported in Hack
References
The global Statement
Top-Level Code
Old-Style Constructors
Case-Insensitive Name Lookup
Variable Variables
Dynamic Properties
Mixing Method Call Syntax
isset, empty, and unset
Others
5. Collections
Why Use Collections?
Collections Have Reference Semantics
Using Collections
Literal Syntax
Reading and Writing
Type Annotations for Collections
Core Interfaces
General Collection Interfaces
Specific Collection Interfaces
Concrete Collection Classes
Interoperating with Arrays
Conversion to Arrays
Use with Built-In and User Functions
6. Async
Introductory Examples
Async in Detail
Wait Handles
Async and Callable Types
await Is Not an Expression
Async Generators
Exceptions in Async Functions
Mapping and Filtering Helpers
Structuring Async Code
Data Dependencies
Antipatterns
Other Types of Waiting
Sleeping
Rescheduling
Common Mistakes
Dropping Wait Handles
Memoizing Async Functions
Async Extensions
MySQL
MCRouter and memcached
cURL
Streams
7. XHP
Why Use XHP?
Runtime Validation
Secure by Default
How to Use XHP
Basic Tag Usage
Attributes
Embedding Hack Code
Type Annotations for XHP
Object Interface
Validation
Creating Your Own XHP Classes
Attributes
children Declarations
Categories
Context
Async XHP
XHP Helpers
XHP Best Practices
No Additional Public API
Composition, Not Inheritance
Don’t Make Control Flow Tags
Distinguish Attributes from Children
Style Guide
Migrating to XHP
Converting Bottom-Up
Getting Around XHP’s Escaping
XHP Internals
The Parser Transformation
The Hack Library
8. Configuring and Deploying HHVM
Specifying Configuration Options
Important Options
Server Mode
Warming Up the JIT
Repo-Authoritative Mode
Building the Repo
Deploying the Repo
The Admin Server
9. hphpd: Interactive Debugging
Getting Started
Evaluating Code
The Execution Environment
Local Mode
Remote Mode
Using Breakpoints
Setting Breakpoints
Navigating the Call Stack
Navigating Code
Managing Breakpoints
Viewing Code and Documentation
Macros
Configuring hphpd
10. Hack Tools
Inspecting the Codebase
Scripting Support
Migrating PHP to Hack
The Hackificator
Inferring and Adding Type Annotations
Transpiling Hack to PHP
Conversions
Unsupported Features

No comments:

Post a Comment