Modern Systems Programming with Scala Native Write Lean, High-Performance Code Without the JVM

Access the power of bare-metal systems programming with Scala Native, an ahead-of-time Scala compiler. Without the baggage of legacy frameworks and virtual machines, Scala Native lets you re-imagine how your programs interact with your operating system. Compile Scala code down to native machine inst...

Full description

Saved in:
Bibliographic Details
Main Author: Whaling, Richard
Format: eBook
Language:English
Published: La Vergne Pragmatic Programmers, LLC, The 2020
Pragmatic Bookshelf
The Pragmatic Bookshelf
Edition:1
Subjects:
ISBN:1680506226, 9781680506228
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Table of Contents:
  • Looking at Streams, Files, and Descriptors -- Streaming Pipe Input in libuv -- Streaming File Input in libuv -- Streaming File Output in libuv -- Stream Processors -- What's Next -- 9. Durability: An Embedded Key-Value Database with LMDB -- Introducing Embedded Storage -- Defining LMDB Concepts -- Working with the LMDB API -- Serialization and Deserialization with JSON -- Putting LMDB on the Web -- What's Next -- 10. Services: Encapsulation and Abstraction for Modern Designs -- Services and Distributed Systems -- Parsing, Revisited -- Moving from Server to Service -- Implementing an Idiomatic Service DSL -- Integrations and Ecosystems -- The Way Forward -- A1. Setting Up the Environment -- Running Scala Native on Mac OS -- Why Use Containers? -- Installing and Configuring Docker -- Running Scala Native in Docker -- Index -- - SYMBOLS - -- - DIGITS - -- - A - -- - B - -- - C - -- - D - -- - E - -- - F - -- - G - -- - H - -- - I - -- - J - -- - K - -- - L - -- - M - -- - N - -- - O - -- - P - -- - Q - -- - R - -- - S - -- - T - -- - U - -- - V - -- - W - -- - Z -
  • Cover -- Table of Contents -- Acknowledgments -- Foreword -- Preface -- Who This Book Is For -- What's In This Book -- Working with the Code -- Online Resources -- Systems Programming in the Twenty-First Century -- What Is Systems Programming? -- Moving Toward Modern Systems Programming -- Why Scala Native? -- What Makes Scala Native Different -- Part I-Foundations of Systems Programming -- 1. The Basics: Input and Output -- Working with Output -- Working with Input -- Case Study: Google NGrams -- What's Next -- 2. Arrays, Structs, and the Heap -- The Stack and the Heap -- Structs, Arrays, and Sorting -- Sorting an Array -- Aggregation at Scale -- What's Next -- 3. Writing a Simple HTTP Client -- Defining Terms -- Working with TCP -- Making a TCP Connection -- Testing Network Code with Netcat -- Introducing HTTP -- Implementing HTTP -- Testing Our Code -- What's Next -- 4. Managing Processes: A Deconstructed Shell -- Running a Program -- Introducing exec -- What Went Wrong? -- Introducing Concurrency with fork() and wait() -- Supervising Multiple Processes -- Working with Pipes -- What's Next -- 5. Writing a Server the Old-Fashioned Way -- Understanding How a Server Works -- Building Our Server -- Creating a Minimum Viable Server -- Handling HTTP -- Performance Testing with Gatling -- What's Next -- Part II-Modern Systems Programming -- 6. Doing I/O Right, with Event Loops -- Blocking and Polling -- Introducing libuv -- Working with Asynchronous TCP Sockets -- Building an Asynchronous HTTP Server -- What's Next -- 7. Functions and Futures: Patterns for Distributed Services -- Designing an Asynchronous API -- Introducing Futures -- Implementing Futures -- Implementing an ExecutionContext -- Futures and Promises -- Introducing libcurl -- Asynchronous curl -- What's Next -- 8. Streaming with Pipes and Files