2016-02-25: Version 5.0.87

        Performance and stability improvements on all platforms.


2016-02-25: Version 5.0.86

        Performance and stability improvements on all platforms.


2016-02-25: Version 5.0.85

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.84

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.83

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.82

        Ensure IteratorClose is called for errors in non-declaring assignments
        (issue 4776).

        Fix priority of exceptions being thrown from for-of loops (issue 4775).

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.81

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.80

        Encode interpreter::SourcePositionTable as variable-length ints (issue
        4690).

        Stage ES2015 iterator finalization (issue 3566).

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.79

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.78

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.77

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.76

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.75

        Performance and stability improvements on all platforms.


2016-02-24: Version 5.0.74

        Performance and stability improvements on all platforms.


2016-02-23: Version 5.0.73

        Intl: Use private symbols to memoize bound functions (issue 3785).

        Ensure Array.prototype.indexOf returns +0 rather than -0.

        Ship ES2015 Symbol.species (issue 4093).

        Performance and stability improvements on all platforms.


2016-02-23: Version 5.0.72

        Performance and stability improvements on all platforms.


2016-02-23: Version 5.0.71

        Performance and stability improvements on all platforms.


2016-02-23: Version 5.0.70

        Performance and stability improvements on all platforms.


2016-02-23: Version 5.0.69

        Performance and stability improvements on all platforms.


2016-02-23: Version 5.0.68

        Performance and stability improvements on all platforms.


2016-02-23: Version 5.0.67

        Performance and stability improvements on all platforms.


2016-02-23: Version 5.0.66

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.65

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.64

        ES2015 web compat workaround: RegExp.prototype.flags => "" (Chromium
        issue 581577).

        Remove the Proxy enumerate trap (issue 4768).

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.63

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.62

        Remove Reflect.enumerate (issue 4768).

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.61

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.60

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.59

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.58

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.57

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.56

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.55

        Performance and stability improvements on all platforms.


2016-02-22: Version 5.0.54

        Performance and stability improvements on all platforms.


2016-02-21: Version 5.0.53

        Performance and stability improvements on all platforms.


2016-02-21: Version 5.0.52

        Performance and stability improvements on all platforms.


2016-02-21: Version 5.0.51

        Performance and stability improvements on all platforms.


2016-02-21: Version 5.0.50

        Performance and stability improvements on all platforms.


2016-02-21: Version 5.0.49

        Performance and stability improvements on all platforms.


2016-02-21: Version 5.0.48

        Performance and stability improvements on all platforms.


2016-02-20: Version 5.0.47

        Performance and stability improvements on all platforms.


2016-02-20: Version 5.0.46

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.45

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.44

        Return undefined from RegExp.prototype.compile (Chromium issue 585775).

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.43

        Disable --harmony-object-observe (Chromium issue 552100).

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.42

        Introduce BeforeCallEnteredCallback (Chromium issue 585949).

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.41

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.40

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.39

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.38

        [wasm] Add support for import section (Chromium issue 575167).

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.37

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.36

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.35

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.34

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.33

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.32

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.31

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.30

        Mark old SetAccessCheckCallback as deprecated.

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.29

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.28

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.27

        Performance and stability improvements on all platforms.


2016-02-19: Version 5.0.26

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.25

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.24

        Make Date.prototype.toGMTString an alias for Date.prototype.toUTCString
        (issue 4708).

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.23

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.22

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.21

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.20

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.19

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.18

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.17

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.16

        [es6] Implement for-of iterator finalization (issue 2214).

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.15

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.14

        Use displayName in Error.stack rendering if present (issue 4761).

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.13

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.12

        Performance and stability improvements on all platforms.


2016-02-18: Version 5.0.11

        Performance and stability improvements on all platforms.


2016-02-17: Version 5.0.10

        [Atomics] Add dmb/dsb/isb instructions to ARM (issue 4614).

        Performance and stability improvements on all platforms.


2016-02-17: Version 5.0.9

        Performance and stability improvements on all platforms.


2016-02-17: Version 5.0.8

        Performance and stability improvements on all platforms.


2016-02-17: Version 5.0.7

        Performance and stability improvements on all platforms.


2016-02-17: Version 5.0.6

        Performance and stability improvements on all platforms.


2016-02-17: Version 5.0.5

        Performance and stability improvements on all platforms.


2016-02-17: Version 5.0.4

        Performance and stability improvements on all platforms.


2016-02-17: Version 5.0.3

        Performance and stability improvements on all platforms.


2016-02-17: Version 5.0.2

        Performance and stability improvements on all platforms.


2016-02-17: Version 5.0.1

        Performance and stability improvements on all platforms.


2016-02-17: Version 4.10.253

        Performance and stability improvements on all platforms.


2016-02-17: Version 4.10.252

        Performance and stability improvements on all platforms.


2016-02-17: Version 4.10.251

        Performance and stability improvements on all platforms.


2016-02-17: Version 4.10.250

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.249

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.248

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.247

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.246

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.245

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.244

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.243

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.242

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.241

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.240

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.239

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.238

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.237

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.236

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.235

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.234

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.233

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.232

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.231

        Make NamedLoadHandlerCompiler::CompileLoadInterceptor behave correcly
        with lazy accessors (Chromium issue 585764).

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.230

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.229

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.228

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.227

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.226

        Performance and stability improvements on all platforms.


2016-02-16: Version 4.10.225

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.224

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.223

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.222

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.221

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.220

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.219

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.218

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.217

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.216

        [wasm] Add support for a start function (Chromium issue 575167).

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.215

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.214

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.213

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.212

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.211

        Performance and stability improvements on all platforms.


2016-02-15: Version 4.10.210

        Performance and stability improvements on all platforms.


2016-02-14: Version 4.10.209

        Performance and stability improvements on all platforms.


2016-02-14: Version 4.10.208

        Performance and stability improvements on all platforms.


2016-02-14: Version 4.10.207

        Performance and stability improvements on all platforms.


2016-02-13: Version 4.10.206

        Performance and stability improvements on all platforms.


2016-02-12: Version 4.10.205

        Performance and stability improvements on all platforms.


2016-02-12: Version 4.10.204

        Performance and stability improvements on all platforms.


2016-02-12: Version 4.10.203

        Performance and stability improvements on all platforms.


2016-02-12: Version 4.10.202

        Performance and stability improvements on all platforms.


2016-02-12: Version 4.10.201

        Performance and stability improvements on all platforms.


2016-02-12: Version 4.10.200

        Performance and stability improvements on all platforms.


2016-02-12: Version 4.10.199

        Performance and stability improvements on all platforms.


2016-02-12: Version 4.10.198

        Performance and stability improvements on all platforms.


2016-02-12: Version 4.10.197

        Stage --harmony-function-name (issue 3699).

        Performance and stability improvements on all platforms.


2016-02-12: Version 4.10.196

        Performance and stability improvements on all platforms.


2016-02-10: Version 4.10.195

        Performance and stability improvements on all platforms.


2016-02-10: Version 4.10.194

        Performance and stability improvements on all platforms.


2016-02-10: Version 4.10.193

        Use a for-of loop in Array.from (issue 4739).

        Performance and stability improvements on all platforms.


2016-02-09: Version 4.10.192

        Performance and stability improvements on all platforms.


2016-02-09: Version 4.10.191

        Performance and stability improvements on all platforms.


2016-02-09: Version 4.10.190

        Performance and stability improvements on all platforms.


2016-02-09: Version 4.10.189

        Performance and stability improvements on all platforms.


2016-02-09: Version 4.10.188

        Performance and stability improvements on all platforms.


2016-02-09: Version 4.10.187

        Performance and stability improvements on all platforms.


2016-02-09: Version 4.10.186

        Performance and stability improvements on all platforms.


2016-02-09: Version 4.10.185

        Performance and stability improvements on all platforms.


2016-02-09: Version 4.10.184

        Performance and stability improvements on all platforms.


2016-02-09: Version 4.10.183

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.182

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.181

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.180

        [wasm] Put the condition last in kExprBrIf (Chromium issue 575167).

        Stage --harmony-species flag, enabling Symbol.species (issue 4093).

        Extend subarray web compatibility fix to --harmony-species (issue 4665).

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.179

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.178

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.177

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.176

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.175

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.174

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.173

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.172

        android: Use libc++ instead of stlport (issue 4615).

        Performance and stability improvements on all platforms.


2016-02-08: Version 4.10.171

        [api] Make ObjectTemplate::SetNativeDataProperty() work even if the
        ObjectTemplate does not have a constructor (Chromium issue 579009).

        Performance and stability improvements on all platforms.


2016-02-05: Version 4.10.170

        Performance and stability improvements on all platforms.


2016-02-05: Version 4.10.169

        Performance and stability improvements on all platforms.


2016-02-05: Version 4.10.168

        Performance and stability improvements on all platforms.


2016-02-05: Version 4.10.167

        [wasm] min/max does not return signaling NaNs anymore (Chromium issue
        4733).

        Performance and stability improvements on all platforms.


2016-02-05: Version 4.10.166

        Performance and stability improvements on all platforms.


2016-02-05: Version 4.10.165

        [wasm] Put the condition last in kExprSelect (issue 4735, Chromium issue
        575167).

        Performance and stability improvements on all platforms.


2016-02-05: Version 4.10.164

        Performance and stability improvements on all platforms.


2016-02-05: Version 4.10.163

        Performance and stability improvements on all platforms.


2016-02-05: Version 4.10.162

        Performance and stability improvements on all platforms.


2016-02-05: Version 4.10.161

        PPC: [generators] Implement Generator.prototype.return (issue 3566).

        Performance and stability improvements on all platforms.


2016-02-04: Version 4.10.160

        Performance and stability improvements on all platforms.


2016-02-04: Version 4.10.159

        [generators] Implement Generator.prototype.return (issue 3566).

        Performance and stability improvements on all platforms.


2016-02-04: Version 4.10.158

        Performance and stability improvements on all platforms.


2016-02-04: Version 4.10.157

        Performance and stability improvements on all platforms.


2016-02-04: Version 4.10.156

        Performance and stability improvements on all platforms.


2016-02-04: Version 4.10.155

        Performance and stability improvements on all platforms.


2016-02-04: Version 4.10.154

        Performance and stability improvements on all platforms.


2016-02-04: Version 4.10.153

        Performance and stability improvements on all platforms.


2016-02-04: Version 4.10.152

        Performance and stability improvements on all platforms.


2016-02-04: Version 4.10.151

        Performance and stability improvements on all platforms.


2016-02-03: Version 4.10.150

        Performance and stability improvements on all platforms.


2016-02-03: Version 4.10.149

        Performance and stability improvements on all platforms.


2016-02-03: Version 4.10.148

        Performance and stability improvements on all platforms.


2016-02-03: Version 4.10.147

        Performance and stability improvements on all platforms.


2016-02-03: Version 4.10.146

        Performance and stability improvements on all platforms.


2016-02-03: Version 4.10.145

        Performance and stability improvements on all platforms.


2016-02-02: Version 4.10.144

        Performance and stability improvements on all platforms.


2016-02-02: Version 4.10.143

        Performance and stability improvements on all platforms.


2016-02-02: Version 4.10.142

        [wasm] Provide backoff implementations for the Fxx rounding instructions
        (Chromium issue 575379).

        Performance and stability improvements on all platforms.


2016-02-02: Version 4.10.141

        Performance and stability improvements on all platforms.


2016-02-02: Version 4.10.140

        [api] Make ObjectTemplate::SetNativeDataProperty() work even if the
        ObjectTemplate does not have a constructor (Chromium issue 579009).

        Add native callbacks to FastAccessorAssembler (Chromium issue 508898).

        Performance and stability improvements on all platforms.


2016-02-02: Version 4.10.139

        Performance and stability improvements on all platforms.


2016-02-02: Version 4.10.138

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.137

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.136

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.135

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.134

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.133

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.132

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.131

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.130

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.129

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.128

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.127

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.126

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.125

        Ship RegExp subclassing (issues 4305, 4343, 4344, 4345).

        Performance and stability improvements on all platforms.


2016-02-01: Version 4.10.124

        Performance and stability improvements on all platforms.


2016-01-31: Version 4.10.123

        Performance and stability improvements on all platforms.


2016-01-31: Version 4.10.122

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.121

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.120

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.119

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.118

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.117

        Fix Unicode string normalization with null bytes (issue 4654).

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.116

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.115

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.114

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.113

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.112

        [regexp] stage unicode regexps (issue 2952).

        Performance and stability improvements on all platforms.


2016-01-29: Version 4.10.111

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.110

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.109

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.108

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.107

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.106

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.105

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.104

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.103

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.102

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.101

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.100

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.99

        Performance and stability improvements on all platforms.


2016-01-28: Version 4.10.98

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.97

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.96

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.95

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.94

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.93

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.92

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.91

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.90

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.89

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.88

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.87

        [api] Default native data property setter to replace the setter if the
        property is writable (Chromium issue 580584).

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.86

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.85

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.84

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.83

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.82

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.81

        Performance and stability improvements on all platforms.


2016-01-27: Version 4.10.80

        Stage RegExp subclassing (issues 4305, 4343, 4344, 4345).

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.79

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.78

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.77

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.76

        Ensure arrow functions can close over lexically-scoped variables (issue
        4255, Chromium issue 580934).

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.75

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.74

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.73

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.72

        [GN] Remove CAN_USE_VFP_INSTRUCTIONS define to match GYP.

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.71

        PPC: [es6] Tail calls support (issue 4698).

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.70

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.69

        [es6] Tail calls support (issue 4698).

        Performance and stability improvements on all platforms.


2016-01-26: Version 4.10.68

        Support @@species in Array.prototype.concat (issue 4093).

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.67

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.66

        Restore per-TypedArray-class length accessors as a perf workaround
        (Chromium issue 579905).

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.65

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.64

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.63

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.62

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.61

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.60

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.59

        Don't NULL-check GlobalHandle::Node::object_ (issue 3647, Chromium issue
        580651).

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.58

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.57

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.56

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.55

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.54

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.53

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.52

        Performance and stability improvements on all platforms.


2016-01-25: Version 4.10.51

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.50

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.49

        Sloppy mode webcompat: allow conflicting function declarations in blocks
        (issue 4693, Chromium issue 579395).

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.48

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.47

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.46

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.45

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.44

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.43

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.42

        Array length reduction should throw in strict mode if it can't delete an
        element (issue 4267).

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.41

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.40

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.39

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.38

        Performance and stability improvements on all platforms.


2016-01-22: Version 4.10.37

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.36

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.35

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.34

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.33

        Array length reduction should throw in strict mode if it can't delete an
        element (issue 4267).

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.32

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.31

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.30

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.29

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.28

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.27

        [debugger] negative conditional break points mute breaks and exceptions
        (Chromium issue 429167).

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.26

        Performance and stability improvements on all platforms.


2016-01-21: Version 4.10.25

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.24

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.23

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.22

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.21

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.20

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.19

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.18

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.17

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.16

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.15

        [wasm] Implemented F32Trunc as a turbofan graph based on int32
        instructions (Chromium issue 575379).

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.14

        [wasm] Verify boundaries of data segments when decoding modules
        (Chromium issue 575167).

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.13

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.12

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.11

        [runtime] Do not use the enum-cache for keys retrieval (issue 705).

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.10

        Performance and stability improvements on all platforms.


2016-01-20: Version 4.10.9

        Separate String.prototype.replace into RegExp.prototype[Symbol.replace]
        (issue 4343).

        Performance and stability improvements on all platforms.


2016-01-19: Version 4.10.8

        Performance and stability improvements on all platforms.


2016-01-19: Version 4.10.7

        [wasm] Enable WASM JavaScript API tests (Chromium issue 575167).

        Performance and stability improvements on all platforms.


2016-01-18: Version 4.10.6

        [wasm] Create a wrapper function for WASM.asmCompileRun() (Chromium
        issue 575372).

        Make generators non-constructable (issues 4163, 4630).

        Performance and stability improvements on all platforms.


2016-01-18: Version 4.10.5

        Performance and stability improvements on all platforms.


2016-01-18: Version 4.10.4

        Performance and stability improvements on all platforms.


2016-01-18: Version 4.10.3

        Performance and stability improvements on all platforms.


2016-01-16: Version 4.10.2

        Performance and stability improvements on all platforms.


2016-01-16: Version 4.10.1

        Performance and stability improvements on all platforms.


2016-01-15: Version 4.9.391

        Performance and stability improvements on all platforms.


2016-01-15: Version 4.9.390

        Performance and stability improvements on all platforms.


2016-01-15: Version 4.9.389

        Construct instances of base class from TypedArray.prototype.subarray
        (issue 4665).

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.388

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.387

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.386

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.385

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.384

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.383

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.382

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.381

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.380

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.379

        Performance and stability improvements on all platforms.


2016-01-14: Version 4.9.378

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.377

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.376

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.375

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.374

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.373

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.372

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.371

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.370

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.369

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.368

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.367

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.366

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.365

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.364

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.363

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.362

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.361

        Disable concurrent osr (issue 4650).

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.360

        Performance and stability improvements on all platforms.


2016-01-13: Version 4.9.359

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.358

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.357

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.356

        [wasm] Rename the WASM object to _WASMEXP_ (Chromium issue 575167).

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.355

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.354

        Reland of "[Proxies] Ship Proxies + Reflect." (issues 1543, 3931).

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.353

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.352

        Gracefully handle proxies in AllCanWrite() (issue 1543, Chromium issue
        576662).

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.351

        [wasm] Fix double to int conversions (Chromium issue 576560).

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.350

        [Proxies] Ship Proxies + Reflect (issues 1543, 3931).

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.349

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.348

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.347

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.346

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.345

        Add @@species/better subclassing support to Promises (issue 4633,
        Chromium issue 575314).

        TypedArray and ArrayBuffer support for @@species (issue 4093).

        Performance and stability improvements on all platforms.


2016-01-12: Version 4.9.344

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.343

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.342

        Ship ES2015 sloppy-mode const semantics (issue 3305).

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.341

        Partial rollback of Promise error checking (issue 4633).

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.340

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.339

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.338

        [wasm] Fix set_local appearing in unreachable code (Chromium issue
        575861).

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.337

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.336

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.335

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.334

        [wasm] Avoid crashing if parsing fails in asm -> wasm (Chromium issue
        575369).

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.333

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.332

        Performance and stability improvements on all platforms.


2016-01-11: Version 4.9.331

        Performance and stability improvements on all platforms.


2016-01-09: Version 4.9.330

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.329

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.328

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.327

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.326

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.325

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.324

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.323

        Fix sloppy block-scoped function hoisting with nested zones (Chromium
        issue 537816).

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.322

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.321

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.320

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.319

        [wasm] Fix validation error for missing return statement in asm.js
        module (Chromium issue 575364).

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.318

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.317

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.316

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.315

        Performance and stability improvements on all platforms.


2016-01-08: Version 4.9.314

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.313

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.312

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.311

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.310

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.309

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.308

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.307

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.306

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.305

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.304

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.303

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.302

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.301

        Performance and stability improvements on all platforms.


2016-01-07: Version 4.9.300

        Add Array support for @@species and subclassing (issue 4093).

        Performance and stability improvements on all platforms.


2016-01-06: Version 4.9.299

        Performance and stability improvements on all platforms.


2016-01-06: Version 4.9.298

        Performance and stability improvements on all platforms.


2016-01-06: Version 4.9.297

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.296

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.295

        Ship ES2015 sloppy-mode function hoisting, let, class (issues 3305,
        4285).

        Ship destructuring assignment (issue 811).

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.294

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.293

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.292

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.291

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.290

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.289

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.288

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.287

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.286

        Performance and stability improvements on all platforms.


2016-01-05: Version 4.9.285

        Accept time zones like GMT-8 in the legacy date parser (Chromium issue
        422858).

        Timezone name check fix (Chromium issue 364374).

        Add a --harmony-species flag, defining @@species on constructors (issue
        4093).

        Performance and stability improvements on all platforms.


2016-01-04: Version 4.9.284

        Performance and stability improvements on all platforms.


2016-01-04: Version 4.9.283

        Performance and stability improvements on all platforms.


2016-01-04: Version 4.9.282

        Performance and stability improvements on all platforms.


2016-01-04: Version 4.9.281

        Performance and stability improvements on all platforms.


2016-01-04: Version 4.9.280

        Performance and stability improvements on all platforms.


2016-01-01: Version 4.9.279

        Performance and stability improvements on all platforms.


2015-12-31: Version 4.9.278

        Performance and stability improvements on all platforms.


2015-12-31: Version 4.9.277

        Fix 'illegal access' in Date constructor edge case (issue 4640).

        Reland of Use ES2015-style TypedArray prototype chain (patchset #1 id:1
        of https://codereview.chromium.org/1554523002/ ) (issue 4085).

        Performance and stability improvements on all platforms.


2015-12-30: Version 4.9.276

        Reland "Clean up promises and fix an edge case bug (patchset #4 id:60001
        of https://codereview.chromium.org/1488783002/ )" (issue 3641).

        Performance and stability improvements on all platforms.


2015-12-30: Version 4.9.275

        Performance and stability improvements on all platforms.


2015-12-30: Version 4.9.274

        Performance and stability improvements on all platforms.


2015-12-30: Version 4.9.273

        Performance and stability improvements on all platforms.


2015-12-29: Version 4.9.272

        Performance and stability improvements on all platforms.


2015-12-29: Version 4.9.271

        Performance and stability improvements on all platforms.


2015-12-29: Version 4.9.270

        [crankshaft] Don't inline array resize operations if receiver's proto is
        not a JSObject (Chromium issue 571064).

        Performance and stability improvements on all platforms.


2015-12-29: Version 4.9.269

        [ic] Fixed receiver_map register trashing in KeyedStoreIC megamorphic
        (Chromium issue 571370).

        Performance and stability improvements on all platforms.


2015-12-29: Version 4.9.268

        Use ES2015-style TypedArray prototype chain (issue 4085).

        Guard the property RegExp.prototype.unicode behind --harmony-regexp-
        unicode (issue 4644).

        Performance and stability improvements on all platforms.


2015-12-28: Version 4.9.267

        Performance and stability improvements on all platforms.


2015-12-28: Version 4.9.266

        Performance and stability improvements on all platforms.


2015-12-26: Version 4.9.265

        Performance and stability improvements on all platforms.


2015-12-26: Version 4.9.264

        Performance and stability improvements on all platforms.


2015-12-25: Version 4.9.263

        Performance and stability improvements on all platforms.


2015-12-24: Version 4.9.262

        Performance and stability improvements on all platforms.


2015-12-24: Version 4.9.261

        Performance and stability improvements on all platforms.


2015-12-23: Version 4.9.260

        Performance and stability improvements on all platforms.


2015-12-23: Version 4.9.259

        Performance and stability improvements on all platforms.


2015-12-23: Version 4.9.258

        Performance and stability improvements on all platforms.


2015-12-23: Version 4.9.257

        [elements] Enable left-trimming again (issue 4606).

        Performance and stability improvements on all platforms.


2015-12-23: Version 4.9.256

        Performance and stability improvements on all platforms.


2015-12-23: Version 4.9.255

        Reland of Add web compat workarounds for ES2015 RegExp semantics
        (patchset #3 id:40001 of https://codereview.chromium.org/1543723002/ )
        (issues 4617, 4637).

        Add web compat workarounds for ES2015 RegExp semantics (issues 4617,
        4637).

        Performance and stability improvements on all platforms.


2015-12-22: Version 4.9.254

        Performance and stability improvements on all platforms.


2015-12-22: Version 4.9.253

        Performance and stability improvements on all platforms.


2015-12-21: Version 4.9.252

        [ES6] Stage sloppy function block scoping (issue 3305).

        Performance and stability improvements on all platforms.


2015-12-21: Version 4.9.251

        Performance and stability improvements on all platforms.


2015-12-21: Version 4.9.250

        Performance and stability improvements on all platforms.


2015-12-21: Version 4.9.249

        Performance and stability improvements on all platforms.


2015-12-21: Version 4.9.248

        Performance and stability improvements on all platforms.


2015-12-21: Version 4.9.247

        Performance and stability improvements on all platforms.


2015-12-21: Version 4.9.246

        Performance and stability improvements on all platforms.


2015-12-21: Version 4.9.245

        Performance and stability improvements on all platforms.


2015-12-20: Version 4.9.244

        Performance and stability improvements on all platforms.


2015-12-20: Version 4.9.243

        Mark all APIs without callers in Blink as deprecated.

        Performance and stability improvements on all platforms.


2015-12-19: Version 4.9.242

        Performance and stability improvements on all platforms.


2015-12-19: Version 4.9.241

        Performance and stability improvements on all platforms.


2015-12-18: Version 4.9.240

        Performance and stability improvements on all platforms.


2015-12-18: Version 4.9.239

        Performance and stability improvements on all platforms.


2015-12-18: Version 4.9.238

        Performance and stability improvements on all platforms.


2015-12-18: Version 4.9.237

        Stage Proxies and Reflect behind --harmony flag (issues 1543, 3931).

        Performance and stability improvements on all platforms.


2015-12-18: Version 4.9.236

        Performance and stability improvements on all platforms.


2015-12-18: Version 4.9.235

        Performance and stability improvements on all platforms.


2015-12-18: Version 4.9.234

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.233

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.232

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.231

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.230

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.229

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.228

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.227

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.226

        [IC] Fix "compatible receiver" checks hidden behind interceptors
        (Chromium issue 497632).

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.225

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.224

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.223

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.222

        Performance and stability improvements on all platforms.


2015-12-17: Version 4.9.221

        Performance and stability improvements on all platforms.


2015-12-16: Version 4.9.220

        Performance and stability improvements on all platforms.


2015-12-16: Version 4.9.219

        Performance and stability improvements on all platforms.


2015-12-16: Version 4.9.218

        Performance and stability improvements on all platforms.


2015-12-16: Version 4.9.217

        Performance and stability improvements on all platforms.


2015-12-16: Version 4.9.216

        Stage destructuring assignment (issue 811).

        Update DEPS entry for tracing to point at correct location.

        Performance and stability improvements on all platforms.


2015-12-16: Version 4.9.215

        [harmony] unstage regexp lookbehind assertions (issue 4545).

        Move Object.observe back to shipping temporarily (Chromium issues
        552100, 569417, 569647).

        Performance and stability improvements on all platforms.


2015-12-14: Version 4.9.214

        Performance and stability improvements on all platforms.


2015-12-14: Version 4.9.213

        Performance and stability improvements on all platforms.


2015-12-14: Version 4.9.212

        [harmony] stage regexp lookbehind assertions (issue 4545).

        [es6] ship regexp sticky flag (issue 4342).

        Performance and stability improvements on all platforms.


2015-12-14: Version 4.9.211

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.210

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.209

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.208

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.207

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.206

        [es6] Support Function name inference in variable declarations (issue
        3699).

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.205

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.204

        Disable --harmony-object-observe (Chromium issue 552100).

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.203

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.202

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.201

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.200

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.199

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.198

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.197

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.196

        Re-re-land FastAccessorBuilder (Chromium issue 508898).

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.195

        Performance and stability improvements on all platforms.


2015-12-11: Version 4.9.194

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.193

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.192

        Unstage non-standard Promise functions (issue 3237).

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.191

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.190

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.189

        Allow ICU to normalize time zones (Chromium issue 487322).

        Fix FuncNameInferrer usage in ParseAssignmentExpression (issue 4595).

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.188

        Fix Function subclassing (issues 3101, 3330, 4597).

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.187

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.186

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.185

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.184

        Re-land FastAccessorBuilder (Chromium issue 508898).

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.183

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.182

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.181

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.180

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.179

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.178

        Implement FastAccessorBuilder (Chromium issue 508898).

        Performance and stability improvements on all platforms.


2015-12-10: Version 4.9.177

        Performance and stability improvements on all platforms.


2015-12-09: Version 4.9.176

        Updated the check for unmodfied objects to handle Smi Objects (Chromium
        issue 553287).

        Performance and stability improvements on all platforms.


2015-12-09: Version 4.9.175

        Performance and stability improvements on all platforms.


2015-12-09: Version 4.9.174

        Performance and stability improvements on all platforms.


2015-12-08: Version 4.9.173

        Performance and stability improvements on all platforms.


2015-12-08: Version 4.9.172

        Performance and stability improvements on all platforms.


2015-12-08: Version 4.9.171

        Remove usage of deprecated APIs from api interceptor tests (issue 4341).

        Deprecate Promise::Chain from V8 APIs (issue 3237).

        Set the Gregorian changeover date to the beginning of time in Intl
        (Chromium issue 537382).

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.170

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.169

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.168

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.167

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.166

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.165

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.164

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.163

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.162

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.161

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.160

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.159

        Performance and stability improvements on all platforms.


2015-12-07: Version 4.9.158

        Performance and stability improvements on all platforms.


2015-12-06: Version 4.9.157

        Performance and stability improvements on all platforms.


2015-12-06: Version 4.9.156

        Performance and stability improvements on all platforms.


2015-12-06: Version 4.9.155

        Performance and stability improvements on all platforms.


2015-12-05: Version 4.9.154

        Performance and stability improvements on all platforms.


2015-12-05: Version 4.9.153

        Performance and stability improvements on all platforms.


2015-12-05: Version 4.9.152

        Clean up promises and fix an edge case bug (issue 3641).

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.151

        [es6] implement destructuring assignment (issue 811).

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.150

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.149

        Mark deprecated debugger APIs as such.

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.148

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.147

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.146

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.145

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.144

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.143

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.142

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.141

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.140

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.139

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.138

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.137

        Performance and stability improvements on all platforms.


2015-12-04: Version 4.9.136

        Mark BooleanObject::New() as deprecated.

        Performance and stability improvements on all platforms.


2015-12-03: Version 4.9.135

        For non-prototype objects constructed using base==new.target, use the
        cached constructor to render the name (Chromium issue 563791).

        Performance and stability improvements on all platforms.


2015-12-03: Version 4.9.134

        Deprecate non-standard Array methods and clarify Object::isArray.

        Performance and stability improvements on all platforms.


2015-12-03: Version 4.9.133

        Performance and stability improvements on all platforms.


2015-12-03: Version 4.9.132

        Fix inobject slack tracking for both subclassing and non-subclassing
        cases (Chromium issue 563339).

        Performance and stability improvements on all platforms.


2015-12-03: Version 4.9.131

        Performance and stability improvements on all platforms.


2015-12-03: Version 4.9.130

        Performance and stability improvements on all platforms.


2015-12-02: Version 4.9.129

        Removed support deprecated (//@|/*@) source(URL|MappingURL)= (Chromium
        issue 558998).

        Performance and stability improvements on all platforms.


2015-12-02: Version 4.9.128

        Improve rendering of callsite with non-function target (issue 3953).

        Performance and stability improvements on all platforms.


2015-12-02: Version 4.9.127

        Performance and stability improvements on all platforms.


2015-12-02: Version 4.9.126

        Performance and stability improvements on all platforms.


2015-12-02: Version 4.9.125

        Performance and stability improvements on all platforms.


2015-12-02: Version 4.9.124

        Performance and stability improvements on all platforms.


2015-12-02: Version 4.9.123

        Performance and stability improvements on all platforms.


2015-12-02: Version 4.9.122

        Performance and stability improvements on all platforms.


2015-12-02: Version 4.9.121

        Performance and stability improvements on all platforms.


2015-12-01: Version 4.9.120

        Performance and stability improvements on all platforms.


2015-12-01: Version 4.9.119

        Performance and stability improvements on all platforms.


2015-12-01: Version 4.9.118

        Performance and stability improvements on all platforms.


2015-12-01: Version 4.9.117

        Performance and stability improvements on all platforms.


2015-12-01: Version 4.9.116

        Performance and stability improvements on all platforms.


2015-12-01: Version 4.9.115

        Performance and stability improvements on all platforms.


2015-12-01: Version 4.9.114

        Performance and stability improvements on all platforms.


2015-12-01: Version 4.9.113

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.112

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.111

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.110

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.109

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.108

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.107

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.106

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.105

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.104

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.103

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.102

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.101

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.100

        Move RMA::Label out of the class, so it can be forward declared
        (Chromium issue 508898).

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.99

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.98

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.97

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.96

        Performance and stability improvements on all platforms.


2015-11-30: Version 4.9.95

        Performance and stability improvements on all platforms.


2015-11-29: Version 4.9.94

        Performance and stability improvements on all platforms.


2015-11-29: Version 4.9.93

        Performance and stability improvements on all platforms.


2015-11-28: Version 4.9.92

        Performance and stability improvements on all platforms.


2015-11-28: Version 4.9.91

        Performance and stability improvements on all platforms.


2015-11-27: Version 4.9.90

        Performance and stability improvements on all platforms.


2015-11-27: Version 4.9.89

        Performance and stability improvements on all platforms.


2015-11-27: Version 4.9.88

        Performance and stability improvements on all platforms.


2015-11-27: Version 4.9.87

        Performance and stability improvements on all platforms.


2015-11-27: Version 4.9.86

        Performance and stability improvements on all platforms.


2015-11-27: Version 4.9.85

        Performance and stability improvements on all platforms.


2015-11-27: Version 4.9.84

        Performance and stability improvements on all platforms.


2015-11-27: Version 4.9.83

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.82

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.81

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.80

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.79

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.78

        Mark PromiseRejectMessage::GetStackTrace as deprecated.

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.77

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.76

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.75

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.74

        Add explicit Isolate parameter to Exception::CreateMessage() (Chromium
        issue 495801).

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.73

        Allow in-object properties in JSArrayBuffer (issue 4531).

        Allow in-object properties in JSTypedArray and JSDataView (issue 4531).

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.72

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.71

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.70

        Performance and stability improvements on all platforms.


2015-11-26: Version 4.9.69

        Performance and stability improvements on all platforms.


2015-11-25: Version 4.9.68

        Reland shipping of --harmony-destructuring-bind (issue 811).

        Fix promotion of JSFunctions with in-object properties (issue 4572,
        Chromium issue 561481).

        Allow in-object properties in JSCollections, JSWeakCollections and
        JSRegExp (issue 4531).

        Fix JSFunction's in-object properties initialization (issue 4572).

        Performance and stability improvements on all platforms.


2015-11-25: Version 4.9.67

        Performance and stability improvements on all platforms.


2015-11-25: Version 4.9.66

        Removed support deprecated (//@|/*@) source(URL|MappingURL)= (Chromium
        issue 558998).

        PPC: Reshuffle registers in JSConstructStub to avoid trashing costructor
        and new.target on fast path (so we don't need to push/pop them)
        (Chromium issue 560239).

        Performance and stability improvements on all platforms.


2015-11-24: Version 4.9.65

        Performance and stability improvements on all platforms.


2015-11-24: Version 4.9.64

        Move --harmony-destructuring-bind to shipping (issue 811).

        Performance and stability improvements on all platforms.


2015-11-24: Version 4.9.63

        Reshuffle registers in JSConstructStub to avoid trashing costructor and
        new.target on fast path (so we don't need to push/pop them) (Chromium
        issue 560239).

        Performance and stability improvements on all platforms.


2015-11-24: Version 4.9.62

        Performance and stability improvements on all platforms.


2015-11-24: Version 4.9.61

        Performance and stability improvements on all platforms.


2015-11-24: Version 4.9.60

        Allow in-object properties in JSFunctions (issue 4531).

        Disable non-standard Promise functions in staging (issue 3237).

        Performance and stability improvements on all platforms.


2015-11-24: Version 4.9.59

        Performance and stability improvements on all platforms.


2015-11-24: Version 4.9.58

        Performance and stability improvements on all platforms.


2015-11-24: Version 4.9.57

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.56

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.55

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.54

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.53

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.52

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.51

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.50

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.49

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.48

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.47

        Performance and stability improvements on all platforms.


2015-11-23: Version 4.9.46

        Performance and stability improvements on all platforms.


2015-11-22: Version 4.9.45

        Performance and stability improvements on all platforms.


2015-11-22: Version 4.9.44

        Performance and stability improvements on all platforms.


2015-11-22: Version 4.9.43

        Performance and stability improvements on all platforms.


2015-11-21: Version 4.9.42

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.41

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.40

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.39

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.38

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.37

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.36

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.35

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.34

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.33

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.32

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.31

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.30

        Performance and stability improvements on all platforms.


2015-11-20: Version 4.9.29

        Performance and stability improvements on all platforms.


2015-11-19: Version 4.9.28

        Performance and stability improvements on all platforms.


2015-11-19: Version 4.9.27

        [V8] Unify get function name for debugging purpose (Chromium issue
        17356).

        Performance and stability improvements on all platforms.


2015-11-19: Version 4.9.26

        Performance and stability improvements on all platforms.


2015-11-19: Version 4.9.25

        Performance and stability improvements on all platforms.


2015-11-19: Version 4.9.24

        Performance and stability improvements on all platforms.


2015-11-19: Version 4.9.23

        Performance and stability improvements on all platforms.


2015-11-19: Version 4.9.22

        Performance and stability improvements on all platforms.


2015-11-19: Version 4.9.21

        Performance and stability improvements on all platforms.


2015-11-19: Version 4.9.20

        Performance and stability improvements on all platforms.


2015-11-18: Version 4.9.19

        Performance and stability improvements on all platforms.


2015-11-18: Version 4.9.18

        Performance and stability improvements on all platforms.


2015-11-18: Version 4.9.17

        Performance and stability improvements on all platforms.


2015-11-18: Version 4.9.16

        Performance and stability improvements on all platforms.


2015-11-18: Version 4.9.15

        Performance and stability improvements on all platforms.


2015-11-18: Version 4.9.14

        Performance and stability improvements on all platforms.


2015-11-17: Version 4.9.13

        Performance and stability improvements on all platforms.


2015-11-17: Version 4.9.12

        Performance and stability improvements on all platforms.


2015-11-17: Version 4.9.11

        Performance and stability improvements on all platforms.


2015-11-17: Version 4.9.10

        Performance and stability improvements on all platforms.


2015-11-16: Version 4.9.9

        Map v8::Object to v8::internal::JSReceiver.

        Performance and stability improvements on all platforms.


2015-11-16: Version 4.9.8

        Performance and stability improvements on all platforms.


2015-11-16: Version 4.9.7

        Performance and stability improvements on all platforms.


2015-11-16: Version 4.9.6

        Performance and stability improvements on all platforms.


2015-11-16: Version 4.9.5

        Performance and stability improvements on all platforms.


2015-11-16: Version 4.9.4

        Performance and stability improvements on all platforms.


2015-11-15: Version 4.9.3

        Performance and stability improvements on all platforms.


2015-11-15: Version 4.9.2

        Performance and stability improvements on all platforms.


2015-11-15: Version 4.9.1

        Performance and stability improvements on all platforms.


2015-11-13: Version 4.8.294

        Performance and stability improvements on all platforms.


2015-11-13: Version 4.8.293

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.292

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.291

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.290

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.289

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.288

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.287

        [JSON stringifier] Correctly load array elements (Chromium issue
        554946).

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.286

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.285

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.284

        Ship --harmony-default-parameters (issue 2160).

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.283

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.282

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.281

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.280

        Performance and stability improvements on all platforms.


2015-11-12: Version 4.8.279

        Performance and stability improvements on all platforms.


2015-11-11: Version 4.8.278

        Performance and stability improvements on all platforms.


2015-11-11: Version 4.8.277

        Performance and stability improvements on all platforms.


2015-11-11: Version 4.8.276

        Performance and stability improvements on all platforms.


2015-11-11: Version 4.8.275

        Performance and stability improvements on all platforms.


2015-11-11: Version 4.8.274

        Performance and stability improvements on all platforms.


2015-11-11: Version 4.8.273

        Performance and stability improvements on all platforms.


2015-11-11: Version 4.8.272

        Performance and stability improvements on all platforms.


2015-11-11: Version 4.8.271

        Performance and stability improvements on all platforms.


2015-11-11: Version 4.8.270

        Performance and stability improvements on all platforms.


2015-11-11: Version 4.8.269

        Performance and stability improvements on all platforms.


2015-11-10: Version 4.8.268

        Make JSFunction::BodyDescriptor the only single place that knows how to
        iterate JSFunction's body (issue 4531).

        Performance and stability improvements on all platforms.


2015-11-10: Version 4.8.267

        Performance and stability improvements on all platforms.


2015-11-09: Version 4.8.266

        Performance and stability improvements on all platforms.


2015-11-09: Version 4.8.265

        Performance and stability improvements on all platforms.


2015-11-09: Version 4.8.264

        Performance and stability improvements on all platforms.


2015-11-09: Version 4.8.263

        Performance and stability improvements on all platforms.


2015-11-09: Version 4.8.262

        Performance and stability improvements on all platforms.


2015-11-09: Version 4.8.261

        Performance and stability improvements on all platforms.


2015-11-09: Version 4.8.260

        Performance and stability improvements on all platforms.


2015-11-09: Version 4.8.259

        Performance and stability improvements on all platforms.


2015-11-09: Version 4.8.258

        Performance and stability improvements on all platforms.


2015-11-07: Version 4.8.257

        Update v8_external_startup_data_assets for
        https://codereview.chromium.org/1422793004/ (Chromium issue 547162).

        Performance and stability improvements on all platforms.


2015-11-07: Version 4.8.256

        Performance and stability improvements on all platforms.


2015-11-07: Version 4.8.255

        Performance and stability improvements on all platforms.


2015-11-06: Version 4.8.254

        Performance and stability improvements on all platforms.


2015-11-06: Version 4.8.253

        Performance and stability improvements on all platforms.


2015-11-06: Version 4.8.252

        Performance and stability improvements on all platforms.


2015-11-06: Version 4.8.251

        Performance and stability improvements on all platforms.


2015-11-06: Version 4.8.250

        Performance and stability improvements on all platforms.


2015-11-06: Version 4.8.249

        Performance and stability improvements on all platforms.


2015-11-06: Version 4.8.248

        Performance and stability improvements on all platforms.


2015-11-06: Version 4.8.247

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.246

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.245

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.244

        Re-ship @@toStringTag (issue 3502).

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.243

        Stage --harmony-destructuring and --harmony-default-parameters (issues
        811, 2160).

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.242

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.241

        Re-re-land "[es6] Implement destructuring binding in try/catch" (issue
        811).

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.240

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.239

        Add v8_external_startup_data GN rule (Chromium issue 547162).

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.238

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.237

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.236

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.235

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.234

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.233

        Implement flag and source getters on RegExp.prototype (issues 3715,
        4528).

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.232

        Performance and stability improvements on all platforms.


2015-11-05: Version 4.8.231

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.230

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.229

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.228

        Ship Harmony ToLength (issue 3087).

        Avoid creating indexed elements at index maxUint32 (issue 4516).

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.227

        Implement flag and source getters on RegExp.prototype (issues 3715,
        4528).

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.226

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.225

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.224

        [es6] Implement destructuring binding in try/catch (issue 811).

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.223

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.222

        Implement flag and source getters on RegExp.prototype (issues 3715,
        4528).

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.221

        Implement flag and source getters on RegExp.prototype (issues 3715,
        4528).

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.220

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.219

        Performance and stability improvements on all platforms.


2015-11-04: Version 4.8.218

        Performance and stability improvements on all platforms.


2015-11-03: Version 4.8.217

        Performance and stability improvements on all platforms.


2015-11-03: Version 4.8.216

        Performance and stability improvements on all platforms.


2015-11-03: Version 4.8.215

        Performance and stability improvements on all platforms.


2015-11-03: Version 4.8.214

        [es6] Fix Object built-in subclassing (issue 3886).

        Performance and stability improvements on all platforms.


2015-11-03: Version 4.8.213

        [es6] Fix WeakMap/Set built-ins subclasssing (issues 3101, 3330).

        Reland "[es6] Fix Function and GeneratorFunction built-ins subclassing."
        (issues 3101, 3330).

        Implement flag and source getters on RegExp.prototype (issues 3715,
        4528).

        Performance and stability improvements on all platforms.


2015-11-03: Version 4.8.212

        Performance and stability improvements on all platforms.


2015-11-03: Version 4.8.211

        Performance and stability improvements on all platforms.


2015-11-03: Version 4.8.210

        For now, don't assume failed-access-check callback to throw (Chromium
        issue 548194).

        Performance and stability improvements on all platforms.


2015-11-03: Version 4.8.209

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.208

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.207

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.206

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.205

        Mark GetCallingContext as soon-to-be deprecated (Chromium issue 541703).

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.204

        Add boolean to tell if V8 zaps allocated memory (Chromium issue 546492).

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.203

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.202

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.201

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.200

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.199

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.198

        [es6] Fix Function and GeneratorFunction built-ins subclassing (issues
        3101, 3330).

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.197

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.196

        Reland "[es6] Better support for built-ins subclassing." (issues 3101,
        3330, 4419).

        Performance and stability improvements on all platforms.


2015-11-02: Version 4.8.195

        Performance and stability improvements on all platforms.


2015-10-30: Version 4.8.194

        Performance and stability improvements on all platforms.


2015-10-30: Version 4.8.193

        Performance and stability improvements on all platforms.


2015-10-30: Version 4.8.192

        Performance and stability improvements on all platforms.


2015-10-30: Version 4.8.191

        Performance and stability improvements on all platforms.


2015-10-30: Version 4.8.190

        Performance and stability improvements on all platforms.


2015-10-30: Version 4.8.189

        Performance and stability improvements on all platforms.


2015-10-30: Version 4.8.188

        [es6] Better support for built-ins subclassing (issues 3101, 3330).

        Performance and stability improvements on all platforms.


2015-10-30: Version 4.8.187

        Performance and stability improvements on all platforms.


2015-10-30: Version 4.8.186

        Performance and stability improvements on all platforms.


2015-10-30: Version 4.8.185

        Performance and stability improvements on all platforms.


2015-10-29: Version 4.8.184

        Performance and stability improvements on all platforms.


2015-10-29: Version 4.8.183

        Performance and stability improvements on all platforms.


2015-10-29: Version 4.8.182

        Performance and stability improvements on all platforms.


2015-10-29: Version 4.8.181

        Reland v8::Private and related APIs.

        Performance and stability improvements on all platforms.


2015-10-29: Version 4.8.180

        Performance and stability improvements on all platforms.


2015-10-29: Version 4.8.179

        Performance and stability improvements on all platforms.


2015-10-29: Version 4.8.178

        Performance and stability improvements on all platforms.


2015-10-29: Version 4.8.177

        Performance and stability improvements on all platforms.


2015-10-29: Version 4.8.176

        Stage ES2015 ToLength semantics (issues 3087, 4244).

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.175

        Avoid calling %AddElement with a number out of array index range (issue
        4516).

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.174

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.173

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.172

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.171

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.170

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.169

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.168

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.167

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.166

        Performance and stability improvements on all platforms.


2015-10-28: Version 4.8.165

        Performance and stability improvements on all platforms.


2015-10-27: Version 4.8.164

        Update to ES2015 == semantics for Symbol/SIMD wrappers (issue 3593).

        Performance and stability improvements on all platforms.


2015-10-27: Version 4.8.163

        Performance and stability improvements on all platforms.


2015-10-27: Version 4.8.162

        Performance and stability improvements on all platforms.


2015-10-27: Version 4.8.161

        Fix deoptimization at ForInStatement::BodyId() (issue 4381).

        Performance and stability improvements on all platforms.


2015-10-27: Version 4.8.160

        Performance and stability improvements on all platforms.


2015-10-27: Version 4.8.159

        Performance and stability improvements on all platforms.


2015-10-27: Version 4.8.158

        Performance and stability improvements on all platforms.


2015-10-27: Version 4.8.157

        Performance and stability improvements on all platforms.


2015-10-27: Version 4.8.156

        Check that array length stays a safe integer in Array.prototype.push
        (issue 3087).

        Performance and stability improvements on all platforms.


2015-10-26: Version 4.8.155

        Performance and stability improvements on all platforms.


2015-10-26: Version 4.8.154

        Performance and stability improvements on all platforms.


2015-10-26: Version 4.8.153

        Performance and stability improvements on all platforms.


2015-10-26: Version 4.8.152

        Performance and stability improvements on all platforms.


2015-10-26: Version 4.8.151

        Performance and stability improvements on all platforms.


2015-10-26: Version 4.8.150

        Performance and stability improvements on all platforms.


2015-10-26: Version 4.8.149

        Performance and stability improvements on all platforms.


2015-10-26: Version 4.8.148

        Performance and stability improvements on all platforms.


2015-10-25: Version 4.8.147

        Performance and stability improvements on all platforms.


2015-10-25: Version 4.8.146

        Performance and stability improvements on all platforms.


2015-10-24: Version 4.8.145

        Performance and stability improvements on all platforms.


2015-10-24: Version 4.8.144

        Performance and stability improvements on all platforms.


2015-10-24: Version 4.8.143

        Performance and stability improvements on all platforms.


2015-10-24: Version 4.8.142

        Performance and stability improvements on all platforms.


2015-10-23: Version 4.8.141

        Stage ES2015-style const in sloppy mode (issue 3739).

        Map v8::Function to JSReceiver + IsCallable.

        Performance and stability improvements on all platforms.


2015-10-23: Version 4.8.140

        Performance and stability improvements on all platforms.


2015-10-22: Version 4.8.139

        Performance and stability improvements on all platforms.


2015-10-22: Version 4.8.138

        Performance and stability improvements on all platforms.


2015-10-22: Version 4.8.137

        Performance and stability improvements on all platforms.


2015-10-22: Version 4.8.136

        Performance and stability improvements on all platforms.


2015-10-22: Version 4.8.135

        Performance and stability improvements on all platforms.


2015-10-22: Version 4.8.134

        [es6] stage sticky regexps and RegExp.prototype.flags (issue 4342).

        [Crankshaft] Don't do HMathFloorOfDiv optimization for kUint32 values
        (issue 4507).

        Fix user options for fractional digits in Intl.NumberFormatter (Chromium
        issue 544122).

        Performance and stability improvements on all platforms.


2015-10-22: Version 4.8.133

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.132

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.131

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.130

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.129

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.128

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.127

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.126

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.125

        [es6] Handle super properly when rewriting arrow parameter initializers
        (issue 4395).

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.124

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.123

        [es6] Fix scoping for default parameters in arrow functions (issue
        4395).

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.122

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.121

        Performance and stability improvements on all platforms.


2015-10-21: Version 4.8.120

        Performance and stability improvements on all platforms.


2015-10-20: Version 4.8.119

        Performance and stability improvements on all platforms.


2015-10-20: Version 4.8.118

        Performance and stability improvements on all platforms.


2015-10-20: Version 4.8.117

        Performance and stability improvements on all platforms.


2015-10-20: Version 4.8.116

        Refactor array construction for map, filter (Chromium issue 544991).

        [es6] Fix scoping for default parameters in arrow functions (issue
        4395).

        Performance and stability improvements on all platforms.


2015-10-20: Version 4.8.115

        Performance and stability improvements on all platforms.


2015-10-20: Version 4.8.114

        Performance and stability improvements on all platforms.


2015-10-20: Version 4.8.113

        Performance and stability improvements on all platforms.


2015-10-20: Version 4.8.112

        Performance and stability improvements on all platforms.


2015-10-20: Version 4.8.111

        [es6] stage sticky regexps and RegExp.prototype.flags (issue 4342).

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.110

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.109

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.108

        ll_prof: Do not use the deprecated tempfile.mktemp() (issue 1306).

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.107

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.106

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.105

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.104

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.103

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.102

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.101

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.100

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.99

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.98

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.97

        Performance and stability improvements on all platforms.


2015-10-19: Version 4.8.96

        Performance and stability improvements on all platforms.


2015-10-18: Version 4.8.95

        Performance and stability improvements on all platforms.


2015-10-18: Version 4.8.94

        Performance and stability improvements on all platforms.


2015-10-18: Version 4.8.93

        Performance and stability improvements on all platforms.


2015-10-17: Version 4.8.92

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.91

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.90

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.89

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.88

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.87

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.86

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.85

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.84

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.83

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.82

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.81

        Performance and stability improvements on all platforms.


2015-10-16: Version 4.8.80

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.79

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.78

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.77

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.76

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.75

        Make RegExp use ToLength on lastIndex when flag is turned on (issue
        4244).

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.74

        Take Symbol-keyed properties into account in Object.freeze and friends
        (Chromium issue 539875).

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.73

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.72

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.71

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.70

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.69

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.68

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.67

        Performance and stability improvements on all platforms.


2015-10-15: Version 4.8.66

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.65

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.64

        Add methods to extras' InternalPackedArray (issue 4276).

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.63

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.62

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.61

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.60

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.59

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.58

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.57

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.56

        Performance and stability improvements on all platforms.


2015-10-14: Version 4.8.55

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.54

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.53

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.52

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.51

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.50

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.49

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.48

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.47

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.46

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.45

        Performance and stability improvements on all platforms.


2015-10-13: Version 4.8.44

        Performance and stability improvements on all platforms.


2015-10-12: Version 4.8.43

        Performance and stability improvements on all platforms.


2015-10-12: Version 4.8.42

        Performance and stability improvements on all platforms.


2015-10-12: Version 4.8.41

        Performance and stability improvements on all platforms.


2015-10-12: Version 4.8.40

        Performance and stability improvements on all platforms.


2015-10-12: Version 4.8.39

        Performance and stability improvements on all platforms.


2015-10-12: Version 4.8.38

        Test for var declarations in eval which conflict with let (issue 4454).

        Don't compile functions in a context the caller doesn't have access to
        (Chromium issue 541703).

        Performance and stability improvements on all platforms.


2015-10-12: Version 4.8.37

        Performance and stability improvements on all platforms.


2015-10-12: Version 4.8.36

        Performance and stability improvements on all platforms.


2015-10-12: Version 4.8.35

        Performance and stability improvements on all platforms.


2015-10-11: Version 4.8.34

        Performance and stability improvements on all platforms.


2015-10-09: Version 4.8.33

        Performance and stability improvements on all platforms.


2015-10-09: Version 4.8.32

        Performance and stability improvements on all platforms.


2015-10-09: Version 4.8.31

        Performance and stability improvements on all platforms.


2015-10-09: Version 4.8.30

        Performance and stability improvements on all platforms.


2015-10-09: Version 4.8.29

        Performance and stability improvements on all platforms.


2015-10-09: Version 4.8.28

        Performance and stability improvements on all platforms.


2015-10-09: Version 4.8.27

        Performance and stability improvements on all platforms.


2015-10-09: Version 4.8.26

        Performance and stability improvements on all platforms.


2015-10-09: Version 4.8.25

        Performance and stability improvements on all platforms.


2015-10-08: Version 4.8.24

        Stage --harmony_sloppy_function (issue 4285).

        Performance and stability improvements on all platforms.


2015-10-08: Version 4.8.23

        Performance and stability improvements on all platforms.


2015-10-08: Version 4.8.22

        Performance and stability improvements on all platforms.


2015-10-08: Version 4.8.21

        Performance and stability improvements on all platforms.


2015-10-08: Version 4.8.20

        Performance and stability improvements on all platforms.


2015-10-08: Version 4.8.19

        Performance and stability improvements on all platforms.


2015-10-08: Version 4.8.18

        Performance and stability improvements on all platforms.


2015-10-08: Version 4.8.17

        Performance and stability improvements on all platforms.


2015-10-08: Version 4.8.16

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.15

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.14

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.13

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.12

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.11

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.10

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.9

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.8

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.7

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.6

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.5

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.4

        Performance and stability improvements on all platforms.


2015-10-07: Version 4.8.3

        Destructuring array without initializer throws an exception (issue
        4462).

        Disable VirtualAlloc randomization on 32-bit Windows hosts (Chromium
        issue 394591).

        Performance and stability improvements on all platforms.


2015-10-06: Version 4.8.2

        Fix legacy const for-of/in destructuring (issue 4461).

        [es6] Align Promise.resolve with the spec (issues 4161, 4341).

        Prohibit let in lexical bindings (issue 4403).

        Ensure scopes are backed by blocks in the body of for loops (Chromium
        issues 536750, 536751).

        Performance and stability improvements on all platforms.


2015-10-04: Version 4.8.1

        [cross-context] create new function prototypes in the context of the
        function (issue 4217).

        Fix completion of try..finally (issue 2529).

        Extend Annex B 3.3 sloppy-mode block-scoped hoisting to scripts, eval
        (issue 4441).

        [V8] Add name of function for function's closure scope (Chromium issue
        493156).

        Performance and stability improvements on all platforms.


2015-05-17: Sentinel

        The ChangeLog file is no longer maintained on bleeding_edge. This
        sentinel should stay on top of this list.


2015-05-17: Version 4.5.2

        Performance and stability improvements on all platforms.


2015-05-16: Version 4.5.1

        Test that TypedArray methods don't read length (issue 3578).

        Implement %TypedArray%.{fill,find,findIndex} (issue 3578).

        TypedArray.prototype.copyWithin method (issue 3578).

        Provide accessor for object internal properties that doesn't require
        debugger to be active (Chromium issue 481845).

        Don't create debug context if debug listener is not set (Chromium issue
        482290).

        Performance and stability improvements on all platforms.


2015-05-13: Version 4.4.65

        Deprecate Isolate::New.

        Factor out core of Array.forEach and .every, for use in TypedArrays
        (issue 3578).

        Performance and stability improvements on all platforms.


2015-05-12: Version 4.4.64

        Performance and stability improvements on all platforms.


2015-05-11: Version 4.4.63

        Let Runtime_GrowArrayElements accept non-Smi numbers as |key| (Chromium
        issue 485410).

        Make one copy for all TypedArray methods (issue 4085).

        Performance and stability improvements on all platforms.


2015-05-09: Version 4.4.62

        [turbofan] Fix handling of OsrLoopEntry in ControlReducer::ConnectNTL()
        (Chromium issue 485908).

        Performance and stability improvements on all platforms.


2015-05-08: Version 4.4.61

        Performance and stability improvements on all platforms.


2015-05-08: Version 4.4.60

        Performance and stability improvements on all platforms.


2015-05-08: Version 4.4.59

        Performance and stability improvements on all platforms.


2015-05-07: Version 4.4.58

        TypedArray.prototype.every method (issue 3578).

        [V8] Reland https://codereview.chromium.org/1121833003/ (Chromium issue
        480652).

        Performance and stability improvements on all platforms.


2015-05-07: Version 4.4.57

        Performance and stability improvements on all platforms.


2015-05-06: Version 4.4.56

        Shard v8_base.lib on Windows to avoid 2G .lib limit (Chromium issue
        485155).

        Implement a 'trial parse' step, that will abort pre-parsing excessively
        long and trivial functions, so that they can be eagerly compiled after
        all. This essentially allows the parser to renege on its earlier
        decision to lazy-parse, if additional information suggests it was a bad
        decision (Chromium issue 470930).

        Performance and stability improvements on all platforms.


2015-05-06: Version 4.4.55

        Handle the case when derived constructor is [[Call]]ed with 0 args
        (Chromium issue 474783).

        freed_nodes in global-handles should be addititive (Chromium issues
        479796, 484671).

        [V8] Reland https://codereview.chromium.org/1100993003/ (Chromium issue
        480652).

        [es6] When comparing two symbols we may need to throw a TypeError (issue
        4073).

        Performance and stability improvements on all platforms.


2015-05-06: Version 4.4.54

        Performance and stability improvements on all platforms.


2015-05-05: Version 4.4.53

        Performance and stability improvements on all platforms.


2015-05-05: Version 4.4.52

        Performance and stability improvements on all platforms.


2015-05-04: Version 4.4.51

        Performance and stability improvements on all platforms.


2015-05-04: Version 4.4.50

        Performance and stability improvements on all platforms.


2015-05-01: Version 4.4.49

        Performance and stability improvements on all platforms.


2015-05-01: Version 4.4.48

        [V8] Use previous token location as EOS token location (Chromium issue
        480652).

        Implement kToBeExecutedOnceCodeAge (Chromium issue 470930).

        Performance and stability improvements on all platforms.


2015-04-30: Version 4.4.47

        Performance and stability improvements on all platforms.


2015-04-30: Version 4.4.46

        Performance and stability improvements on all platforms.


2015-04-29: Version 4.4.45

        Performance and stability improvements on all platforms.


2015-04-29: Version 4.4.44

        Pass ArrayBuffer::Allocator via Isolate::CreateParams.

        Fix unobservable constructor replacement on prototype maps (Chromium
        issue 478522).

        Performance and stability improvements on all platforms.


2015-04-29: Version 4.4.43

        Performance and stability improvements on all platforms.


2015-04-28: Version 4.4.42

        MIPS: Fix FP load/store with large offsets from base register (Chromium
        issue 481519).

        Extending v8::GetHeapStatistics to return total available size (Chromium
        issue 476013).

        Performance and stability improvements on all platforms.


2015-04-28: Version 4.4.41

        Performance and stability improvements on all platforms.


2015-04-28: Version 4.4.40

        Do more to avoid last-resort stop-the-world GC (Chromium issue 481433).

        Performance and stability improvements on all platforms.


2015-04-27: Version 4.4.39

        Performance and stability improvements on all platforms.


2015-04-27: Version 4.4.38

        Performance and stability improvements on all platforms.


2015-04-25: Version 4.4.37

        Performance and stability improvements on all platforms.


2015-04-24: Version 4.4.36

        Performance and stability improvements on all platforms.


2015-04-24: Version 4.4.35

        Performance and stability improvements on all platforms.


2015-04-24: Version 4.4.34

        Performance and stability improvements on all platforms.


2015-04-23: Version 4.4.33

        Performance and stability improvements on all platforms.


2015-04-23: Version 4.4.32

        Performance and stability improvements on all platforms.


2015-04-23: Version 4.4.31

        Performance and stability improvements on all platforms.


2015-04-22: Version 4.4.30

        Performance and stability improvements on all platforms.


2015-04-22: Version 4.4.29

        Performance and stability improvements on all platforms.


2015-04-21: Version 4.4.28

        Performance and stability improvements on all platforms.


2015-04-21: Version 4.4.27

        Performance and stability improvements on all platforms.


2015-04-20: Version 4.4.26

        Allow for accessing an ArrayBuffer contents without externalizing it.

        Remove support for externally backed elements from the API (issue 3996).

        Deprecate 3-args ResourceConstraints::ConfigureDefaults.

        Indicate that low-memory-notificatin triggered GCs are "forced".

        Adding missing V8_EXPORT flag in SpaceStatistics class in v8.h (Chromium
        issues 466141, 476013).

        Performance and stability improvements on all platforms.


2015-04-20: Version 4.4.25

        Turn off SupportsFlexibleFloorAndRound for Arm64 due to a bug (Chromium
        issue 476477).

        Adding V8 api to get memory statistics of spaces in V8::Heap (Chromium
        issues 466141, 476013).

        Performance and stability improvements on all platforms.


2015-04-17: Version 4.4.24

        Performance and stability improvements on all platforms.


2015-04-17: Version 4.4.23

        Don't crash when reporting an access check failure for a detached global
        proxy (Chromium issue 475884).

        Use smaller heap growing factor in idle notification to start
        incremental marking when there is idle time >16ms (Chromium issue
        477323).

        Performance and stability improvements on all platforms.


2015-04-16: Version 4.4.22

        Reduce regexp compiler stack size when not optimizing regexps (Chromium
        issue 475705).

        Performance and stability improvements on all platforms.


2015-04-15: Version 4.4.21

        Remove support for specifying the number of available threads.

        When converting Maybe and MaybeLocal values with a check, always check.

        Performance and stability improvements on all platforms.


2015-04-15: Version 4.4.20

        Performance and stability improvements on all platforms.


2015-04-15: Version 4.4.19

        Reland "Remove support for thread-based recompilation" (issue 3608).

        Performance and stability improvements on all platforms.


2015-04-14: Version 4.4.18

        Reland "Remove support for thread-based recompilation" (issue 3608).

        Performance and stability improvements on all platforms.


2015-04-14: Version 4.4.17

        Performance and stability improvements on all platforms.


2015-04-13: Version 4.4.16

        Expose ArrayBufferView::HasBuffer (issue 3996).

        Performance and stability improvements on all platforms.


2015-04-13: Version 4.4.15

        Performance and stability improvements on all platforms.


2015-04-12: Version 4.4.14

        Performance and stability improvements on all platforms.


2015-04-12: Version 4.4.13

        Performance and stability improvements on all platforms.


2015-04-10: Version 4.4.12

        Performance and stability improvements on all platforms.


2015-04-10: Version 4.4.11

        Performance and stability improvements on all platforms.


2015-04-10: Version 4.4.10

        Don't #define snprintf in VS2015 - it's illegal and unneeded (Chromium
        issue 440500).

        Performance and stability improvements on all platforms.


2015-04-09: Version 4.4.9

        Performance and stability improvements on all platforms.


2015-04-09: Version 4.4.8

        Performance and stability improvements on all platforms.


2015-04-08: Version 4.4.7

        Make GetDebugContext a bit more robust (Chromium issue 474538).

        Performance and stability improvements on all platforms.


2015-04-08: Version 4.4.6

        Performance and stability improvements on all platforms.


2015-04-08: Version 4.4.5

        More robust when allocation fails during compaction (Chromium issue
        473307).

        MIPS: JSEntryTrampoline: check for stack space before pushing arguments
        (Chromium issue 469768).

        Performance and stability improvements on all platforms.


2015-04-07: Version 4.4.4

        Debugger: remove debug command API.

        Remove support for thread-based recompilation (issue 3608).

        JSEntryTrampoline: check for stack space before pushing arguments
        (Chromium issue 469768).

        Performance and stability improvements on all platforms.


2015-04-07: Version 4.4.3

        Performance and stability improvements on all platforms.


2015-04-06: Version 4.4.2

        Performance and stability improvements on all platforms.


2015-04-06: Version 4.4.1

        Support for typed arrays added to Heap::RightTrimFixedArray() (Chromium
        issue 472513).

        Expose an API on ArrayBufferView to copy out content w/o changing the
        buffer (issue 3996).

        Performance and stability improvements on all platforms.


2015-04-02: Version 4.3.66

        Reland: Fix JSON parser Handle leak (previous CL 1041483004) (issue
        3976, Chromium issue 472504).

        Turn off overapproximation of the weak closure again (issue 3862).

        Performance and stability improvements on all platforms.


2015-04-01: Version 4.3.65

        Performance and stability improvements on all platforms.


2015-04-01: Version 4.3.64

        Performance and stability improvements on all platforms.


2015-04-01: Version 4.3.63

        [V8] Don't ignore sourceURL comment in inline scripts in .stack (issue
        3920).

        Deprecate IdleNotification().

        Remove --harmony-numeric-literal flag.

        Performance and stability improvements on all platforms.


2015-03-31: Version 4.3.62

        Put newspace evacuation in an EvacuationScope (Chromium issue 471554).

        Fix libdl dependency on Android and remove librt hack (Chromium issue
        469973).

        Ensure that GC idle notifications either make progress or stop
        requesting more GCs (Chromium issue 470615).

        Layout descriptor must be trimmed when corresponding descriptors array
        is trimmed to stay in sync (Chromium issue 470804).

        Fix JSON parser Handle leak (issue 3976).

        Performance and stability improvements on all platforms.


2015-03-30: Version 4.3.61

        Performance and stability improvements on all platforms.


2015-03-28: Version 4.3.60

        Reland^2 "Filter invalid slots out from the SlotsBuffer after marking."
        (Chromium issues 454297, 470801).

        This fixes missing incremental write barrier issue when double fields
        unboxing is enabled (Chromium issue 469146).

        Performance and stability improvements on all platforms.


2015-03-27: Version 4.3.59

        Use a slot that is located on a heap page when removing invalid entries
        from the SlotsBuffer (Chromium issue 470801).

        Performance and stability improvements on all platforms.


2015-03-26: Version 4.3.58

        Return timestamp of the last recorded interval to the caller of
        HeapProfiler::GetHeapStats (Chromium issue 467222).

        Performance and stability improvements on all platforms.


2015-03-26: Version 4.3.57

        Reland [V8] Removed SourceLocationRestrict (Chromium issue 468781).

        Performance and stability improvements on all platforms.


2015-03-25: Version 4.3.56

        Remove v8::Isolate::ClearInterrupt.

        Performance and stability improvements on all platforms.


2015-03-25: Version 4.3.55

        Performance and stability improvements on all platforms.


2015-03-24: Version 4.3.54

        Do not assign positions to parser-generated desugarings (Chromium issue
        468661).

        Performance and stability improvements on all platforms.


2015-03-24: Version 4.3.53

        Filter invalid slots out from the SlotsBuffer after marking (Chromium
        issue 454297).

        Fix OOM bug 3976 (issue 3976).

        Performance and stability improvements on all platforms.


2015-03-24: Version 4.3.52

        Remove calls to IdleNotification().

        Save heap object tracking data in heap snapshot (Chromium issue 467222).

        Performance and stability improvements on all platforms.


2015-03-24: Version 4.3.51

        [V8] Removed SourceLocationRestrict (Chromium issue 468781).

        [turbofan] Fix control reducer bug with walking non-control edges during
        ConnectNTL phase (Chromium issue 469605).

        Performance and stability improvements on all platforms.


2015-03-23: Version 4.3.50

        Performance and stability improvements on all platforms.


2015-03-23: Version 4.3.49

        Ensure we don't overflow in BCE (Chromium issue 469148).

        [turbofan] Fix lowering of Math.max for integral inputs (Chromium issue
        468162).

        Use libdl to get symbols for backtraces.

        Performance and stability improvements on all platforms.


2015-03-19: Version 4.3.48

        Clarify what APIs return Maybe and MaybeLocal values (issue 3929).

        Introduce explicit constant for per Context debug data set by embedder
        (Chromium issue 466631).

        Adjust key behaviour for weak collections (issues 3970, 3971, Chromium
        issue 460083).

        Turn on overapproximation of the weak closure (issue 3862).

        Performance and stability improvements on all platforms.


2015-03-18: Version 4.3.47

        Performance and stability improvements on all platforms.


2015-03-17: Version 4.3.46

        Performance and stability improvements on all platforms.


2015-03-17: Version 4.3.45

        Performance and stability improvements on all platforms.


2015-03-17: Version 4.3.44

        Performance and stability improvements on all platforms.


2015-03-16: Version 4.3.43

        Bugfix in hydrogen GVN (Chromium issue 467481).

        Remove obsolete TakeHeapSnapshot method from API (Chromium issue
        465651).

        Beautify syntax error for unterminated argument list (Chromium issue
        339474).

        Performance and stability improvements on all platforms.


2015-03-16: Version 4.3.42

        Performance and stability improvements on all platforms.


2015-03-15: Version 4.3.41

        Performance and stability improvements on all platforms.


2015-03-14: Version 4.3.40

        Performance and stability improvements on all platforms.


2015-03-14: Version 4.3.39

        Performance and stability improvements on all platforms.


2015-03-14: Version 4.3.38

        Remove --harmony-scoping flag.

        Performance and stability improvements on all platforms.


2015-03-13: Version 4.3.37

        Implement TDZ in StoreIC for top-level lexicals (issue 3941).

        Turn on job-based optimizing compiler (issue 3608).

        Performance and stability improvements on all platforms.


2015-03-13: Version 4.3.36

        Performance and stability improvements on all platforms.


2015-03-12: Version 4.3.35

        Add Cast() for Int32 and Uint32 (Chromium issue 462402).

        Incorrect handling of HTransitionElementsKind in hydrogen check
        elimination phase fixed (Chromium issue 460917).

        Performance and stability improvements on all platforms.


2015-03-12: Version 4.3.34

        Performance and stability improvements on all platforms.


2015-03-12: Version 4.3.33

        Fix the toolchain used to build the snapshots in GN (Chromium issues
        395249, 465456).

        Performance and stability improvements on all platforms.


2015-03-11: Version 4.3.32

        Reland of Remove slots that point to unboxed doubles from the
        StoreBuffer/SlotsBuffer (Chromium issues 454297, 465273).

        Performance and stability improvements on all platforms.


2015-03-11: Version 4.3.31

        Performance and stability improvements on all platforms.


2015-03-11: Version 4.3.30

        Remove uid and title from HeapSnapshot (Chromium issue 465651).

        Remove deprecated CpuProfiler methods.

        [turbofan] Fix --turbo-osr for OSRing into inner loop inside for-in
        (Chromium issue 462775).

        Performance and stability improvements on all platforms.


2015-03-10: Version 4.3.29

        Performance and stability improvements on all platforms.


2015-03-10: Version 4.3.28

        Performance and stability improvements on all platforms.


2015-03-10: Version 4.3.27

        Performance and stability improvements on all platforms.


2015-03-07: Version 4.3.26

        Remove slots that point to unboxed doubles from the
        StoreBuffer/SlotsBuffer (Chromium issue 454297).

        Performance and stability improvements on all platforms.


2015-03-06: Version 4.3.25

        Performance and stability improvements on all platforms.


2015-03-06: Version 4.3.24

        convert more things to maybe (issue 3929).

        Performance and stability improvements on all platforms.


2015-03-05: Version 4.3.23

        [V8] Use Function.name for stack frames in v8::StackTrace (Chromium
        issue 17356).

        Allow passing sourceMapUrl when compiling scripts (Chromium issue
        462572).

        convert compile functions to use maybe (issue 3929).

        Performance and stability improvements on all platforms.


2015-03-05: Version 4.3.22

        give UniquePersistent full move semantics (issue 3669).

        Performance and stability improvements on all platforms.


2015-03-05: Version 4.3.21

        Performance and stability improvements on all platforms.


2015-03-04: Version 4.3.20

        convert remaining object functions to maybes (issue 3929).

        Performance and stability improvements on all platforms.


2015-03-04: Version 4.3.19

        ARM assembler: fix undefined behaviour in fits_shifter (Chromium issues
        444089, 463436).

        Implement subclassing Arrays (issue 3930).

        [es6] Fix for-const loops (issue 3983).

        Performance and stability improvements on all platforms.


2015-03-04: Version 4.3.18

        Implement subclassing Arrays (issue 3930).

        Performance and stability improvements on all platforms.


2015-03-04: Version 4.3.17

        Implement subclassing Arrays (issue 3930).

        convert more object functions to return maybes (issue 3929).

        Performance and stability improvements on all platforms.


2015-03-03: Version 4.3.16

        check for null context on execution entry (issue 3929).

        convert object::* to return maybe values (issue 3929).

        Removed funky Maybe constructor and made fields private (issue 3929).

        Polish Maybe API a bit, removing useless creativity and fixing some
        signatures (issue 3929).

        Performance and stability improvements on all platforms.


2015-03-02: Version 4.3.15

        Performance and stability improvements on all platforms.


2015-03-02: Version 4.3.14

        Performance and stability improvements on all platforms.


2015-02-28: Version 4.3.13

        Disallow subclassing Arrays (issue 3930).

        Performance and stability improvements on all platforms.


2015-02-28: Version 4.3.12

        Performance and stability improvements on all platforms.


2015-02-27: Version 4.3.11

        Disallow subclassing Arrays (issue 3930).

        convert Value::*Value() function to return Maybe results (issue 3929).

        Performance and stability improvements on all platforms.


2015-02-27: Version 4.3.10

        Convert v8::Value::To* to use MaybeLocal (issue 3929).

        Performance and stability improvements on all platforms.


2015-02-26: Version 4.3.9

        Add public version macros (issue 3075).

        Performance and stability improvements on all platforms.


2015-02-26: Version 4.3.8

        Performance and stability improvements on all platforms.


2015-02-25: Version 4.3.7

        Performance and stability improvements on all platforms.


2015-02-25: Version 4.3.6

        Performance and stability improvements on all platforms.


2015-02-25: Version 4.3.5

        Turn on job based recompilation (issue 3608).

        Performance and stability improvements on all platforms.


2015-02-24: Version 4.3.4

        Reland "Correctly propagate terminate exception in TryCall." (issue
        3892).

        Performance and stability improvements on all platforms.


2015-02-24: Version 4.3.3

        Performance and stability improvements on all platforms.


2015-02-24: Version 4.3.2

        Update GN build files with the cpu_arch -> current_cpu change.

        Performance and stability improvements on all platforms.


2015-02-23: Version 4.3.1

        Limit size of first page based on serialized data (Chromium issue
        453111).

        Performance and stability improvements on all platforms.


2015-02-19: Version 4.2.77

        Make generator constructors configurable (issue 3902).

        Performance and stability improvements on all platforms.


2015-02-19: Version 4.2.76

        Performance and stability improvements on all platforms.


2015-02-18: Version 4.2.75

        Performance and stability improvements on all platforms.


2015-02-18: Version 4.2.74

        Correctly propagate terminate exception in TryCall (issue 3892).

        Performance and stability improvements on all platforms.


2015-02-17: Version 4.2.73

        Performance and stability improvements on all platforms.


2015-02-17: Version 4.2.72

        [turbofan] Fix control reducer with re-reducing branches (Chromium issue
        458876).

        Performance and stability improvements on all platforms.


2015-02-16: Version 4.2.71

        Implement ES6 rest parameters (issue 2159).

        Performance and stability improvements on all platforms.


2015-02-13: Version 4.2.70

        new classes: no longer experimental (issue 3834).

        Make it possible to define arguments for CompileFunctionInContext.

        Performance and stability improvements on all platforms.


2015-02-12: Version 4.2.69

        Performance and stability improvements on all platforms.


2015-02-11: Version 4.2.68

        Performance and stability improvements on all platforms.


2015-02-11: Version 4.2.67

        Throw on range error when creating a string via API (issue 3853).

        Performance and stability improvements on all platforms.


2015-02-11: Version 4.2.66

        Performance and stability improvements on all platforms.


2015-02-10: Version 4.2.65

        Performance and stability improvements on all platforms.


2015-02-10: Version 4.2.64

        Performance and stability improvements on all platforms.


2015-02-10: Version 4.2.63

        Introduce a compile method that takes context extensions (Chromium issue
        456192).

        Performance and stability improvements on all platforms.


2015-02-09: Version 4.2.62

        Performance and stability improvements on all platforms.


2015-02-09: Version 4.2.61

        Performance and stability improvements on all platforms.


2015-02-07: Version 4.2.60

        Performance and stability improvements on all platforms.


2015-02-07: Version 4.2.59

        Performance and stability improvements on all platforms.


2015-02-07: Version 4.2.58

        Performance and stability improvements on all platforms.


2015-02-06: Version 4.2.57

        Performance and stability improvements on all platforms.


2015-02-06: Version 4.2.56

        Performance and stability improvements on all platforms.


2015-02-06: Version 4.2.55

        Protect against uninitialized lexical variables at top-level (Chromium
        issue 452510).

        Performance and stability improvements on all platforms.


2015-02-05: Version 4.2.54

        Fix HConstant(double, ...) constructor (issue 3865).

        Add NativeWeakMap to v8.h (Chromium issue 437416).

        Performance and stability improvements on all platforms.


2015-02-05: Version 4.2.53

        Fix issue with multiple properties and emit store (issue 3856).

        Class methods should be non enumerable (issue 3330).

        Performance and stability improvements on all platforms.


2015-02-04: Version 4.2.52

        Add WeakKeyMap to v8.h (Chromium issue 437416).

        Performance and stability improvements on all platforms.


2015-02-04: Version 4.2.51

        Performance and stability improvements on all platforms.


2015-02-03: Version 4.2.50

        Reset inlining limits due to overly long compilation times in
        Speedometer, Dart2JS (Chromium issue 454625).

        Add WeakMap to v8.h (Chromium issue 437416).

        [V8] Added line, column and script symbols for SyntaxError (Chromium
        issue 443140).

        Performance and stability improvements on all platforms.


2015-02-03: Version 4.2.49

        Compute the same hash for all NaN values (issue 3859).

        Performance and stability improvements on all platforms.


2015-02-03: Version 4.2.48

        Performance and stability improvements on all platforms.


2015-02-02: Version 4.2.47

        Check global object behind global proxy for extensibility (Chromium
        issue 454091).

        Performance and stability improvements on all platforms.


2015-02-02: Version 4.2.46

        Performance and stability improvements on all platforms.


2015-02-02: Version 4.2.45

        Performance and stability improvements on all platforms.


2015-02-01: Version 4.2.44

        Performance and stability improvements on all platforms.


2015-02-01: Version 4.2.43

        Performance and stability improvements on all platforms.


2015-01-31: Version 4.2.42

        Performance and stability improvements on all platforms.


2015-01-31: Version 4.2.41

        Layout descriptor sharing issue fixed (issue 3832, Chromium issue
        437713).

        Performance and stability improvements on all platforms.


2015-01-30: Version 4.2.40

        Performance and stability improvements on all platforms.


2015-01-30: Version 4.2.38

        Move object literal checking into checker classes (issue 3819).

        [turbofan] Fix OSR compilations of for-in.

        Performance and stability improvements on all platforms.


2015-01-30: Version 4.2.37

        Do not create unresolved variables when parsing arrow functions lazily
        (issue 3501).

        Performance and stability improvements on all platforms.


2015-01-29: Version 4.2.36

        Performance and stability improvements on all platforms.


2015-01-29: Version 4.2.35

        Performance and stability improvements on all platforms.


2015-01-28: Version 4.2.34

        Performance and stability improvements on all platforms.


2015-01-28: Version 4.2.33

        Performance and stability improvements on all platforms.


2015-01-27: Version 4.2.32

        Do not generalize field representations when making elements kind or
        observed transition (Chromium issue 448711).

        Performance and stability improvements on all platforms.


2015-01-27: Version 4.2.31

        [x86] Disable AVX unless the operating system explicitly claims to
        support it (issue 3846, Chromium issue 452033).

        Performance and stability improvements on all platforms.


2015-01-27: Version 4.2.30

        Performance and stability improvements on all platforms.


2015-01-26: Version 4.2.29

        MIPS: Fixed Hydrogen environment handling for mul-i ARM and ARM64 (issue
        451322).

        [turbofan] Simplify reduction if IfTrue and IfFalse and fix bugs
        (Chromium issue 451958).

        Add HeapNumber fast path to v8::Value::{Uint,Int}32Value() (Chromium
        issue 446097).

        Performance and stability improvements on all platforms.


2015-01-26: Version 4.2.28

        Fixed Hydrogen environment handling for mul-i on ARM and ARM64 (issue
        451322).

        Performance and stability improvements on all platforms.


2015-01-25: Version 4.2.27

        Performance and stability improvements on all platforms.


2015-01-24: Version 4.2.26

        ES6 Array.prototype.toString falls back on Object.prototype.toString if
        method "join" is not callable (issue 3793).

        Performance and stability improvements on all platforms.


2015-01-23: Version 4.2.25

        Performance and stability improvements on all platforms.


2015-01-23: Version 4.2.24

        Performance and stability improvements on all platforms.


2015-01-23: Version 4.2.23

        [x86] Blacklist AVX for Windows versions before 6.1 (Windows 7) (issue
        3846).

        Performance and stability improvements on all platforms.


2015-01-23: Version 4.2.22

        Fix run-time ARMv6 detection (issue 3844).

        Support concatenating with zero-size arrays with DICTIONARY_ELEMENTS in
        Runtime_ArrayConcat (Chromium issue 450895).

        Performance and stability improvements on all platforms.


2015-01-22: Version 4.2.21

        Performance and stability improvements on all platforms.


2015-01-22: Version 4.2.20

        Add a pretty printer to improve the error message non-function calls
        (Chromium issue 259443).

        Remove implicit uint8_t to char cast in string replace (Chromium issue
        446196).

        Performance and stability improvements on all platforms.


2015-01-21: Version 4.2.19

        Performance and stability improvements on all platforms.


2015-01-20: Version 4.2.18

        Fix issue with __proto__ when using ES6 object literals (issue 3818).

        Performance and stability improvements on all platforms.


2015-01-20: Version 4.2.17

        Performance and stability improvements on all platforms.


2015-01-20: Version 4.2.16

        Performance and stability improvements on all platforms.


2015-01-19: Version 4.2.15

        Unobscurified OFStream (Chromium issue 448102).

        Performance and stability improvements on all platforms.


2015-01-19: Version 4.2.14

        Performance and stability improvements on all platforms.


2015-01-18: Version 4.2.13

        Performance and stability improvements on all platforms.


2015-01-18: Version 4.2.12

        Performance and stability improvements on all platforms.


2015-01-17: Version 4.2.11

        Performance and stability improvements on all platforms.


2015-01-16: Version 4.2.10

        Performance and stability improvements on all platforms.


2015-01-16: Version 4.2.9

        MIPS: ES6 computed property names (issue 3754).

        ES6 computed property names (issue 3754).

        Performance and stability improvements on all platforms.


2015-01-15: Version 4.2.8

        Performance and stability improvements on all platforms.


2015-01-15: Version 4.2.7

        Performance and stability improvements on all platforms.


2015-01-15: Version 4.2.6

        Performance and stability improvements on all platforms.


2015-01-15: Version 4.2.5

        Performance and stability improvements on all platforms.


2015-01-14: Version 4.2.4

        Auto-generate v8 version based on tags (Chromium issue 446166).

        Remove support for signatures with arguments.

        Add proper support for proxies to HType (Chromium issue 448730).

        [turbofan] Fix truncation/representation sloppiness wrt. bool/bit (issue
        3812).

        Performance and stability improvements on all platforms.


2015-01-14: Version 4.2.3

        Performance and stability improvements on all platforms.


2015-01-14: Version 4.2.2

        Performance and stability improvements on all platforms.


2015-01-14: Version 4.2.1

        Map -0 to integer 0 for typed array constructors (Chromium issue
        447756).

        Introduce a gyp variable to control whether or not slow dchecks are on.

        Correctly setup the freelist of the coderange on Win64 (Chromium issue
        447555).

        Fast forward V8 to version 4.2.

        Remove "extra checks".

        Performance and stability improvements on all platforms.


2015-01-08: Version 3.32.7

        Correctly parse line ends for debugging (issue 2825).

        Fixed printing during DCE (issue 3679).

        Performance and stability improvements on all platforms.


2015-01-08: Version 3.32.6

        Performance and stability improvements on all platforms.


2015-01-08: Version 3.32.5

        Correct handling of exceptions occured during getting of exception stack
        trace (Chromium issue 444805).

        Fix bug in Runtime_CompileOptimized resulting from stack overflow
        (Chromium issue 446774).

        Turn on job-based recompilation (issue 3608).

        Performance and stability improvements on all platforms.


2015-01-07: Version 3.32.4

        Performance and stability improvements on all platforms.


2015-01-07: Version 3.32.3

        Performance and stability improvements on all platforms.


2015-01-07: Version 3.32.2

        Performance and stability improvements on all platforms.


2015-01-07: Version 3.32.1

        [turbofan] Don't crash when typing load from a Uint8ClampedArray
        (Chromium issue 446156).

        [turbofan] Truncation of Bit/Word8/16 to Word32 is a no-op (Chromium
        issue 445859).

        [x64] Rearrange code for OOB integer loads (Chromium issue 445858).

        Fix %NeverOptimizeFunction() intrinsic (Chromium issue 445732).

        [turbofan] Fix invalid bounds check with overflowing offset (Chromium
        issue 445267).

        [turbofan] Raise max virtual registers and call parameter limit (issue
        3786).

        Performance and stability improvements on all platforms.


2014-12-23: Version 3.31.74

        [turbofan] Turn DCHECK for fixed slot index into a CHECK (Chromium issue
        444681).

        Performance and stability improvements on all platforms.


2014-12-23: Version 3.31.73

        [turbofan] Fix missing ChangeUint32ToUint64 in lowering of LoadBuffer
        (Chromium issue 444695).

        Enable the embedder to specify what kind of context was disposed.

        Performance and stability improvements on all platforms.


2014-12-22: Version 3.31.72

        [turbofan] Correctify lowering of Uint8ClampedArray buffer access
        (Chromium issue 444508).

        Performance and stability improvements on all platforms.


2014-12-20: Version 3.31.71

        Performance and stability improvements on all platforms.


2014-12-20: Version 3.31.70

        Performance and stability improvements on all platforms.


2014-12-20: Version 3.31.69

        Performance and stability improvements on all platforms.


2014-12-19: Version 3.31.68

        [turbofan] Fix unsafe out-of-bounds check for checked loads/stores
        (Chromium issue 443744).

        Performance and stability improvements on all platforms.


2014-12-19: Version 3.31.67

        Performance and stability improvements on all platforms.


2014-12-19: Version 3.31.66

        Ship ES6 template literals (issue 3230).

        Performance and stability improvements on all platforms.


2014-12-18: Version 3.31.65

        ES6 template literals should not use legacy octal strings (issue 3736).

        Performance and stability improvements on all platforms.


2014-12-18: Version 3.31.64

        Fixed -fsanitize=float-cast-overflow problems (issue 3773).

        Performance and stability improvements on all platforms.


2014-12-18: Version 3.31.63

        ES6 computed property names (issue 3754).

        Performance and stability improvements on all platforms.


2014-12-17: Version 3.31.62

        Performance and stability improvements on all platforms.


2014-12-17: Version 3.31.61

        ES6: Update unscopables to match spec (issue 3632).

        ES6 computed property names (issue 3754).

        More -fsanitize=vptr fixes (Chromium issue 441099).

        [turbofan] Cache conversions inserted during typed lowering (issue
        3763).

        Performance and stability improvements on all platforms.


2014-12-16: Version 3.31.60

        Performance and stability improvements on all platforms.


2014-12-16: Version 3.31.59

        Performance and stability improvements on all platforms.


2014-12-16: Version 3.31.58

        Ship ES6 classes (issue 3330).

        ES6 computed property names (issue 3754).

        Performance and stability improvements on all platforms.


2014-12-12: Version 3.31.57

        Consistently use only one of virtual/OVERRIDE/FINAL (issue 3753).

        Performance and stability improvements on all platforms.


2014-12-12: Version 3.31.56

        Performance and stability improvements on all platforms.


2014-12-12: Version 3.31.55

        Performance and stability improvements on all platforms.


2014-12-11: Version 3.31.54

        Implement Array.from() (issue 3336).

        move v8_use_external_startup_data to standalone.gypi (Chromium issue
        421063).

        Performance and stability improvements on all platforms.


2014-12-11: Version 3.31.53

        Performance and stability improvements on all platforms.


2014-12-11: Version 3.31.52

        Ship ES6 block scoping (issue 2198).

        Optimize Object.seal and Object.preventExtensions (issue 3662, Chromium
        issue 115960).

        Add Array.prototype.includes (issue 3575).

        Performance and stability improvements on all platforms.


2014-12-10: Version 3.31.51

        [x64] Fix optimization for certain checked load/stores (Chromium issue
        439743).

        Performance and stability improvements on all platforms.


2014-12-09: Version 3.31.50

        Temporarily restore make dependencies.

        Performance and stability improvements on all platforms.


2014-12-09: Version 3.31.49

        Performance and stability improvements on all platforms.


2014-12-09: Version 3.31.48

        Performance and stability improvements on all platforms.


2014-12-09: Version 3.31.47

        Temporarily restore make dependencies.

        Performance and stability improvements on all platforms.


2014-12-08: Version 3.31.46

        Performance and stability improvements on all platforms.


2014-12-08: Version 3.31.45

        Update all DEPS to match chromium's DEPS at edb488e.

        Turn on DCHECKs and other debugging code if dcheck_always_on is 1 (issue
        3731).

        Optimize GetPrototype.

        Performance and stability improvements on all platforms.


2014-12-05: Version 3.31.44

        Performance and stability improvements on all platforms.


2014-12-04: Version 3.31.43

        ES6 template literals: Fix issue with template after rbrace (issue
        3734).

        Stage ES6 template literals (issue 3230).

        Performance and stability improvements on all platforms.


2014-12-04: Version 3.31.42

        Performance and stability improvements on all platforms.


2014-12-04: Version 3.31.41

        Simplify template literal raw string creation (issue 3710).

        Performance and stability improvements on all platforms.


2014-12-03: Version 3.31.40

        Performance and stability improvements on all platforms.


2014-12-03: Version 3.31.39

        Performance and stability improvements on all platforms.


2014-12-03: Version 3.31.38

        Stage ES6 classes and object literal extensions (issue 3330).

        Fixed environment handling for LFlooringDivI on ARM (Chromium issue
        437765).

        Add GetIdentityHash to v8::Name object API (Chromium issue 437416).

        Set V8_CC_GNU or V8_CC_MSVC for clang in gcc / cl mode (Chromium issue
        82385).

        Performance and stability improvements on all platforms.


2014-12-02: Version 3.31.37

        Performance and stability improvements on all platforms.


2014-12-02: Version 3.31.36

        Set V8_CC_GNU or V8_CC_MSVC for clang in gcc / cl mode (Chromium issue
        82385).

        Performance and stability improvements on all platforms.


2014-12-02: Version 3.31.35

        Performance and stability improvements on all platforms.


2014-12-01: Version 3.31.34

        Performance and stability improvements on all platforms.


2014-12-01: Version 3.31.33

        Performance and stability improvements on all platforms.


2014-12-01: Version 3.31.32

        Performance and stability improvements on all platforms.


2014-12-01: Version 3.31.31

        Performance and stability improvements on all platforms.


2014-11-29: Version 3.31.30

        Performance and stability improvements on all platforms.


2014-11-28: Version 3.31.29

        Stage @@toStringTag (--harmony-tostring).

        Performance and stability improvements on all platforms.


2014-11-28: Version 3.31.28

        Performance and stability improvements on all platforms.


2014-11-28: Version 3.31.27

        Ship harmony-strings.

        Performance and stability improvements on all platforms.


2014-11-28: Version 3.31.26

        Abort optimization in corner case (Chromium issue 436893).

        Performance and stability improvements on all platforms.


2014-11-26: Version 3.31.25

        Stage ES6 block scoping (issue 2198).

        Introduce legacy const slots in correct context (Chromium issue 410030).

        Performance and stability improvements on all platforms.


2014-11-26: Version 3.31.24

        Performance and stability improvements on all platforms.


2014-11-25: Version 3.31.23

        Performance and stability improvements on all platforms.


2014-11-25: Version 3.31.22

        Performance and stability improvements on all platforms.


2014-11-24: Version 3.31.21

        Performance and stability improvements on all platforms.


2014-11-24: Version 3.31.20

        Performance and stability improvements on all platforms.


2014-11-22: Version 3.31.19

        Performance and stability improvements on all platforms.


2014-11-21: Version 3.31.18

        Performance and stability improvements on all platforms.


2014-11-21: Version 3.31.17

        Performance and stability improvements on all platforms.


2014-11-21: Version 3.31.16

        Cache template literal callSiteObj (issue 3230).

        Rename String.prototype.contains to 'includes'.

        Reserve code range block for evacuation (Chromium issue 430118).

        Performance and stability improvements on all platforms.


2014-11-20: Version 3.31.15

        Rename String.prototype.contains to 'includes'.

        Performance and stability improvements on all platforms.


2014-11-19: Version 3.31.14

        Remove Weak{Map,Set}.prototype.clear.

        Performance and stability improvements on all platforms.


2014-11-19: Version 3.31.13

        Performance and stability improvements on all platforms.


2014-11-19: Version 3.31.12

        Classes: Expand test to cover strict runtime behavior (issue 3330).

        v8::String::Concat must not throw (Chromium issue 420240).

        Fix disabling all break points from within the debug event callback
        (Chromium issue 432493).

        Performance and stability improvements on all platforms.


2014-11-18: Version 3.31.11

        Performance and stability improvements on all platforms.


2014-11-17: Version 3.31.10

        Performance and stability improvements on all platforms.


2014-11-17: Version 3.31.9

        Expose internal properties of map/set iterators via mirrors.

        Performance and stability improvements on all platforms.


2014-11-17: Version 3.31.8

        Performance and stability improvements on all platforms.


2014-11-15: Version 3.31.7

        Classes: Add support for stepping through default constructors (issue
        3674).

        Performance and stability improvements on all platforms.


2014-11-14: Version 3.31.6

        Fix desugaring of let bindings in for loops to handle continue properly
        (issue 3683).

        Performance and stability improvements on all platforms.


2014-11-14: Version 3.31.5

        Classes: Implement correct name binding (issue 3330).

        Performance and stability improvements on all platforms.


2014-11-14: Version 3.31.4

        Performance and stability improvements on all platforms.


2014-11-14: Version 3.31.3

        Classes: Cleanup default constructor flag.

        Soft fail for invalid cache data.

        Implement .of() on typed arrays (issue 3578).

        Performance and stability improvements on all platforms.


2014-11-13: Version 3.31.2

        MIPS: Leaving a generator via an exception causes it to close (issue
        3096).

        MIPS: ES6: Add support for super in object literals (issue 3571).

        Increase the target new space size to the max new space size (issue
        3626).

        Leaving a generator via an exception causes it to close (issue 3096).

        Correctly compute line numbers in functions from the function
        constructor (Chromium issue 109362).

        Rename v8::Exception::GetMessage to CreateMessage.

        Classes: Add support for arguments in default constructor (issue 3672).

        ES6: Add support for super in object literals (issue 3571).

        Performance and stability improvements on all platforms.


2014-11-12: Version 3.31.1

        Fix has_constant_parameter_count() confusion in LReturn (Chromium issue
        431602).

        Performance and stability improvements on all platforms.


2014-11-05: Version 3.30.33

        `1..isPrototypeOf.call(null)` should return false, not throw TypeError
        (issue 3483).

        Refactor ObjectGetOwnPropertyKeys to accept bitmask rather than boolean
        (issue 3549).

        Add debug mirror support for ES6 Map/Set iterators (Chromium issue
        427868).

        Performance and stability improvements on all platforms.


2014-11-04: Version 3.30.30

        Performance and stability improvements on all platforms.


2014-11-02: Version 3.30.27

        Performance and stability improvements on all platforms.


2014-11-02: Version 3.30.26

        Performance and stability improvements on all platforms.


2014-11-01: Version 3.30.25

        Performance and stability improvements on all platforms.


2014-11-01: Version 3.30.24

        Ensure we don't try to inline raw access to indexed interceptor
        receivers (Chromium issue 419220).

        Performance and stability improvements on all platforms.


2014-10-31: Version 3.30.23

        Introduce v8::Exception::GetMessage to find location of an error object
        (Chromium issue 427954).

        Performance and stability improvements on all platforms.


2014-10-30: Version 3.30.22

        MIPS: Classes: Add super support in methods and accessors (issue 3330).

        Classes: Add super support in methods and accessors (issue 3330).

        Performance and stability improvements on all platforms.


2014-10-29: Version 3.30.21

        MIPS: Classes: Add basic support for properties (issue 3330).

        Classes: Add more tests for prototype edge cases (Chromium issue 3655).

        Classes: Add test for method prototype (issue 3330).

        Get stack trace for uncaught exceptions/promise rejections from the
        simple stack when available.

        Classes: Add basic support for properties (issue 3330).

        Allow duplicate property names in classes (issue 3570).

        Windows: use SystemTimeToTzSpecificLocalTime instead of localtime_s
        (Chromium issue 417640).

        Performance and stability improvements on all platforms.


2014-10-28: Version 3.30.20

        Performance and stability improvements on all platforms.


2014-10-27: Version 3.30.19

        Check string literals with escapes in PreParserTraits::GetSymbol()
        (issue 3606).

        only define ARRAYSIZE_UNSAFE for NaCl builds (Chromium issue 405225).

        Performance and stability improvements on all platforms.


2014-10-24: Version 3.30.18

        Narrow cases where Sparse/Smart versions of Array methods are used
        (issues 2615, 3612, 3621).

        Shrink new space in idle notification (Chromium issue 424423).

        Performance and stability improvements on all platforms.


2014-10-23: Version 3.30.17

        ARM64: Fix stack manipulation (Chromium issue 425585).

        Speed up creation of Objects whose prototype has dictionary elements
        (Chromium issue 422754).

        Enable libstdc++ debug mode in debug builds (issue 3638).

        Performance and stability improvements on all platforms.


2014-10-22: Version 3.30.16

        Remove v8stdint.h, it doesn't serve a purpose anymore.

        Performance and stability improvements on all platforms.


2014-10-21: Version 3.30.15

        Avoid the Marsaglia effect in 3D (Chromium issue 423311).

        Performance and stability improvements on all platforms.


2014-10-20: Version 3.30.14

        Performance and stability improvements on all platforms.


2014-10-17: Version 3.30.13

        Don't expose Array.prototype.values as it breaks webcompat (Chromium
        issue 409858).

        Fix break location calculation (Chromium issue 419663).

        Enable libstdc++ debug mode in debug builds (issue 3638).

        Performance and stability improvements on all platforms.


2014-10-17: Version 3.30.12

        Implement .forEach() on typed arrays (issue 3578).

        Introduce v8::Exception::GetStackTrace API method.

        Remove SmartMove, bringing Array methods further into spec compliance
        (issue 2615).

        Convert argument toObject() in Object.getOwnPropertyNames/Descriptors
        (issue 3443).

        Performance and stability improvements on all platforms.


2014-10-15: Version 3.30.11

        Array.prototype.{every, filter, find, findIndex, forEach, map, some}:
        Use fresh primitive wrapper for calls (issue 3536).

        Correctly expand literal buffer for surrogate pairs (Chromium issue
        423212).

        Performance and stability improvements on all platforms.


2014-10-15: Version 3.30.10

        Squeeze the layout of various AST node types (Chromium issue 417697).

        Performance and stability improvements on all platforms.


2014-10-14: Version 3.30.9

        Performance and stability improvements on all platforms.


2014-10-13: Version 3.30.8

        AST nodes have at most one bailout/typefeedback ID now, saving lots of
        memory (Chromium issue 417697).

        Allow identifier code points from supplementary multilingual planes
        (issue 3617).

        Performance and stability improvements on all platforms.


2014-10-10: Version 3.30.7

        Fix computation of UTC time from local time at DST change points (issue
        3116, Chromium issues 415424, 417640).

        Convert `obj` ToObject in Object.keys() (issue 3587).

        Performance and stability improvements on all platforms.


2014-10-09: Version 3.30.6

        Update unicode to 7.0.0 (issue 2892).

        Classes: Add support for toString (issue 3330).

        Don't enable WPO on Win64 and require Server 2003 / x64 for win64
        (Chromium issue 421363).

        Performance and stability improvements on all platforms.


2014-10-08: Version 3.30.5

        Performance and stability improvements on all platforms.


2014-10-08: Version 3.30.4

        This uses a runtime function to set up the the constructor and its
        prototype (issue 3330).

        Remove PersistentBase::ClearAndLeak.

        Squeeze the layout of variable proxy nodes (Chromium issue 417697).

        Add MonotonicallyIncreasingTime to V8 Platform (Chromium issue 417668).

        Fix representation of HLoadRoot (Chromium issue 419036).

        Performance and stability improvements on all platforms.


2014-10-03: Version 3.30.3

        Removed the Isolate* field from literal nodes (Chromium issue 417697).

        Squeeze the layout of expression nodes a bit (Chromium issue 417697).

        Merged FeedbackSlotInterface into AstNode, removing the need for a 2nd
        vtable (Chromium issue 417697).

        Extend CPU profiler with mapping ticks to source lines.

        Remove support for parallel sweeping.

        Introduce v8::Object::GetIsolate().

        Performance and stability improvements on all platforms.


2014-10-02: Version 3.30.2

        Fix Hydrogen's BuildStore() (Chromium issue 417508).

        Move unit tests to test/unittests (issue 3489).

        Changes to ALLOW_UNUSED to match upcoming changes to the Chromium trunk:
        * Eliminate usage of ALLOW_UNUSED to define COMPILE_ASSERT and just use
        static_assert() in all cases now that all platforms build with C++11. *
        Convert remaining uses of ALLOW_UNUSED to ALLOW_UNUSED_TYPE to match how
        Chromium will be splitting this functionality.  (In Chromium we'll have
        both   ALLOW_UNUSED_TYPE and ALLOW_UNUSED_LOCAL, which have different
        syntax to   enable us to use these with MSVC.) (Chromium issue 81439).

        Performance and stability improvements on all platforms.


2014-10-01: Version 3.30.1

        Introduce PromiseRejectCallback (issue 3093).

        ES6: Implement object literal property shorthand (issue 3584).

        Performance and stability improvements on all platforms.


2014-09-30: Version 3.29.93

        Add a getter for the address and size of the code range to the pulic API
        (issue 3598).

        Convert `obj` ToObject in Object.keys() (issue 3587).

        Performance and stability improvements on all platforms.


2014-09-29: Version 3.29.92

        Performance and stability improvements on all platforms.


2014-09-26: Version 3.29.91

        Performance and stability improvements on all platforms.


2014-09-25: Version 3.29.88

        Performance and stability improvements on all platforms.


2014-09-24: Version 3.29.87

        Preserve message when rethrowing exception (issue 3583).

        Fix escaped index JSON parsing (Chromium issue 416449).

        Performance and stability improvements on all platforms.


2014-09-23: Version 3.29.84

        Performance and stability improvements on all platforms.


2014-09-23: Version 3.29.83

        Performance and stability improvements on all platforms.


2014-09-23: Version 3.29.82

        Fix escaped index JSON parsing (Chromium issue 416449).

        Performance and stability improvements on all platforms.


2014-09-17: Version 3.29.70

        Enable ES6 generators (issue 2355).

        Fixed int vs. uintptr_t confusion (plus some cleanup on the way) (issue
        3556).

        Move configuration of ResourceConstraints to Isolate construction.

        Performance and stability improvements on all platforms.


2014-09-16: Version 3.29.66

        Currently, a new isolate is created in an uninitialized state, and
        several API methods will automatically initialize it. During this
        uninitialized state, code event handlers and function entry handlers can
        be attached to the isolate.

        Performance and stability improvements on all platforms.


2014-09-15: Version 3.29.64

        ES6: String(symbol) should work like symbol.toString (issue 3554).

        Arrow functions: Cleanup handling of the prototype property (issue
        2700).

        Remove V8_HOST_CAN_READ_UNALIGNED and its uses (Chromium issue 412967).

        Fix Smi vs. HeapObject confusion in HConstants (Chromium issue 412215).

        Performance and stability improvements on all platforms.


2014-09-12: Version 3.29.59

        Do not use wide reads in CopyCharsUnsigned (Chromium issue 412967).

        Fix inaccurate type condition in Hydrogen (Chromium issue 412210).

        Fix crash in ScriptDebugServer::wrapCallFrames (Chromium issue 411196).

        Performance and stability improvements on all platforms.


2014-09-11: Version 3.29.57

        ES6: Add support for method shorthand in object literals (issue 3516).

        Unbreak FreeBSD build (hopefully) (issue 3548).

        Performance and stability improvements on all platforms.


2014-09-09: Version 3.29.53

        Performance and stability improvements on all platforms.


2014-09-08: Version 3.29.50

        Allocate a new empty number dictionary when resetting elements (Chromium
        issue 410332).

        Performance and stability improvements on all platforms.


2014-09-05: Version 3.29.43

        Enforce correct number comparisons when inlining Array.indexOf (Chromium
        issue 407946).

        Performance and stability improvements on all platforms.


2014-09-04: Version 3.29.41

        Performance and stability improvements on all platforms.


2014-09-03: Version 3.29.40

        Use correct receiver for DOM accessors on the prototype chain (issue
        3538).

        Performance and stability improvements on all platforms.


2014-09-02: Version 3.29.38

        Do not clear weak monomorphic IC after context disposal (Chromium issue
        404020).

        Turn on job-based sweeping (issue 3104).

        Performance and stability improvements on all platforms.


2014-09-01: Version 3.29.35

        Performance and stability improvements on all platforms.


2014-08-29: Version 3.29.29

        Performance and stability improvements on all platforms.


2014-08-28: Version 3.29.27

        Performance and stability improvements on all platforms.


2014-08-28: Version 3.29.25

        Performance and stability improvements on all platforms.


2014-08-28: Version 3.29.24

        Tweaks to generate XP-compatible .exes (Chromium issue 407517).

        Performance and stability improvements on all platforms.


2014-08-28: Version 3.29.23

        Performance and stability improvements on all platforms.


2014-08-27: Version 3.29.20

        Handle empty allocation list in CodeRange properly (issue 3540, Chromium
        issue 407566).

        Fixed inlining of constant values (issue 3529).

        Performance and stability improvements on all platforms.


2014-08-25: Version 3.29.17

        Performance and stability improvements on all platforms.


2014-08-24: Version 3.29.16

        Fix issue with numeric property names (issue 3507).

        Add back the duplicate property checker (issue 3498).

        Performance and stability improvements on all platforms.


2014-08-22: Version 3.29.14

        Don't inline Array.shift() if receiver map is not extensible (Chromium
        issue 405517).

        Performance and stability improvements on all platforms.


2014-08-21: Version 3.29.11

        Refactor ParseObjectLiteral.

        Support symbol-named properties in API (issue 3394).

        Suppress test262 test that tests duplicate properties.

        ES6: Duplicate properties are no longer an error (issue 3498).

        Expose function CheckDebugBreak in the debugger api.

        Remove RegExp.$input (issue 3486).

        Performance and stability improvements on all platforms.


2014-08-21: Version 3.29.10

        ES6: Make sure we do not store -0 as the key in Map/Set (issue 3515).

        Remove removed flags from tests.

        Expose well-known Symbols to C++ API (Chromium issue 341423).

        Implement ES6 Array.of() (issue 3427).

        Performance and stability improvements on all platforms.


2014-08-20: Version 3.29.9

        Correctly handle holes when concat()ing double arrays (Chromium issue
        403409).

        [turbofan] Refactor the InstructionSelector tests (issue 3489).

        ES6: Make Map/Set constructors support iterable values (issue 3508).

        WeakMap/WeakSet: Add test for non object keys (issue 3399).

        Performance and stability improvements on all platforms.


2014-08-12: Version 3.28.71

        ToNumber(Symbol) should throw TypeError (issue 3499).

        Performance and stability improvements on all platforms.


2014-08-11: Version 3.28.69

        Performance and stability improvements on all platforms.


2014-08-09: Version 3.28.65

        Performance and stability improvements on all platforms.


2014-08-08: Version 3.28.64

        ES6: Implement WeakMap and WeakSet constructor logic (issue 3399).

        Enable ES6 unscopables (issue 3401).

        Turn on harmony_unscopables for es_staging (issue 3401).

        Remove proxies from --harmony switch for M38, because problems.

        Reland "Add initial support for compiler unit tests using GTest/GMock."
        (issue 3489).

        Enable ES6 iteration by default (issue 2214).

        Performance and stability improvements on all platforms.


2014-08-07: Version 3.28.62

        Only escape U+0022 in argument values of `String.prototype` HTML methods
        (issue 2217).

        Update webkit test for expected own properties.

        This implements unscopables (issue 3401).

        Add `CheckObjectCoercible` for the `String.prototype` HTML methods
        (issue 2218).

        Add initial support for compiler unit tests using GTest/GMock (issue
        3489).

        Trigger exception debug events on Promise reject (Chromium issue
        393913).

        Refactor unit tests for the base library to use GTest (issue 3489).

        Performance and stability improvements on all platforms.


2014-08-06: Version 3.28.60

        Enable ES6 Map and Set by default (issue 1622).

        Performance and stability improvements on all platforms.


2014-08-06: Version 3.28.59

        Removed GetConstructor from the API. Instead either get the
        "constructor" property stored in the prototype, or keep a side-table.

        Enable ES6 Symbols by default (issue 2158).

        Performance and stability improvements on all platforms.


2014-08-05: Version 3.28.57

        Add dependencies on gtest and gmock.

        Performance and stability improvements on all platforms.


2014-08-04: Version 3.28.54

        Performance and stability improvements on all platforms.


2014-08-01: Version 3.28.53

        Performance and stability improvements on all platforms.


2014-07-31: Version 3.28.52

        Performance and stability improvements on all platforms.


2014-07-31: Version 3.28.51

        Drop deprecated memory related notification API (Chromium issue 397026).

        Performance and stability improvements on all platforms.


2014-07-31: Version 3.28.50

        Use emergency memory in the case of out of memory during evacuation
        (Chromium issue 395314).

        Performance and stability improvements on all platforms.


2014-07-30: Version 3.28.48

        Fix Object.freeze with field type tracking. Keep the descriptor properly
        intact while update the field type (issue 3458).

        Performance and stability improvements on all platforms.


2014-07-29: Version 3.28.45

        Performance and stability improvements on all platforms.


2014-07-28: Version 3.28.43

        Performance and stability improvements on all platforms.


2014-07-25: Version 3.28.38

        Fix issue with setters and their holders in accessors.cc (Chromium issue
        3462).

        Introduce more debug events for promises (issue 3093).

        Move gc notifications from V8 to Isolate and make idle hint mandatory
        (Chromium issue 397026).

        The accessors should get the value from the holder and not from this
        (issue 3461).

        Performance and stability improvements on all platforms.


2014-07-24: Version 3.28.35

        Rebaseline/update the intl tests with ICU 52 (issue 3454).

        Expose the content of Sets and WeakSets through SetMirror (issue 3093).

        Performance and stability improvements on all platforms.


2014-07-23: Version 3.28.32

        Update ICU to 5.2 (matching chromium) (issue 3452).

        Performance and stability improvements on all platforms.


2014-07-22: Version 3.28.31

        Remove harmony-typeof.

        Implement String.prototype.codePointAt and String.fromCodePoint (issue
        2840).

        Performance and stability improvements on all platforms.


2014-07-21: Version 3.28.30

        Performance and stability improvements on all platforms.


2014-07-21: Version 3.28.29

        Performance and stability improvements on all platforms.


2014-07-18: Version 3.28.28

        Performance and stability improvements on all platforms.


2014-07-17: Version 3.28.26

        Ship ES6 Math functions (issue 2938).

        Make ToPrimitive throw on symbol wrappers (issue 3442).

        Performance and stability improvements on all platforms.


2014-07-16: Version 3.28.25

        Performance and stability improvements on all platforms.


2014-07-16: Version 3.28.24

        Removed some copy-n-paste from StackFrame::Foo API entries (issue 3436).

        Performance and stability improvements on all platforms.


2014-07-15: Version 3.28.23

        Fix error message about read-only symbol properties (issue 3441).

        Include symbol properties in Object.{create,defineProperties} (issue
        3440).

        Performance and stability improvements on all platforms.


2014-07-14: Version 3.28.22

        Performance and stability improvements on all platforms.


2014-07-11: Version 3.28.21

        Make `let` usable as an identifier in ES6 sloppy mode (issue 2198).

        Support ES6 Map and Set in heap profiler (issue 3368).

        Performance and stability improvements on all platforms.


2014-07-10: Version 3.28.20

        Remove deprecate counter/histogram methods.

        Fixed printing of external references (Chromium issue 392068).

        Fix several issues with ES6 redeclaration checks (issue 3426).

        Performance and stability improvements on all platforms.


2014-07-09: Version 3.28.19

        Performance and stability improvements on all platforms.


2014-07-09: Version 3.28.18

        Reland "Postpone termination exceptions in debug scope." (issue 3408).

        Performance and stability improvements on all platforms.


2014-07-08: Version 3.28.17

        MIPS: Fix computed properties on object literals with a double as
        propertyname (Chromium issue 390732).

        Performance and stability improvements on all platforms.


2014-07-08: Version 3.28.16

        Fix computed properties on object literals with a double as propertyname
        (Chromium issue 390732).

        Avoid brittle use of .bind in Promise.all (issue 3420).

        Performance and stability improvements on all platforms.


2014-07-07: Version 3.28.15

        Remove a bunch of Isolate::UncheckedCurrent calls.

        Performance and stability improvements on all platforms.


2014-07-07: Version 3.28.14

        Use the HeapObjectIterator to scan-on-scavenge map pages (Chromium issue
        390732).

        Introduce debug events for Microtask queue (Chromium issue 272416).

        Split out libplatform into a separate libary.

        Add clang-format to presubmit checks.

        Stack traces exposed to Javascript should omit extensions (issue 311).

        Remove deprecated v8::Context::HasOutOfMemoryException.

        Postpone termination exceptions in debug scope (issue 3408).

        Performance and stability improvements on all platforms.


2014-07-04: Version 3.28.13

        Rollback to r22134.


2014-07-04: Version 3.28.12

        Use the HeapObjectIterator to scan-on-scavenge map pages (Chromium issue
        390732).

        Introduce debug events for Microtask queue (Chromium issue 272416).

        Performance and stability improvements on all platforms.


2014-07-03: Version 3.28.11

        Split out libplatform into a separate libary.

        Performance and stability improvements on all platforms.


2014-07-03: Version 3.28.10

        Add clang-format to presubmit checks.

        Stack traces exposed to Javascript should omit extensions (issue 311).

        Remove deprecated v8::Context::HasOutOfMemoryException.

        Postpone termination exceptions in debug scope (issue 3408).

        Performance and stability improvements on all platforms.


2014-07-02: Version 3.28.9

        Make freeze & friends ignore private properties (issue 3419).

        Introduce a builddeps make target (issue 3418).

        Performance and stability improvements on all platforms.


2014-07-01: Version 3.28.8

        Remove static initializer from isolate.

        ES6: Add missing Set.prototype.keys function (issue 3411).

        Introduce debug events for promises (issue 3093).

        Performance and stability improvements on all platforms.


2014-06-30: Version 3.28.7

        Performance and stability improvements on all platforms.


2014-06-30: Version 3.28.6

        Unbreak "os" stuff in shared d8 builds (issue 3407).

        Performance and stability improvements on all platforms.


2014-06-26: Version 3.28.4

        Compile optimized code with active debugger but no break points
        (Chromium issue 386492).

        Optimize Map/Set.prototype.forEach.

        Collect garbage with kReduceMemoryFootprintMask in IdleNotification
        (Chromium issue 350720).

        Performance and stability improvements on all platforms.


2014-06-26: Version 3.28.3

        Grow heap slower if GC freed many global handles (Chromium issue
        263503).

        Performance and stability improvements on all platforms.


2014-06-25: Version 3.28.2

        Remove bogus assertions in HCompareObjectEqAndBranch (Chromium issue
        387636).

        Do not eagerly update allow_osr_at_loop_nesting_level (Chromium issue
        387599).

        Set host_arch to ia32 on machines with a 32bit userland but a 64bit
        kernel (Chromium issue 368384).

        Map/Set: Implement constructor parameter handling (issue 3398).

        Performance and stability improvements on all platforms.


2014-06-24: Version 3.28.1

        Support LiveEdit on Arm64 (Chromium issue 368580).

        Run JS micro tasks in the appropriate context (Chromium issue 385349).

        Add a use counter API.

        Set host_arch to ia32 on machines with a 32bit userland but a 64bit
        kernel.

        Performance and stability improvements on all platforms.


2014-06-23: Version 3.28.0

        MIPS: Support LiveEdit (Chromium issue 368580).

        Array.concat: properly go to dictionary mode when required (Chromium
        issue 387031).

        Support LiveEdit on ARM (Chromium issue 368580).

        Performance and stability improvements on all platforms.


2014-06-18: Version 3.27.34

        Reduce number of writes to DependentCode array when inserting dependent
        IC (Chromium issue 305878).

        Performance and stability improvements on all platforms.


2014-06-17: Version 3.27.33

        Do GC if CodeRange fails to allocate a block (Chromium issue 305878).

        Throw syntax error when a getter/setter has the wrong number of params
        (issue 3371).

        Performance and stability improvements on all platforms.


2014-06-17: Version 3.27.32

        Performance and stability improvements on all platforms.


2014-06-16: Version 3.27.31

        Version fix.


2014-06-16: Version 3.27.30

        Fix representation of Phis for mutable-heapnumber-in-object-literal
        properties (issue 3392).

        Performance and stability improvements on all platforms.


2014-06-16: Version 3.27.29

        Emulate MLS on pre-ARMv6T2. Cleaned up thumbee vs. thumb2 confusion.

        X87: Fixed flooring division by a power of 2, once again.. (issue 3259).

        Fixed undefined behavior in RNG (Chromium issue 377790).

        Performance and stability improvements on all platforms.


2014-06-13: Version 3.27.28

        Add v8::Promise::Then (Chromium issue 371288).

        Performance and stability improvements on all platforms.


2014-06-12: Version 3.27.27

        Fix detection of VFP3D16 on Galaxy Tab 10.1 (issue 3387).

        Performance and stability improvements on all platforms.


2014-06-12: Version 3.27.26

        MIPS: Fixed flooring division by a power of 2, once again.. (issue
        3259).

        Fixed flooring division by a power of 2, once again.. (issue 3259).

        Fix unsigned comparisons (issue 3380).

        Performance and stability improvements on all platforms.


2014-06-11: Version 3.27.25

        Performance and stability improvements on all platforms.


2014-06-11: Version 3.27.24

        Fix invalid attributes when generalizing because of incompatible map
        change (Chromium issue 382143).

        Fix missing smi check in inlined indexOf/lastIndexOf (Chromium issue
        382513).

        Performance and stability improvements on all platforms.


2014-06-06: Version 3.27.23

        Performance and stability improvements on all platforms.


2014-06-06: Version 3.27.22

        Performance and stability improvements on all platforms.


2014-06-06: Version 3.27.21

        Turn on harmony_collections for es_staging (issue 1622).

        Do not make heap iterable eagerly (Chromium issue 379740).

        Performance and stability improvements on all platforms.


2014-06-05: Version 3.27.20

        Fix invalid loop condition for Array.lastIndexOf() (Chromium issue
        380512).

        Add API support for passing a C++ function as a microtask callback.

        Performance and stability improvements on all platforms.


2014-06-04: Version 3.27.19

        Split Put into Put and Remove.

        ES6: Add support for values/keys/entries for Map and Set (issue 1793).

        Performance and stability improvements on all platforms.


2014-06-03: Version 3.27.18

        Remove PROHIBITS_OVERWRITING as it is subsumed by non-configurable
        properties.

        Performance and stability improvements on all platforms.


2014-06-02: Version 3.27.17

        BuildNumberToString: Check for undefined keys in the cache (Chromium
        issue 368114).

        HRor and HSar can deoptimize (issue 3359).

        Simplify, speed-up correct-context ObjectObserve calls.

        Performance and stability improvements on all platforms.


2014-05-29: Version 3.27.16

        Allow microtasks to throw exceptions and handle them gracefully
        (Chromium issue 371566).

        Performance and stability improvements on all platforms.


2014-05-28: Version 3.27.15

        Performance and stability improvements on all platforms.


2014-05-27: Version 3.27.14

        Reland "Customized support for feedback on calls to Array." and follow-
        up fixes (Chromium issues 377198, 377290).

        Performance and stability improvements on all platforms.


2014-05-26: Version 3.27.13

        Performance and stability improvements on all platforms.


2014-05-26: Version 3.27.12

        Check for cached transition to ExternalArray elements kind (issue 3337).

        Support ES6 weak collections in heap profiler (Chromium issue 376196).

        Performance and stability improvements on all platforms.


2014-05-23: Version 3.27.11

        Add support for ES6 Symbol in heap profiler (Chromium issue 376194).

        Performance and stability improvements on all platforms.


2014-05-22: Version 3.27.10

        Implement Mirror object for Symbols (issue 3290).

        Allow debugger to step into Map and Set forEach callbacks (issue 3341).

        Fix ArrayShift hydrogen support (Chromium issue 374838).

        Use SameValueZero for Map and Set (issue 1622).

        Array Iterator next should check for own property.

        Performance and stability improvements on all platforms.


2014-05-21: Version 3.27.9

        Disable ArrayShift hydrogen support (Chromium issue 374838).

        ES6 Map/Set iterators/forEach improvements (issue 1793).

        Performance and stability improvements on all platforms.


2014-05-20: Version 3.27.8

        Move microtask queueing logic from JavaScript to C++.

        Partial revert of "Next bunch of fixes for check elimination" (Chromium
        issue 372173).

        Performance and stability improvements on all platforms.


2014-05-19: Version 3.27.7

        Performance and stability improvements on all platforms.


2014-05-19: Version 3.27.6

        Performance and stability improvements on all platforms.


2014-05-16: Version 3.27.5

        Performance and stability improvements on all platforms.


2014-05-15: Version 3.27.4

        Drop thenable coercion cache (Chromium issue 372788).

        Skip write barriers when updating the weak hash table (Chromium issue
        359401).

        Performance and stability improvements on all platforms.


2014-05-14: Version 3.27.3

        Performance and stability improvements on all platforms.


2014-05-13: Version 3.27.2

        Harden %SetIsObserved with RUNTIME_ASSERTs (Chromium issue 371782).

        Drop unused static microtask API.

        Introduce an api to query the microtask autorun state of an isolate.

        Performance and stability improvements on all platforms.


2014-05-12: Version 3.27.1

        Object.observe: avoid accessing acceptList properties more than once
        (issue 3315).

        Array Iterator prototype should not have a constructor (issue 3293).

        Fix typos in unit test for Array.prototype.fill().

        Shorten autogenerated error message for functions only (issue 3019,
        Chromium issue 331971).

        Reland "Removed default Isolate." (Chromium issue 359977).

        Performance and stability improvements on all platforms.


2014-05-09: Version 3.27.0

        Unbreak samples and tools.

        Performance and stability improvements on all platforms.


2014-05-08: Version 3.26.33

        Removed default Isolate (Chromium issue 359977).

        Performance and stability improvements on all platforms.


2014-05-07: Version 3.26.32

        Performance and stability improvements on all platforms.


2014-05-06: Version 3.26.31

        Add a basic gn file for V8.

        Performance and stability improvements on all platforms.


2014-05-05: Version 3.26.30

        Introduce a microtask suppression scope and move microtask methods to
        isolate (Chromium issue 369503).

        Re-enable Object.observe and add enforcement for security invariants.

        Move cache line size calculation directly into CPU::FlushICache
        (Chromium issue 359977).

        Generation of our home-grown memmove doesn't depend on serializer state
        anymore (Chromium issue 359977).

        Fix |RunMicrotasks()| leaking reference to the last context being run
        on.

        Object.defineProperty shouldn't be a hint that we're constructing a
        dictionary (Chromium issue 362870).

        Performance and stability improvements on all platforms.


2014-05-01: Version 3.26.29

        Added a Isolate* parameter to Serializer::enabled() (Chromium issue
        359977).

        ES6: Add support for Array.prototype.fill() (issue 3273).

        Performance and stability improvements on all platforms.


2014-04-29: Version 3.26.28

        PromiseThen should ignore non-function parameters (Chromium issue
        347455).

        Performance and stability improvements on all platforms.


2014-04-29: Version 3.26.27

        Error stack getter should not overwrite itself with a data property
        (issue 3294).

        Performance and stability improvements on all platforms.


2014-04-28: Version 3.26.26

        Expose promise value through promise mirror (issue 3093).

        Simplified CPU/CpuFeatures a bit (Chromium issue 359977).

        Performance and stability improvements on all platforms.


2014-04-28: Version 3.26.25

        Add timestamps to CPU profile samples (Chromium issue 363976).

        Expose promise status through promise mirror (issue 3093).

        Remove static CallCompletedCallback handlers.

        Added an Isolate* field to NoTrackDoubleFieldsForSerializerScope,
        PlatformFeatureScope and BinaryOpIC::State (Chromium issue 359977).

        Trigger debug event on not yet caught exception in promises (issue
        3093).

        Unbreak vtunejit=on (issue 3288).

        Performance and stability improvements on all platforms.


2014-04-25: Version 3.26.24

        MIPS: CodeStubs contain their corresponding Isolate* now. (part 2)
        (Chromium issue 359977).

        MIPS: CodeStubs contain their corresponding Isolate* now. (part 1)
        (Chromium issue 359977).

        CodeStubs contain their corresponding Isolate* now. (part 2) (Chromium
        issue 359977).

        Make DescriptorArray::IsMoreGeneralThan() and DescriptorArray::Merge()
        compatible again (Chromium issue 365172).

        CodeStubs contain their corresponding Isolate* now. (part 1) (Chromium
        issue 359977).

        Performance and stability improvements on all platforms.


2014-04-24: Version 3.26.23

        Performance and stability improvements on all platforms.


2014-04-23: Version 3.26.22

        Disable field type tracking by default (Chromium issue 365172).

        Performance and stability improvements on all platforms.


2014-04-23: Version 3.26.21

        Context-allocate all parameters in generators (issue 3280).

        Simplify v8/Isolate teardown (Chromium issue 359977).

        Performance and stability improvements on all platforms.


2014-04-21: Version 3.26.20

        ES6: Add support for Map/Set forEach (Chromium issues 1793, 2323).

        Performance and stability improvements on all platforms.


2014-04-18: Version 3.26.19

        ES6: Add support for Map/Set forEach (Chromium issues 1793, 2323).

        Performance and stability improvements on all platforms.


2014-04-17: Version 3.26.18

        Removed Isolate::EnterDefaultIsolate (Chromium issue 359977).

        Performance and stability improvements on all platforms.


2014-04-16: Version 3.26.17

        Clear invalid field maps in PropertyAccessInfo (Chromium issue 363956).

        ES6: Add support for Map/Set forEach (Chromium issues 1793, 2323).

        Performance and stability improvements on all platforms.


2014-04-16: Version 3.26.16

        Removed EnterIsolateIfNeeded and a soon-to-be-useless assertion
        (Chromium issue 359977).

        Removed GetDefaultIsolate{Debugger,ForLocking,StackGuard} (Chromium
        issue 359977).

        Performance and stability improvements on all platforms.


2014-04-15: Version 3.26.15

        Fix result of LCodeGen::DoWrapReceiver for strict functions and builtins
        (Chromium issue 362128).

        Performance and stability improvements on all platforms.


2014-04-15: Version 3.26.14

        Performance and stability improvements on all platforms.


2014-04-14: Version 3.26.13

        Make maps in monomorphic IC stubs weak (issue 2073).

        x64: Make sure that the upper half of a 64bit register contains 0 for
        int32 values (Chromium issue 360611).

        Performance and stability improvements on all platforms.


2014-04-11: Version 3.26.12

        Do not use ranges after range analysis (Chromium issue 361608).

        Performance and stability improvements on all platforms.


2014-04-10: Version 3.26.11

        Performance and stability improvements on all platforms.


2014-04-10: Version 3.26.10

        Allow the embedder to pass the virtual memory limit to v8.

        Performance and stability improvements on all platforms.


2014-04-09: Version 3.26.9

        Fix invalid local property lookup for transitions (Chromium issue
        361025).

        MIPS: Fixed flooring division by -1 (issue 3259).

        Fixed flooring division by -1 on ARM (issue 3259).

        Make `String.prototype.contains` throw when passing a regular expression
        (issue 3261).

        Performance and stability improvements on all platforms.


2014-04-08: Version 3.26.8

        Yet another regression test for range analysis (issue 3204).

        Performance and stability improvements on all platforms.


2014-04-07: Version 3.26.7

        Performance and stability improvements on all platforms.


2014-04-04: Version 3.26.6

        Performance and stability improvements on all platforms.


2014-04-03: Version 3.26.5

        Performance and stability improvements on all platforms.


2014-04-03: Version 3.26.4

        Make stray 'return' an early error.

        Show references from weak containers as weak in heap snapshots (Chromium
        issue 356590).

        Make invalid LHSs that are calls late errors (Chromium issue 358346).

        Performance and stability improvements on all platforms.


2014-04-02: Version 3.26.3

        Support typed arrays in IsMoreGeneralElementsKindTransition (Chromium
        issue 357054).

        Remove debugger_auto_break flag.

        Store i18n meta data in hidden symbols instead of js accessible
        properties (Chromium issue 354967).

        Performance and stability improvements on all platforms.


2014-04-01: Version 3.26.2

        Performance and stability improvements on all platforms.


2014-04-01: Version 3.26.1

        Fix Type::Intersect to skip uninhabited bitsets (Chromium issue 357330).

        Fix PrepareKeyedOperand on arm (Chromium issue 358057).

        Performance and stability improvements on all platforms.


2014-03-31: Version 3.26.0

        Deprecate Start/StopCpuProfiling methods (issue 3213).

        Don't crash if we get a timezone change notification on an uninitialized
        isolate (Chromium issue 357362).

        Performance and stability improvements on all platforms.


2014-03-28: Version 3.25.30

        NativeContext::map_cache reference should be strong in heap snapshots
        (Chromium issue 357060).

        Performance and stability improvements on all platforms.


2014-03-27: Version 3.25.29

        Performance and stability improvements on all platforms.


2014-03-27: Version 3.25.28

        Performance and stability improvements on all platforms.


2014-03-26: Version 3.25.27

        Promise constructor should not be enumerable (Chromium issue 352597).

        Performance and stability improvements on all platforms.


2014-03-26: Version 3.25.26

        Performance and stability improvements on all platforms.


2014-03-25: Version 3.25.25

        Roll ICU 239289:258359 and add support for external ICU data tables
        (issue 3142, Chromium issue 72633).

        Performance and stability improvements on all platforms.


2014-03-25: Version 3.25.24

        Add support for per-isolate private symbols.

        No longer OOM on invalid string length (issue 3060).

        Remove Failure::OutOfMemory propagation and
        V8::IgnoreOutOfMemoryException (issue 3060).

        Tentative Windows dll build fix: Don't V8_EXPORT ScriptCompiler::Source
        (issue 3228).

        Performance and stability improvements on all platforms.


2014-03-24: Version 3.25.23

        Rename A64 port to ARM64 port (Chromium issue 354405).

        Fix missing access check in Runtime_SetPrototype (Chromium issue
        354123).

        Fix polymorphic hydrogen handling of SLOPPY_ARGUMENTS_ELEMENTS (Chromium
        issue 354391).

        Performance and stability improvements on all platforms.


2014-03-20: Version 3.25.22

        Increase the "local variables in a function" limit (issue 3205).

        Implement ES6 symbol registry and predefined symbols.

        Throw exception on invalid string length instead of OOM (Chromium issue
        349329).

        Performance and stability improvements on all platforms.


2014-03-20: Version 3.25.21

        Performance and stability improvements on all platforms.


2014-03-20: Version 3.25.20

        Fix polymorphic keyed loads for SLOPPY_ARGUMENTS_ELEMENTS (Chromium
        issue 350867).

        Performance and stability improvements on all platforms.


2014-03-19: Version 3.25.19

        Performance and stability improvements on all platforms.


2014-03-19: Version 3.25.18

        Performance and stability improvements on all platforms.


2014-03-19: Version 3.25.17

        Performance and stability improvements on all platforms.


2014-03-18: Version 3.25.16

        Apply numeric casts correctly in typed arrays and related code (Chromium
        issue 353004).

        Performance and stability improvements on all platforms.


2014-03-18: Version 3.25.15

        Don't generate keyed store ICs for global proxies (Chromium issue
        352983).

        MIPS: Make invalid LHSs a parse-time (reference) error (Chromium issue
        351658).

        Make invalid LHSs a parse-time (reference) error (Chromium issue
        351658).

        Add Promises/A+ Compliance Test Suite (Chromium issue 347095).

        Split Promise API into Promise/Resolver.

        Performance and stability improvements on all platforms.


2014-03-17: Version 3.25.14

        Performance and stability improvements on all platforms.


2014-03-17: Version 3.25.13

        Move profiler callback interfaces from v8.h to v8-profiler.h.

        Performance and stability improvements on all platforms.


2014-03-14: Version 3.25.12

        PromiseCoerce should deal with an error during accessing "then"
        (Chromium issue 347095).

        Propagate updated offsets in BoundsCheckBbData (Chromium issue 350863).

        Add regression test for range analysis bug (issue 3204).

        Continued fix for 351257. Reusing the feedback vector is too complex
        (Chromium issue 351257).

        StopCpuProfiling should return non-const CpuProfile (issue 3213).

        Allow for compiling with xcode 5.1 (which doesn't have gcc anymore).

        Performance and stability improvements on all platforms.


2014-03-14: Version 3.25.11

        MIPS: Remove uses of CanBeNegative() in HMod (issue 3204).

        MIPS: Remove uses of RangeCanInclude() in flooring division by power of
        2 (issue 3204).

        MIPS: Fix uses of range analysis results in HChange (issue 3204).

        Make translation of modulus operation '--stress-opt'-proof (Chromium
        issue 352059).

        Remove uses of CanBeNegative() in HMod (issue 3204).

        Remove uses of RangeCanInclude() in flooring division by power of 2
        (issue 3204).

        Fix uses of range analysis results in HChange (issue 3204).

        Performance and stability improvements on all platforms.


2014-03-14: Version 3.25.10

        This version was not committed due to script failures.


2014-03-13: Version 3.25.9

        Reland "Enable Object.observe by default" again (issue 2409).

        Use intrinsics for builtin ArrayBuffer property accesses (Chromium issue
        351787).

        Performance and stability improvements on all platforms.


2014-03-12: Version 3.25.8

        Fix HIsSmiAndBranch::KnownSuccessorBlock() by deleting it (Chromium
        issue 351320).

        Fix handling of polymorphic array accesses with constant index (Chromium
        issue 351319).

        Fix lazy deopt after tagged binary ops (Chromium issue 350434).

        MIPS: Cleanup some of the range uses in ModI/DivI (issue 3204).

        Fix issue with getOwnPropertySymbols and hidden properties (Chromium
        issue 350864).

        Cleanup some of the range uses in ModI/DivI (issue 3204).

        PromiseCoerce should ignore primitive values (Chromium issue 347095).

        Use a per-isolate cache for the date object JS bits (Chromium issue
        348856).

        Performance and stability improvements on all platforms.


2014-03-11: Version 3.25.7

        Promise.all and Promise.race should reject non-array parameter (Chromium
        issue 347453).

        Promise.all and Promise race should use "then" rather than "chain"
        (Chromium issue 347427).

        Merge the "Compute Minus Zero Checks" phase into the range analysis
        (issue 3204).

        Performance and stability improvements on all platforms.


2014-03-10: Version 3.25.6

        Replace the recursion in PropagateMinusZeroChecks() with a loop and a
        worklist (issue 3204).

        Reland "Enable Object.observe by default" (issue 2409).

        Enable Object.observe by default (issue 2409).

        AllocationTracker now maintains a map from address range to stack trace
        that allocated the range. When snapshot is generated the map is used to
        find construction stack trace for an object using its address (Chromium
        issue 277984).

        Introduce Runtime_GetAllScopesDetails to get all scopes at once for a
        frame (Chromium issue 340285).

        Reduce heavy runtime calls from debug mirrors (Chromium issue 340285).

        Check and clear date cache in DateCurrentTime, DateLocalTimezone and
        getTimezoneOffset (Chromium issue 142141).

        Performance and stability improvements on all platforms.


2014-03-06: Version 3.25.5

        Fix HConstants with Smi-ranged HeapNumber values (Chromium issue
        349878).

        Fix issues with JSON stringify replacer array (issues 3200, 3201).

        Performance and stability improvements on all platforms.


2014-03-05: Version 3.25.4

        x64: Fix LMathMinMax for constant Smi right-hand operands (Chromium
        issue 349079).

        Performance and stability improvements on all platforms.


2014-03-04: Version 3.25.3

        Clear optimized code cache in shared function info when code gets
        deoptimized (Chromium issue 343609).

        Fixed constant folding for Math.clz32 (Chromium issue 347906).

        Fix JSObject::PrintTransitions (Chromium issue 347912).

        Fix handling of constant global variable assignments (Chromium issue
        347904).

        Removed bogus ASSERT (Chromium issue 347542).

        Mark HCompareMap as having Tagged representation (Chromium issue
        346636).

        Fix crasher in Object.getOwnPropertySymbols (Chromium issue 346141).

        Fix the bit massaging code in CompleteParserRecorder::WriteNumber
        (Chromium issue 346221).

        Don't eliminate loads with incompatible types or representations
        (Chromium issue 346343).

        Check that after a weak callback, the handle is either dead or strong
        (Chromium issue 346061).

        Lazy preparsing vs. lazy parsing fix (Chromium issue 346207).

        Performance and stability improvements on all platforms.


2014-02-25: Version 3.25.2

        Fix the bit massaging code in CompleteParserRecorder::WriteNumber
        (Chromium issue 346221).

        Revert r19455 "Load target types and handlers before IC computation."
        (Chromium issue 346149).

        Don't eliminate loads with incompatible types or representations
        (Chromium issue 346343).

        Fix for a smi stores optimization on x64 with a regression test
        (Chromium issue 345715).

        Check that after a weak callback, the handle is either dead or strong
        (Chromium issue 346061).

        negative bounds checking on realm calls (Chromium issue 344285).

        Lazy preparsing vs. lazy parsing fix (Chromium issue 346207).

        Fix optimistic BCE to back off after deopt (issue 3176).

        Performance and stability improvements on all platforms.


2014-02-21: Version 3.25.1

        Performance and stability improvements on all platforms.


2014-02-19: Version 3.25.0

        ES6: Tighten up Object.prototype.__proto__ (issue 3064).

        Fix Hydrogen bounds check elimination (Chromium issue 344186).

        Performance and stability improvements on all platforms.


2014-02-19: Version 3.24.40

        A64: Let the MacroAssembler resolve branches to distant targets (issue
        3148).

        Fixed and improved code for integral division. Fixed and extended tests
        (issue 3151).

        MIPS: Fix assignment of function name constant (issue 3138).

        Fix assignment of function name constant (issue 3138).

        Performance and stability improvements on all platforms.


2014-02-14: Version 3.24.39

        Introduce --job-based-sweeping flag and use individual jobs for sweeping
        if set (issue 3104).

        Performance and stability improvements on all platforms.


2014-02-13: Version 3.24.38

        Merge experimental/a64 to bleeding_edge (issue 3113).

        Performance and stability improvements on all platforms.


2014-02-12: Version 3.24.37

        Fix spec violations in JSON.stringify wrt replacer array (issue 3135).

        Performance and stability improvements on all platforms.


2014-02-11: Version 3.24.36

        Fix inconsistencies wrt whitespaces (issue 3109).

        Performance and stability improvements on all platforms.


2014-02-10: Version 3.24.35

        Fix inconsistencies wrt whitespaces (issue 3109).

        Performance and stability improvements on all platforms.


2014-02-07: Version 3.24.34

        Performance and stability improvements on all platforms.


2014-02-06: Version 3.24.33

        Allow externalizing strings in old pointer space (Chromium issue
        268686).

        Performance and stability improvements on all platforms.


2014-02-05: Version 3.24.32

        Add Box object to heap profiler.

        Check the offset argument of TypedArray.set for fitting into Smi
        (Chromium issue 340125).

        Performance and stability improvements on all platforms.


2014-02-04: Version 3.24.31

        Fix short-circuiting logical and/or in HOptimizedGraphBuilder (Chromium
        issue 336148).

        Elements field of newly allocated JSArray could be left uninitialized in
        some cases (fast literal case) (Chromium issue 340124).

        Re-enable escape analysis.

        Performance and stability improvements on all platforms.


2014-02-03: Version 3.24.30

        Performance and stability improvements on all platforms.


2014-02-01: Version 3.24.29

        Performance and stability improvements on all platforms.


2014-01-31: Version 3.24.28

        Don't crash in Array.join() if the resulting string exceeds the max
        string length (Chromium issue 336820).

        Implements ES6 String.prototype.normalize method (issue 2943).

        Performance and stability improvements on all platforms.


2014-01-30: Version 3.24.27

        Performance and stability improvements on all platforms.


2014-01-29: Version 3.24.26

        ES6: Map and Set needs to normalize minus zero (issue 3069).

        Make `String.prototype.{starts,ends}With` throw when passing a regular
        expression (issue 3070).

        Performance and stability improvements on all platforms.


2014-01-28: Version 3.24.25

        Performance and stability improvements on all platforms.


2014-01-27: Version 3.24.24

        MIPS: Reduce the stack requirements of GetNoCodeAgeSequence (issue
        3111).

        Delete v8_shell target now that chrome uses d8 (Chromium issue 331585).

        ARM: Reduce the stack requirements of GetNoCodeAgeSequence (issue 3111).

        Performance and stability improvements on all platforms.


2014-01-24: Version 3.24.23

        Performance and stability improvements on all platforms.


2014-01-23: Version 3.24.22

        Fix compilation on x64 architectures (issue 3110).

        Ensure we don't overwrite transitions in SetPropertyIgnoreAttributes
        (Chromium issue 326155).

        ES6: Implement Object.setPrototypeOf (issue 2675).

        Fixed floor-of-div optimization (Chromium issue 334708).

        Performance and stability improvements on all platforms.


2014-01-22: Version 3.24.21

        Performance and stability improvements on all platforms.


2014-01-21: Version 3.24.20

        ES6: Implement Object.setPrototypeOf (issue 2675).

        Performance and stability improvements on all platforms.


2014-01-20: Version 3.24.19

        Introduce a setting to control the toolset for which d8 is compiled
        (issue 1775).

        Performance and stability improvements on all platforms.


2014-01-17: Version 3.24.18

        Performance and stability improvements on all platforms.


2014-01-16: Version 3.24.17

        Make cells pointing to JSObjects weak in optimized code (issue 2073).

        Performance and stability improvements on all platforms.


2014-01-15: Version 3.24.16

        Annotate mapped memory regions for LeakSanitizer (Chromium issue
        328552).

        Turn Runtime_MigrateInstance into Runtime_TryMigrateInstance (Chromium
        issue 315252).

        Performance and stability improvements on all platforms.


2014-01-14: Version 3.24.15

        Introduce an API mirroring the gc extension.

        Performance and stability improvements on all platforms.


2014-01-10: Version 3.24.14

        ES6: Add Object.getOwnPropertySymbols (issue 3049).

        Performance and stability improvements on all platforms.


2014-01-09: Version 3.24.13

        Add Isolate parameter to HandleScope::NumberOfHandles (Chromium issue
        324225).

        Removed v8::AssertNoGCScope.

        Performance and stability improvements on all platforms.


2014-01-08: Version 3.24.12

        Correctly handle instances without elements in polymorphic keyed
        load/store (Chromium issue 331416).

        Fix selection of popular pages in store buffer (Chromium issue 331444).

        Prepare removal of ObjectTemplate::New without Isolate parameter
        (Chromium issue 324225).

        Performance and stability improvements on all platforms.


2014-01-07: Version 3.24.11

        Remove generated makefiles on linux when running gyp_v8
        (Chromium issue 331475)

        Fix building d8 with readline support due to API changes

        Performance and stability improvements on all platforms.


2014-01-03: Version 3.24.10

        Reland r18383: More API cleanup (Chromium issue 324225).

        MIPS: Fix loading of global object in LWrapReceiver (Chromium issue
        318420).

        Performance and stability improvements on all platforms.


2014-01-02: Version 3.24.9

        Performance and stability improvements on all platforms.


2013-12-30: Version 3.24.8

        ARM: fix loading of global object in LWrapReceiver (Chromium issue
        318420).

        Fix a race between concurrent recompilation and OSR (Chromium issue
        330046).

        Turn off concurrent sweeping (issue 3071).

        Performance and stability improvements on all platforms.


2013-12-23: Version 3.24.7

        Fix small spec violation in String.prototype.split (issue 3026).

        Correctly resolve forcibly context allocated parameters in debug-
        evaluate (Chromium issue 325676).

        Introduce Function::GetBoundFunction. 

        Performance and stability improvements on all platforms.


2013-12-20: Version 3.24.6

        Performance and stability improvements on all platforms.


2013-12-19: Version 3.24.5

        Performance and stability improvements on all platforms.


2013-12-18: Version 3.24.4

        Removed all stuff marked as V8_DEPRECATED.

        Performance and stability improvements on all platforms.


2013-12-17: Version 3.24.3

        Performance and stability improvements on all platforms.


2013-12-17: Version 3.24.2

        Flush instruction cache for deserialized code objects.

        Performance and stability improvements on all platforms.


2013-12-13: Version 3.24.1

        Fix polymorphic inlined calls with migrating prototypes.

        Fixed global object leak caused by overwriting the global receiver (the
        global proxy) in the global object with the global object itself
        (Chromium issue 324812).

        Initialize Date parse cache with SMI instead of double to workaround
        sharing mutable heap numbers in snapshot (Chromium issue 280531).

        Switch armv7 setting to arm_version==7 in v8 gyp files (Chromium issue
        234135).

        Performance and stability improvements on all platforms.


2013-12-09: Version 3.24.0

        Performance and stability improvements on all platforms.


2013-12-04: Version 3.23.18

        Performance and stability improvements on all platforms.


2013-12-03: Version 3.23.17

        Performance and stability improvements on all platforms.


2013-12-02: Version 3.23.16

        Array builtins need to be prevented from changing frozen objects, and
        changing structure on sealed objects (Chromium issue 299979).

        Performance and stability improvements on all platforms.


2013-11-29: Version 3.23.15

        Fix context register allocation in LTransitionElementsKind
        (Chromium issue 324306).

        Fix bug in inlining Function.apply (Chromium issue 323942).

        Ensure that length is Smi in TypedArrayFromArrayLike constructor
        (Chromium issue 324028).

        Performance and stability improvements on all platforms.


2013-11-28: Version 3.23.14

        Shorten autogenerated error message (issue 3019).

        Performance and stability improvements on all platforms.


2013-11-27: Version 3.23.13

        Increase precision for base conversion for large integers (issue 3025).

        Flatten cons string for single character substrings (Chromium issue
        323041).

        Performance and stability improvements on all platforms.


2013-11-26: Version 3.23.12

        Performance and stability improvements on all platforms.


2013-11-25: Version 3.23.11

        Deprecate old versions of Isolate::SetData and GetData.

        Performance and stability improvements on all platforms.


2013-11-22: Version 3.23.10

        Remove preemption thread and API.
        (issue 3004)

        Performance and stability improvements on all platforms.


2013-11-21: Version 3.23.9

        API: Change AdjustAmountOfExternalAllocatedMemory calls to use int64_t
        instead of intptr_t.

        Remove deprecated v8::SetResourceConstraints without Isolate parameter.

        Remove deprecated v8-defaults.h and defaults.cc.
        (Chromium issue 312241)

        Make it possible to add more than one piece of embedder data to
        isolates.
        (Chromium issue 317398)

        Performance and stability improvements on all platforms.


2013-11-20: Version 3.23.8

        Fixed crashes exposed though fuzzing.
        (Chromium issue 320948)

        Deprecated v8::External::New without Isolate parameter.

        Made number of available threads isolate-dependent and exposed it to
        ResourceConstraints.
        (issue 2991)

        Performance and stability improvements on all platforms.


2013-11-19: Version 3.23.7

        Bugfix: dependent code field in AllocationSite was keeping code objects
        alive even after context death.
        (Chromium issue 320532)

        Fixed data view accessors to throw execptions on offsets bigger than
        size_t.
        (issue 3013)

        Performance and stability improvements on all platforms.


2013-11-18: Version 3.23.6

        Limit size of dehoistable array indices.
        (Chromium issues 319835, 319860)

        Limit the size for typed arrays to MaxSmi.
        (Chromium issue 319722)

        Performance and stability improvements on all platforms.


2013-11-15: Version 3.23.5

        Fixed missing type feedback check for Generic*String addition.
        (Chromium issue 318671)

        Fixed duplicate check in DependentCode::Insert.
        (Chromium issue 318454)

        Performance and stability improvements on all platforms.


2013-11-14: Version 3.23.4

        Fixed overflow in TypedArray initialization function.
        (Chromium issue 319120)

        Performance and stability improvements on all platforms.


2013-11-13: Version 3.23.3

        Fixed compilation with GCC 4.8.
        (issue 2767, 2149)

        Added explicit Isolate parameter to External::New.
        (Chromium issue 266838)

        Performance and stability improvements on all platforms.


2013-11-12: Version 3.23.2

        Fixed --extra-code flag for snapshot creation.
        (issue 2994)

        Fixed error message wording when instanceof throws.
        (Chromium issue 82797, issue 1593)

        Performance and stability improvements on all platforms.


2013-11-08: Version 3.23.1

        Made HCapturedObjects non-deletable for DCE. (issue 2987)

        Use a fixed random seed per default. (issue 1880, 2885)

        Fixed y-umlaut to uppercase. (issue 2984)

        Performance and stability improvements on all platforms.


2013-11-06: Version 3.23.0

        Fixed loading message from an Error object.  (Chromium issue 306220)

        Made Object.freeze/seal/preventExtensions observable. (issue 2975, 2941)

        Made snapshots reproducible. (issue 2885)

        Added missing negative dictionary lookup to NonexistentHandlerFrontend.
        (issue 2980)

        Performance and stability improvements on all platforms.


2013-10-31: Version 3.22.24

        Fixed uint32-to-smi conversion in Lithium.
        (Chromium issue 309623)

        Performance and stability improvements on all platforms.


2013-10-28: Version 3.22.23

        Renamed deprecated __attribute__((no_address_safety_analysis)) to
        __attribute__((no_sanitize_address)) (Chromium issue 311283)

        Defined DEBUG for v8_optimized_debug=2

        Performance and stability improvements on all platforms.


2013-10-25: Version 3.22.22

        Record allocation stack traces. (Chromium issue 277984,v8:2949)

        Performance and stability improvements on all platforms.


2013-10-24: Version 3.22.21

        Performance and stability improvements on all platforms.


2013-10-24: Version 3.22.20

        Made Array.prototype.pop throw if the last element is not configurable.

        Fixed HObjectAccess for loads from migrating prototypes.
        (Chromium issue 305309)

        Enabled preaging of code objects when --optimize-for-size.
        (Chromium issue 280984)

        Exposed v8::Function::GetDisplayName to public API.
        (Chromium issue 17356)

        Performance and stability improvements on all platforms.


2013-10-23: Version 3.22.19

        Fix materialization of captured objects with field tracking.
        (Chromium issue 298990)

        Performance and stability improvements on all platforms.


2013-10-22: Version 3.22.18

        Add tool to visualize machine code/lithium.

        Handle misaligned loads and stores in load elimination. Do not track
        misaligned loads and be conservative about invalidating misaligned
        stores. (issue 2934)

        Performance and stability improvements on all platforms.


2013-10-21: Version 3.22.17

        Harmony: Implement Math.trunc and Math.sign. (issue 2938)

        Performance and stability improvements on all platforms.


2013-10-21: Version 3.22.16

        Performance and stability improvements on all platforms.


2013-10-18: Version 3.22.15

        Enabled calling the SetReference* & SetObjectGroupId functions with a
        Persistent<SubclassOfValue>.

        Performance and stability improvements on all platforms.


2013-10-17: Version 3.22.14

        Performance and stability improvements on all platforms.


2013-10-16: Version 3.22.13

        Do not look up ArrayBuffer on global object in typed array constructor.
        (issue 2931)

        Performance and stability improvements on all platforms.


2013-10-15: Version 3.22.12

        Added histograms to track fraction of heap spaces and percentage of
        generated crankshaft code.

        Moved v8_optimized_debug default value to standalone.gypi.

        Track JS allocations as they arrive with no affection on performance
        when tracking is switched off (Chromium issue 277984).

        Performance and stability improvements on all platforms.


2013-10-14: Version 3.22.11

        Performance and stability improvements on all platforms.


2013-10-11: Version 3.22.10

        Fixed timezone issues with date-time/parse-* tests.
        (Chromium issue 2919)

        Added column getter to CpuProfileNode (Chromium issue 302537)

        Performance and stability improvements on all platforms.


2013-10-10: Version 3.22.9

        Ensure only whitelisted stubs have sse2 versions in the snapshot.
        (fix for chromium 304565)

        Implement ArrayBuffer.isView.

        Performance and stability improvements on all platforms.


2013-10-04: Version 3.22.8

        Performance and stability improvements on all platforms.


2013-10-03: Version 3.22.7

        Debug: Allow stepping into on a given call frame
        (Chromium issue 296963).

        Always use timeGetTime() for TimeTicks::Now() on Windows
        (Chromium issue 288924).

        Performance and stability improvements on all platforms.


2013-10-02: Version 3.22.6

        Performance and stability improvements on all platforms.


2013-10-01: Version 3.22.5

        Disabled externalization of sliced/cons strings in old pointer space
        (Chromium issue 276357).

        Turned on handle zapping for release builds

        Performance and stability improvements on all platforms.


2013-09-30: Version 3.22.4

        Function::Call and Object::CallAsFunction APIs should allow v8::Value as
        a receiver (issue 2915).

        Removed unnecessary mutex (Chromium issue 291236).

        Removed ArrayBufferView::BaseAddress method.

        Performance and stability improvements on all platforms.


2013-09-27: Version 3.22.3

        Added methods to enable configuration of ResourceConstraints based on
        limits derived at runtime.
        (Chromium issue 292928)

        Added -optimize-for-size flag to optimize for memory size (will be used
        by pre-aging CL), and removed the is_memory_constrained
        ResourceConstraint.
        (Chromium issue 292928)

        Performance and stability improvements on all platforms.


2013-09-26: Version 3.22.2

        Performance and stability improvements on all platforms.


2013-09-25: Version 3.22.1

        Sped up creating typed arrays from array-like objects.
        (Chromium issue 270507)

        Performance and stability improvements on all platforms.


2013-09-23: Version 3.22.0

        LiveEdit to mark more closure functions for re-instantiation when scope
        layout changes.
        (issue 2872)

        Made bounds check elimination iterative instead of recursive.
        (Chromium issue 289706)

        Turned on i18n support by default.

        Set the proper instance-type on HAllocate in BuildFastLiteral.
        (Chromium issue 284577)

        Performance and stability improvements on all platforms.


2013-09-18: Version 3.21.17

        Implemented local load/store elimination on basic blocks.

        Added mutex when accessing concurrent recompilation output queue.
        (Chromium issue 291236)

        Don't lookup the cache for the result of Function::New.
        (Chromium issue 272579)

        Tweaked HConstant::EmitAtUses() to eliminate useless constant
        generation.
        (Chromium issue 2881)

        Performance and stability improvements on all platforms.


2013-09-16: Version 3.21.16

        Every place where AllocationMemento is initialized with an
        AllocationSite is now checked to be sure a valid Site goes in. This is
        temporary code to diagnose chromium bug 284577.

        Performance and stability improvements on all platforms.


2013-09-13: Version 3.21.15

        Non-JSObject heap objects are now handled using slow-path IC stub
        guarded by the map.
        (Chromium issue 280632)

        i18n Javascript code added to the snapshot.
        (V8 issue 2745)

        Performance and stability improvements on all platforms.

2013-09-12: Version 3.21.14

        Added access check for observed objects.
        (V8 issue 2778)

        Cleaned up v8::ArrayBuffer::Allocator interface.
        (V8 issue 2823)

        Performance and stability improvements on all platforms.

2013-09-11: Version 3.21.13

        Added a ResourceConstraint for the embedder to specify that V8 is
        running on a memory constrained device.
        (Chromium issue 280984)

        Removed HandleScope default ctor.
        (Chromium issue 236173)

        Enabled escape analysis for Hydrogen.

        Correctly stringified mixed encoding indirect strings.
        (Chromium issue 287476)

        Performance and stability improvements on all platforms.


2013-09-09: Version 3.21.12

        Fixed bitwise negation on x64.
        (Chromium issue 285355)

        Dropped GetCurrentThreadId() and TerminateExecution(int) from 
	the external API.

        Fixed polymorphic INTERCEPTOR StoreICs on ARM/MIPS.
        (Chromium issue 284998)

        Added check if timeout has expired after processing each sample.
        (issue 2814,v8:2871)

        Removed obsolete global V8::has_been_fooed flags.
        (issue 2744)

        Performance and stability improvements on all platforms.


2013-09-05: Version 3.21.11

        Performance and stability improvements on all platforms.


2013-09-04: Version 3.21.10

        Fixed Eternal::IsEmpty logic (issue 2870).

        Performance and stability improvements on all platforms.


2013-09-03: Version 3.21.9

        Deprecated Persistent functions which were marked to be deprecated.

        Allowed uncacheable identifiers to go generic (issue 2867).

        Performance and stability improvements on all platforms.


2013-09-02: Version 3.21.8

        Added scriptId to StackTrace frames (issue 2865).

        Performance and stability improvements on all platforms.


2013-08-30: Version 3.21.7

        Fixed casts of eternal handles.

        Turned on global handle zapping.

        Always visit branches during HGraph building (Chromium issue 280333).

        Profiler changes: removed deprecated API, support higher sampling
        rate on Windows.

        Performance and stability improvements on all platforms.


2013-08-29: Version 3.21.6

        Fixed inlined 'throw' statements interfering with live range
        computation. (issue 2843)

        Performance and stability improvements on all platforms.


2013-08-28: Version 3.21.5

        Fixed compilation with recent MinGW64 versions. (issue 2300)

        Added RemovePrototype to FunctionTemplate. (Chromium issue 272440)

        Performance and stability improvements on all platforms.


2013-08-26: Version 3.21.4

        Lowered kInitialMaxFastElementArray constant to 95K (issue 2790).

        Use signals for cpu profiling on Mac OS X (issue 2814).

        Deprecated CpuProfileNode::GetSelfSamplesCount (Chromium issue 267595).

        Added support for higher CPU profiler sampling rate on posix systems
        (issue 2814).

        Worked around 'inlining failed' build error with older GCC 4.x releases.

        Added source map support to tick processor.

        Stability improvements on all platforms.


2013-08-23: Version 3.21.3

        Temporarily disabled optimization for StringWrappers to use native
        valueOf. (issue 2855)

        Fixed crash on function declarations in eval inside non-trivial local
        scope. (issue 2594)

        Rewrote SamplingCircularQueue. (issue 2814)

        Fixed hidden properties on object with frozen prototype. (issue 2829)

        Fix deoptimization bug. (Chromium issue 274164)

        Stability improvements on all platforms.


2013-08-22: Version 3.21.2

        Stability improvements on all platforms.


2013-08-21: Version 3.21.1

        Promoted ArrayBuffer, DataView and typed arrays to non-experimental.
        (Chromium issue 270527)

        Replaced OS::MemCopy with memcpy in typed array initialization.
        (Chromium issue 270642)

        Moved i18n break iterator C++ code to runtime (issue 2745)

        Fixed invalid out-of-bounds store in MacroAssembler::Allocate.
        (Chromium issue 263515)

        Fixed register misuse in Allocate() on ARM. (issue 2851)

        Fixed empty handle dereference in Runtime_InternalNumberFormat.
        (Chromium issue 275467)

        Performance and stability improvements on all platforms.


2013-08-19: Version 3.21.0

        Fixed GC-related crasher (Chromium issue 274438)

        Reverted making Intl non-enumerable.

        Performance and stability improvements on all platforms.


2013-08-14: Version 3.20.17

        Fixed Math.round/floor that had bogus Smi representation
        (Chromium issue 272564)

        Performance and stability improvements on all platforms.


2013-08-13: Version 3.20.16

        Fixed bug in HPhi::SimplifyConstantInput (Chromium issue 269679)

        Fixed gcmole bugs in i18n code (issue 2745)

        ia32: Calls to the TranscendentalCacheStub must ensure that esi is
        set (issue 2827)

        Made sure polymorphic element access creates non-replaying
        phis. (issue 2815)

        Allowed HPhis to have an invalid merge index. (issue 2815)

        Fixed smi-based math floor. (Chromium issue 270268)

        Deprecated self and total time getters and total sample count
        getter on CpuProfileNode. (Chromium issue 267595)

        Fixed Object.freeze, Object.observe wrt CountOperation and
        CompoundAssignment. (issue 2774,2779)

        Performance and stability improvements on all platforms.


2013-08-07: Version 3.20.15

        Exposed eternal handle api.

        Bugfix to solve issues with enabling V8 typed arrays in Blink.

        Fixed Array index dehoisting.  (Chromium issue 264203)

        Updated Array Iterator to use numeric indexes (issue 2818)

        Return start/end profiling time in microseconds instead of milliseconds
        (issue 2824)

        Performance and stability improvements on all platforms.


2013-08-06: Version 3.20.14

        Added new Harmony methods to Array.prototype object.
        (issue 2776,v8:2777)

        Performance and stability improvements on all platforms.


2013-08-01: Version 3.20.12

        Removed buggy ToNumber truncation (partial fix for issue 2813)

        Calling Map etc without new should throw TypeError (issue 2819)

        Fixed a crash for large code objects on ARM (Chromium issue 2736)

        Fixed stale unhandlified value in JSObject::SetPropertyForResult.
        (Chromium issue 265894)

        Added new Harmony methods to String.prototype object.
        (issue 2796,v8:2797,v8:2798,v8:2799)

        Performance and stability improvements on all platforms.


2013-07-30: Version 3.20.11

        Performance and stability improvements on all platforms.


2013-07-29: Version 3.20.10

        Performance and stability improvements on all platforms.


2013-07-26: Version 3.20.9

        Check that ExternalString objects get aligned resources.

        Fixed JSArray-specific length lookup in polymorphic array handling
        (Chromium issues 263276, 263905).

        Performance and stability improvements on all platforms.


2013-07-24: Version 3.20.8

        Deprecated v8::V8::Pause/ResumeProfiler.

        Fixed Chromium issues 247688, 258519 and 260203.

        Performance and stability improvements on all platforms.


2013-07-22: Version 3.20.7

        Deprecated some debugger methods.

        Fixed wrong bailout id in polymorphic stores (Chromium issue 259787).

        Fixed data race in SamplingCircularQueue (Chromium issue 251218).

        Fixed type feedback in presence of negative lookups
        (Chromium issue 252797).

        Do not materialize context-allocated values for debug-evaluate
        (Chromium issue 259300).

        Synchronized Compare-Literal behavior in FullCodegen and Hydrogen
        (Chromium issue 260345).

        Performance and stability improvements on all platforms.


2013-07-17: Version 3.20.6

        Try to remove invalidated stubs before falling back to checking the
        constant state (Chromium issue 260585).

        Fixed gyp_v8 to work with use_system_icu=1 (issue 2475).

        Fixed sloppy-mode 'const' under Harmony flag (Chromium issue 173361).

        Use internal array as API function cache  (Chromium issue 260106).

        Fixed possible stack overflow in range analysis
        (Chromium issue 259452).

        Performance and stability improvements on all platforms.


2013-07-15: Version 3.20.5

        Ensured that the length of frozen arrays is immutable
        (issue 2711, Chromium issue 259548).

        Performance and stability improvements on all platforms.


2013-07-10: Version 3.20.4

        Fixed garbage-collection issue that causes a crash on ARM
        (Chromium issue 254570)

        Performance and stability improvements on all platforms.


2013-07-08: Version 3.20.3

        Performance and stability improvements on all platforms.


2013-07-05: Version 3.20.2

        Remove deprecated heap profiler methods from V8 public API

        Mark i18n functions as native and set proper names
        (issue 2745)

        Correctly report stack trace when current function is FunctionApply
        builtin (Chromium issue 252097)

        Enable GDBJIT interface for standalone by default.

        Fix debuggersupport=off build. (issue 2754)

        Introduce -m64 flag for making x64 when the default gcc compiler is for
        X32

        Performance and stability improvements on all platforms.


2013-07-02: Version 3.20.1

        Implemented WeakMap.prototype.clear function. (issue 2753)

        Ensure CheckInitialized is present independent of define.
        (Chromium issue 255779)

        Performance and stability improvements on all platforms.


2013-06-28: Version 3.20.0

        Migrated several tests from blink to V8 repository.

        Allowed users of the V8 API to distinguish between unset and undefined
        HiddenValues (issue 2746).

        Deprecated old style callbacks in the V8 API.

        Turned on parallel recompilation.

        Performance and stability improvements on all platforms.


2013-06-18: Version 3.19.18

	Fixed read-only attribute of Function.length in strict mode.
	(issue 2705)

	Fixed Runtime_SetProperty to properly handle OOM failures
	(Chromium issue 249873)

	Emit deprecated check for constant function transitions.
	(Chromium issue 250609)
	
	Made MathFloorOfDiv optimization trigger more often
	(Issue 2205)

	Make more GCs in idle notification handler.
	(Chromium issue 241815)

	Increased default type info threshold.
	(Issue 2730)

        Performance and stability improvements on all platforms.


2013-06-14: Version 3.19.16

        Performance and stability improvements on all platforms.


2013-06-13: Version 3.19.15

        Performance and stability improvements on all platforms.


2013-06-13: Version 3.19.14

        Fixed crashes when calling new Array(a) with a single argument that
        could result in creating a holey array with a packed elements kind.
        (Chromium issue 245480)

        Fixed issues in parallel compilation.
        (Chromium issue 248076)

        Performance and stability improvements on all platforms.


2013-06-11: Version 3.19.13

        Performance and stability improvements on all platforms.


2013-06-10: Version 3.19.12

        Fixed arguments array access. (Chromium issue 247303)

        Fixed bug in LookupForWrite. (Chromium issue 242332)

        Performance and stability improvements on all platforms.


2013-06-07: Version 3.19.11

        Performance and stability improvements on all platforms.


2013-06-06: Version 3.19.10

        Performance and stability improvements on all platforms.


2013-06-05: Version 3.19.9

        Implemented Load IC support for loading properties from primitive
        values to avoid perpetual soft deopts.  (Chromium issue 242512)

        Implemented Freeing of PerThreadAssertData when possible to avoid
        memory leak. (Chromium issue 246567)

        Removed V8_USE_OLD_STYLE_PERSISTENT_HANDLE_VISITORS.

        Performance and stability improvements on all platforms.


2013-06-03: Version 3.19.8

        Fixed bug with inlining 'Array' function. (Chromium issue 244461)

        Fixed initialization of literal objects. (Chromium issue 245424)

        Fixed function name inferred inside closures. (Chromium issue 224884)

        Performance and stability improvements on all platforms.


2013-05-31: Version 3.19.7

        Added support for //# sourceURL similar to deprecated //@ sourceURL one.
        (issue 2702)

        Made sure IfBuilder::Return clears the current block.
        (Chromium issue 243868)

        Fixed two CPU profiler tests on ARM and MIPS simulators
        (issue 2628)

        Fixed idle incremental GC for large objects.
        (Chromium issue 241815)

        Disabled --optimize-constructed-arrays due to crashes
        (Chromium issue 244461)

        Performance and stability improvements on all platforms.


2013-05-28: Version 3.19.6

        Fixed IfBuilder::Deopt to clear the current block
        (Chromium issue 243868).

        Performance and stability improvements on all platforms.


2013-05-27: Version 3.19.5

        Reset regexp parser flag after scanning ahead for capture groups.
        (issue 2690)

        Removed flakiness in test-cpu-profiler/SampleWhenFrameIsNotSetup.
        (issue 2628)

        Performance and stability improvements on all platforms.


2013-05-24: Version 3.19.4

        Fixed edge case in stack trace formatting. (Chromium issue 237617)

        Fixed embedded new-space pointer in LCmpObjectEqAndBranch. (Chromium
	issue 240032)

        Made Object.freeze fast (issue 1858, Chromium issue 115960)

        Fixed bogus deopt in BuildEmitDeepCopy for holey arrays. (Chromium issue
        242924)

        Performance and stability improvements on all platforms.


2013-05-22: Version 3.19.3

        Performance and stability improvements on all platforms.


2013-05-17: Version 3.19.2

        Fill in one-word-fillers for the unused property fields
        (Chromium issue 240056).

        Removed use_system_v8 logic from the mainline gyp file
        (Chromium issue 226860).

        Skip CPU profiler samples where top function's stack frame is not
        set up properly (issue 2628).

        Performance and stability improvements on all platforms.


2013-05-14: Version 3.19.1

        Fixed missing hole check for loads from Smi arrays when all uses are
        changes (Chromium issue 233737)

        Performance and stability improvements on all platforms.


2013-05-10: Version 3.19.0

        Deprecated Context::New which returns Persistent.

        Added Persistent<T>::Reset which disposes the handle and redirects it to
        point to another object.

        Deprecated WriteAscii and MayContainNonAscii.

        Exposed AssertNoAllocation to API.

        Performance and stability improvements on all platforms.


2013-04-30: Version 3.18.5

        Allowed setting debugger breakpoints on CompareNilICs (issue 2660)

        Fixed beyond-heap load on x64 Crankshafted StringCharFromCode
        (Chromium issue 235311)

        Change 'Parse error' to three more informative messages.
        (Chromium issue 2636)

        Performance and stability improvements on all platforms.


2013-04-26: Version 3.18.4

        Added a preliminary API for ES6 ArrayBuffers

        Replaced qsort with std::sort. (Chromium issue 2639)

        Performance and stability improvements on all platforms.


2013-04-24: Version 3.18.3

        Exposed the GC under a name that is less collision prone than window.gc.
        (issue 2641)

        Do not emit double values at their use sites. (Chromium issue 234101)

        Added methods to allow resuming execution after calling
        TerminateExecution(). (issue 2361)

        Performance and stability improvements on all platforms.


2013-04-22: Version 3.18.2

        OS::MemMove/OS::MemCopy: Don't call through to generated code when size
        == 0 to avoid prefetching invalid memory (Chromium issue 233500)

        Removed heap snapshot size limit. (Chromium issue 232305)

        Performance and stability improvements on all platforms.


2013-04-18: Version 3.18.1

        Removed SCons related files and deprecated test suite configurations.

        Improved handling of unary plus (issue 2527).

        Performance and stability improvements on all platforms.


2013-04-17: Version 3.18.0

        Enabled pretenuring of fast literals in high promotion mode.

        Removed preparser library; link preparser executable against full V8.

        Fixed set-up of intrinsic's 'constructor' properties.
        (Chromium issue 229445)

        ES6 symbols: extended V8 API to support symbols (issue 2158).

        Removed ARM support for VFP2.

        Made __proto__ a real JavaScript accessor property.
        (issue 1949 and issue 2606)

        Performance and stability improvements on all platforms.


2013-04-04: Version 3.17.16

        Stack trace API: poison stack frames below the first strict mode frame.
        (issue 2564)

        Made Isolate::GetHeapStatistics robust against half-initialized
        isolates (Chromium issue 2591).

        Finished implementation of ES6 symbols aka. private names (issue 2158).

        Performance and stability improvements on all platforms.


2013-03-21: Version 3.17.15

        Rolled back API changes to maintain compatibility with older
        3.17.x versions of V8.

        Disable zapping of global handles in release mode.

        Always mark the entire valid prefix of the descriptor array.
        (Chromium issue 196331)

        Use internal memcpy for CopyWords and when copying code.
        (Chromium issue 196330)

        Performance and stability improvements on all platforms.


2013-03-20: Version 3.17.14

        Use internal memcpy when initializing code objects.
        (Chromium issue 196330)

        Disabled weak embedded maps because of crashes.
        (Chromium issues 172489, 217858)

        Performance and stability improvements on all platforms.


2013-03-19: Version 3.17.13

        Turned Flags into a uint32_t typedef (Chromium issue 194749).

        Performance and stability improvements on all platforms.


2013-03-18: Version 3.17.12

        Unified kMaxArguments with number of bits used to encode it.
        (Chromium issue 211741)

        Fixed detection of |handle_smi| case in
        HOptimizedGraphBuilder::HandlePolymorphicCallNamed.
        (Chromium issue 196583)

        Performance and stability improvements on all platforms.


2013-03-15: Version 3.17.11

        Added a version of the v8::HandleScope constructor with an v8::Isolate
        parameter and made AdjustAmountOfExternalAllocatedMemory an instance
        method of v8::Isolate.
        (issue 2487)

        Fixed two register allocator bugs (off-by-one error/failure
        propagation). (issue 2576)

        Fixed huge heap snapshot when a heavily shared context has many
        variables. (Chromium issue 145687)

        Performance and stability improvements on all platforms.


2013-03-13: Version 3.17.10

        Fixed heap snapshot creation for Harmony collections. (issue 2535)

        Fixed register allocation corner case. (Chromium issue 177883)

        Performance and stability improvements on all platforms.


2013-03-08: Version 3.17.9

        Restored Function()'s expected string representation. (issue 2470)

        Enabled deprecatations (again). (issue 2487)

        Avoid bool to Oddball conversions by being lazy. (issue 2491)

        Added %p option to --logfile.

        Hardened Function()'s parsing of function literals. (issue 2470)

        ES6 symbols: Refine test for getOwnPropertyNames. (issue 2158)

        Performance and stability improvements on all platforms.


2013-03-07: Version 3.17.8

        Added missing license headers. (Chromium issue 98597)

        Inserted missing type cast in JSON.stringify. (issue 2570)

        Reverted "Send SIGPROF signals on the profiler event processor thread"
        (issue 2571)

        Fixed Array.length, String.length and Function.prototype LoadICs on x64.
        (issue 2568)

        ES6 symbols: filter symbols form for-in loops and Object.keys.
        (issue 2158)

        Properly handle misses for StoreArrayLengthStub on ia32 and x64
        (issue 2566)

        Fixed x32 handling of Atomic64. (Chromium issue chromium-os:36866)

        Removed "library" variable from standalone.gypi. (Chromium issue 111541)

        Fixed HCheckSmiOrInt <-> HBoundsCheck interaction wrt. representations.
        (issue 2556)

        Enabled zapping of disposed global handles in release mode.
        (Chromium issue 176056)

        Added workaround for redefinition of __proto__ property. (issue 2565)

        ES6 symbols: Allow symbols as property names. (issue 2158)

        Performance and stability improvements on all platforms.


2013-03-04: Version 3.17.7

        Limited recursion in regexp compilation by a budget.
        (Chromium issue 178790)

        ES6 symbols: Implemented Symbol intrinsic and basic functionality
        (issue 2158)

        Performance and stability improvements on all platforms.


2013-02-28: Version 3.17.6

        Fixed materialization of arguments objects with unknown values.
        (Chromium issue 163530)

        Set default number of sweeper threads to at most four.

        Performance and stability improvements on all platforms.


2013-02-27: Version 3.17.5

        Made __proto__ a foreign callback on Object.prototype.
        (issue 621, issue 1949 and issue 2441)

        Performance and stability improvements on all platforms.


2013-02-25: Version 3.17.4

        Performance and stability improvements on all platforms.


2013-02-21: Version 3.17.3

        Performance and stability improvements on all platforms.


2013-02-19: Version 3.17.2

        Removed bogus check for TOP register in deoptimizer.
        (Chromium issue 176943)

        Made the Isolate parameter mandatory for internal HandleScopes.
        (issue 2487)

        Fixed f.apply() optimization when declared arguments are mutated.
        (issue 2539)

        Performance and stability improvements on all platforms.


2013-02-14: Version 3.17.1

        Performance and stability improvements on all platforms.


2013-02-13: Version 3.17.0

        Enabled parallel sweeping.

        Don't try to unlink instructions twice during GVN
        (Chromium issue 175141)

        Fixed code flusher disabling while marking incrementally.
        (Chromium issue 173458, 168582)

        Don't use TLS for space iterators.
        (issue 2531)

        Added new GetHeapStatistics API entry and deprecated old one.

        Fixed DoubleStackSlot-to-DoubleStackSlot moves on ia32. Unified
        platform-independent code.
        (Chromium issue 173907)

        Added --trace-array-abuse to help find OOB accesses.

        Performance and stability improvements on all platforms.


2013-02-06: Version 3.16.14

        Performance and stability improvements on all platforms.


2013-02-04: Version 3.16.13

        Tagged stubs that rely on instance types as MEGAMORPHIC.
        (Chromium issue 173974)

        Fixed clearing of dead dependent codes and verifing of weak
        embedded maps on full GC. (Chromium issue 172488,172489)

        Made the arm port build cleanly with Clang.

        Performance and stability improvements on all platforms.


2013-01-31: Version 3.16.12

        Performance and stability improvements on all platforms.


2013-01-30: Version 3.16.11

        Put making embedded maps in optimized code weak behind a flag.
        (Chromium issue 172488,172489)

        Performance and stability improvements on all platforms.


2013-01-25: Version 3.16.10

        Avoid excessive memory usage during redundant phi elimination.
        (issue 2510)

        Fixed additional spec violations wrt RegExp.lastIndex.
        (issue 2437)

        Added Isolate parameter to Persistent class.
        (issue 2487)

        Performance and stability improvements on all platforms.


2013-01-24: Version 3.16.9

        Made embedded maps in optimized code weak.
        (issue 2073)

        Fixed corner case when JSFunction is evicted from flusher.
        (Chromium issue 168801)

        Correctly set kCanBeDivByZero flag for HMathFloorOfDiv.
        (Chromium issue 171641)

        Performance and stability improvements on all platforms.


2013-01-23: Version 3.16.8

        Correctly reset lastIndex in an RegExp object.
        (Chromium issue 170856)

        Added a workaround for Windows compilation problems related to V8EXPORT.
        (issue 2507)

        tools/run-tests.py: shlex.split() the value of --command-prefix
        (Chromium issue 171553)

        Fixed pattern detection for replacing shifts by rotation.
        (Chromium issue 2499)

        Performance and stability improvements on all platforms.


2013-01-21: Version 3.16.7

        Removed <(library) usage from v8.gyp.
        (Chromium issue 111541)

        Fixed out of bounds memory access in TestJSArrayForAllocationSiteInfo.
        (Chromium issue 169928)

        Performance and stability improvements on all platforms.


2013-01-18: Version 3.16.6

        Made the Isolate parameter mandatory in Locker and Unlocker classes.
        (issue 2487)

        Avoid pointer underflow in CopyCharsUnsigned.
        (issue 2493)

        Generate shim headers when using system v8.
        (Chromium issue 165264)

        Fixed arguments materialization for inlined apply().
        (issue 2489)

        Sync'ed laziness between BuildFunctionInfo and MakeFunctionInfo.
        (Chromium issue 147497)

        Added sanity check to CodeFlusher::AddCandidate.
        (Chromium issue 169209)

        Performance and stability improvements on all platforms.


2013-01-15: Version 3.16.5

        Removed deprecated functions from V8's external API.

        Prepared API for WebKit use of Latin-1.

        Fixed V8 issue 2486.

        Fixed Chromium issue 169723.

        Performance and stability improvements on all platforms.


2013-01-11: Version 3.16.4

        Fixed Chromium issues 168545 and 169209.

        Performance and stability improvements on all platforms.


2013-01-09: Version 3.16.3

        Improved GC performance when moving parts of a FixedArray (issue 2452).

        Enabled readline on d8 while building a shared lib (issue 1781).

        Fixed missing exception check in typed array constructor
        (Chromium issue 168545).

        Check for read-only-ness when preparing for array sort (issue 2419).

        Performance and stability improvements on all platforms.


2013-01-04: Version 3.16.2

        Added Makefile options to build for the Raspberry Pi (armv7=0,
        arm_fpu=vfp2).

        Performance and stability improvements on all platforms.


2012-12-27: Version 3.16.1

        Fixed x64 MathMinMax for negative untagged int32 arguments.
        (Chromium issue 164442)

        Fixed FloatingPointHelper::CheckSSE2OperandIsInt32.
        (issue 2458)

        Performance and stability improvements on all platforms.


2012-12-21: Version 3.16.0

        V8_Fatal now prints C++ stack trace in debug mode.

        Added HTML-based tick processor.

        Continued implementation of Object.observe (V8 issue 2409).

        Fixed V8 issues 2243, 2340, 2393, 2399, 2457.

        Fixed Chromium issues 125308, 165637, 166379, 166553.

        Performance and stability improvements on all platforms.


2012-12-10: Version 3.15.11

        Define CAN_USE_VFP2/3_INSTRUCTIONS based on arm_neon and arm_fpu GYP
        flags.

        Performance and stability improvements on all platforms.


2012-12-07: Version 3.15.10

        Enabled optimisation of functions inside eval. (issue 2315)

        Fixed spec violations in methods of Number.prototype. (issue 2443)

        Added GCTracer metrics for a scavenger GC for DOM wrappers.

        Performance and stability improvements on all platforms.


2012-12-06: Version 3.15.9

        Fixed candidate eviction in code flusher.
        (Chromium issue 159140)

        Iterate through all arguments for side effects in Math.min/max.
        (issue 2444)

        Fixed spec violations related to regexp.lastIndex
        (issue 2437, issue 2438)

        Performance and stability improvements on all platforms.


2012-12-04: Version 3.15.8

        Enforced stack allocation of TryCatch blocks.
        (issue 2166,chromium:152389)

        Fixed external exceptions in external try-catch handlers.
        (issue 2166)

        Activated incremental code flushing by default.

        Performance and stability improvements on all platforms.


2012-11-30: Version 3.15.7

        Activated code aging by default.

        Included more information in --prof log.

        Removed eager sweeping for lazy swept spaces. Try to find in
        SlowAllocateRaw a bounded number of times a big enough memory slot.
        (issue 2194)

        Performance and stability improvements on all platforms.


2012-11-26: Version 3.15.6

        Ensure double arrays are filled with holes when extended from
        variations of empty arrays. (Chromium issue 162085)

        Performance and stability improvements on all platforms.


2012-11-23: Version 3.15.5

        Fixed JSON.stringify for objects with interceptor handlers.
        (Chromium issue 161028)

        Fixed corner case in x64 compare stubs. (issue 2416)

        Performance and stability improvements on all platforms.


2012-11-16: Version 3.15.4

        Fixed Array.prototype.join evaluation order. (issue 2263)

        Perform CPU sampling by CPU sampling thread only iff processing thread
        is not running. (issue 2364)

        When using an Object as a set in Object.getOwnPropertyNames, null out
        the proto. (issue 2410)

        Disabled EXTRA_CHECKS in Release build.

        Heap explorer: Show representation of strings.

        Removed 'type' and 'arguments' properties from Error object.
        (issue 2397)

        Added atomics implementation for ThreadSanitizer v2.
        (Chromium issue 128314)

        Fixed LiveEdit crashes when object/array literal is added. (issue 2368)

        Performance and stability improvements on all platforms.


2012-11-13: Version 3.15.3

        Changed sample shell to send non-JS output (e.g. errors) to stderr
        instead of stdout.

        Correctly check for stack overflow even when interrupt is pending.
        (issue 214)

        Collect stack trace on stack overflow. (issue 2394)

        Performance and stability improvements on all platforms.


2012-11-12: Version 3.15.2

        Function::GetScriptOrigin supplies sourceURL when script name is
        not available.  (Chromium issue 159413)

        Made formatting error message side-effect-free.  (issue 2398)

        Fixed length check in JSON.stringify.  (Chromium issue 160010)

        ES6: Added support for Set and Map clear method (issue 2400)

        Fixed slack tracking when instance prototype changes.
        (Chromium issue 157019)

        Fixed disabling of code flusher while marking.  (Chromium issue 159140)

        Added a test case for object grouping in a scavenger GC (issue 2077)

        Support shared library build of Android for v8.
        (Chromium issue 158821)

        ES6: Added support for size to Set and Map (issue 2395)

        Performance and stability improvements on all platforms.


2012-11-06: Version 3.15.1

        Put incremental code flushing behind a flag. (Chromium issue 159140)

        Performance and stability improvements on all platforms.


2012-10-31: Version 3.15.0

        Loosened aligned code target requirement on ARM (issue 2380)

        Fixed JSON.parse to treat leading zeros correctly.
        (Chromium issue 158185)

        Performance and stability improvements on all platforms.


2012-10-22: Version 3.14.5

        Killed off the SCons based build.

        Added a faster API for creating v8::Integer objects.

        Speeded up function deoptimization by avoiding quadratic pass over
        optimized function list. (Chromium issue 155270)

        Always invoke the default Array.sort functions from builtin functions.
        (issue 2372)

        Reverted recent CPU profiler changes because they broke --prof.
        (issue 2364)

        Switched code flushing to use different JSFunction field.
        (issue 1609)

        Performance and stability improvements on all platforms.


2012-10-15: Version 3.14.4

        Allow evals for debugger even if they are prohibited in the debugee
        context. (Chromium issue 154733)

        Enabled --verify-heap in release mode (issue 2120)

        Performance and stability improvements on all platforms.


2012-10-11: Version 3.14.3

        Use native context to retrieve ErrorMessageForCodeGenerationFromStrings
        (Chromium issue 155076).

        Bumped variable limit further to 2^17 (Chromium issue 151625).

        Performance and stability improvements on all platforms.


2012-10-10: Version 3.14.2

        ARM: allowed VFP3 instructions when hardfloat is enabled.
        (Chromium issue 152506)

        Fixed instance_descriptors() and PushStackTraceAndDie regressions.
        (Chromium issue 151749)

        Made GDBJIT interface compile again. (issue 1804)

        Fixed Accessors::FunctionGetPrototype's proto chain traversal.
        (Chromium issue 143967)

        Made sure that names of temporaries do not clash with real variables.
        (issue 2322)

        Rejected local module declarations. (Chromium issue 150628)

        Rejected uses of lexical for-loop variable on the RHS. (issue 2322)

        Fixed slot recording of code target patches.
        (Chromium issue 152615,chromium:144230)

        Changed the Android makefile to use GCC 4.6 instead of GCC 4.4.3.

        Performance and stability improvements on all platforms.


2012-10-01: Version 3.14.1

        Don't set -m32 flag when compiling with Android ARM compiler.
        (Chromium issue 143889)

        Restore the descriptor array before returning allocation failure.
        (Chromium issue 151750)

        Lowered kMaxVirtualRegisters (v8 issue 2139, Chromium issues 123822 and
        128252).

        Pull more recent gyp in 'make dependencies'.

        Made sure that the generic KeyedStoreIC changes length and element_kind
        atomically (issue 2346).

        Bumped number of allowed variables per scope to 65535, to address GWT.
        (Chromium issue 151625)

        Support sourceURL for dynamically inserted scripts (issue 2342).

        Performance and stability improvements on all platforms.


2012-09-20: Version 3.14.0

        Fixed missing slot recording during clearing of CallICs.
        (Chromium issue 144230)

        Fixed LBoundsCheck on x64 to handle (stack slot + constant) correctly.
        (Chromium issue 150729)

        Fixed minus zero test. (Issue 2133)

        Fixed setting array length to zero for slow elements.
        (Chromium issue 146910)

        Fixed lost arguments dropping in HLeaveInlined.
        (Chromium issue 150545)

        Fixed casting error for receiver of interceptors.
        (Chromium issue 149912)

        Throw a more descriptive exception when blocking 'eval' via CSP.
        (Chromium issue 140191)

        Fixed debugger's eval when close to stack overflow. (issue 2318)

        Added checks to live edit. (issue 2297)

        Switched on code compaction on incremental GCs.

        Fixed caching of optimized code for OSR. (issue 2326)

        Not mask exception thrown by toString in String::UtfValue etc.
        (issue 2317)

        Fixed API check for length of external arrays. (Chromium issue 148896)

        Ensure correct enumeration indices in the dict (Chromium issue 148376)

        Correctly initialize regexp global cache. (Chromium issue 148378)

        Fixed arguments object materialization during deopt. (issue 2261)

        Introduced new API to expose external string resource regardless of
        encoding.

        Fixed CHECK failure in LCodeGen::DoWrapReceiver when
        --deopt-every-n-times flag is present
        (Chromium issue 148389)

        Fixed edge case of extension with NULL as source string.
        (Chromium issue 144649)

        Fixed array index dehoisting. (Chromium issue 141395)

        Performance and stability improvements on all platforms.


2012-09-11: Version 3.13.7

        Enable/disable LiveEdit using the (C++) debug API.

        Performance and stability improvements on all platforms.


2012-09-06: Version 3.13.6

        Added validity checking to API functions and calls.

        Disabled accessor inlining (Chromium issue 134609).

        Fixed bug in Math.min/max in optimized code (Chromium issue 145961).

        Directly use %ObjectKeys in json stringify (Chromium issue 2312).

        Fixed VS2005 build (issue 2313).

        Activated fixed ES5 readonly semantics by default.

        Added hardfp flag to the Makefile.

        Performance and stability improvements on all platforms.


2012-08-29: Version 3.13.5

        Release stack trace data after firing Error.stack accessor.
        (issue 2308)

        Added a new API V8::SetJitCodeEventHandler to push code name and
        location to users such as profilers.

        Allocate block-scoped global bindings to global context.

        Performance and stability improvements on all platforms.


2012-08-28: Version 3.13.4

        Print reason for disabling optimization. Kill --trace-bailout flag.

        Provided option to disable full DEBUG build on Android.

        Introduced global contexts to represent lexical global scope(s).

        Fixed rounding in Uint8ClampedArray setter. (issue 2294)

        Performance and stability improvements on all platforms.


2012-08-21: Version 3.13.3

        Performance and stability improvements on all platforms.


2012-08-20: Version 3.13.2

        Performance and stability improvements on all platforms.


2012-08-16: Version 3.13.1

        Performance and stability improvements on all platforms.


2012-08-10: Version 3.13.0

        Added histograms for total allocated/live heap size, as well as
        allocated size and percentage of total for map and cell space.

        Fixed parseInt's octal parsing behavior (ECMA-262 Annex E 15.1.2.2).
        (issue 1645)

        Added checks for interceptors to negative lookup code in Crankshaft.
        (Chromium issue 140473)

        Made incremental marking clear ICs and type feedback cells.

        Performance and stability improvements on all platforms.


2012-08-01: Version 3.12.19

        Performance and stability improvements on all platforms.


2012-07-30: Version 3.12.18

        Forced using bit-pattern for signed zero double. (issue 2239)

        Made sure double to int conversion is correct. (issue 2260)

        Performance and stability improvements on all platforms.


2012-07-27: Version 3.12.17

        Always set the callee's context when calling a function from optimized
        code.
        (Chromium issue 138887)

        Fixed building with GCC 3.x
        (issue 2016, 2017)

        Improved API calls that return empty handles.
        (issue 2245)

        Performance and stability improvements on all platforms.


2012-07-25: Version 3.12.16

        Performance and stability improvements on all platforms.


2012-07-24: Version 3.12.15

        Added PRESERVE_ASCII_NULL option to String::WriteAscii.
        (issue 2252)

        Added dependency to HLoadKeyed* instructions to prevent invalid
        hoisting. (Chromium issue 137768)

        Enabled building d8 for Android on Mac.

        Interpret negative hexadecimal literals as NaN.
        (issue 2240)

        Expose counters in javascript when using --track-gc-object-stats.

        Enabled building and testing V8 on Android IA.

        Added --trace-parse flag to parser.

        Performance and stability improvements on all platforms.


2012-07-18: Version 3.12.14

        Deactivated optimization of packed arrays.
        (Chromium issue 137768)

        Fixed broken accessor transition.
        (Chromium issue 137689)

        Performance and stability improvements on all platforms.


2012-07-17: Version 3.12.13

        Fixed missing tagging of stack value in finally block.
        (Chromium issue 137496)

        Added more support for heap analysis.

        Performance and stability improvements on all platforms.


2012-07-16: Version 3.12.12

        Added an option to the tickprocessor to specify the directory for lib
        lookup.

        Fixed ICs for slow objects with native accessor (Chromium issue 137002).

        Fixed transcendental cache on ARM in optimized code (issue 2234).

        New heap inspection tools: counters for object sizes and counts,
        histograms for external fragmentation.

        Incorporated constness into inferred interfaces (in preparation for
        handling imports) (issue 1569).

        Performance and stability improvements on all platforms.


2012-07-12: Version 3.12.11

        Renamed "mips" arch to "mipsel" in the GYP build.

        Fixed computation of call targets on prototypes in Crankshaft.
        (Chromium issue 125148)

        Removed use of __lookupGetter__ when generating stack trace.
        (issue 1591)

        Turned on ES 5.2 globals semantics by default.
        (issue 1991, Chromium issue 80591)

        Synced preparser and parser wrt syntax error in switch..case.
        (issue 2210)

        Fixed reporting of octal literals in strict mode when preparsing.
        (issue 2220)

        Fixed inline constructors for Harmony Proxy prototypes.
        (issue 2225)

        Performance and stability improvements on all platforms.


2012-07-10: Version 3.12.10

        Re-enabled and fixed issue with array bounds check elimination
        (Chromium issue 132114).

        Fixed Debug::Break crash. (Chromium issue 131642)

        Added optimizing compiler support for JavaScript getters.

        Performance and stability improvements on all platforms.


2012-07-06: Version 3.12.9

        Correctly advance the scanner when scanning unicode regexp flag.
        (Chromium issue 136084)

        Fixed unhandlified code calling Harmony Proxy traps.
        (issue 2219)

        Performance and stability improvements on all platforms.


2012-07-05: Version 3.12.8

        Implemented TypedArray.set and ArrayBuffer.slice in d8.

        Performance and stability improvements on all platforms.


2012-07-03: Version 3.12.7

        Fixed lazy compilation for strict eval scopes.
        (Chromium issue 135066)

        Made MACOSX_DEPLOYMENT_TARGET configurable in GYP.
        (issue 2151)

        Report "hidden properties" in heap profiler for properties case.
        (issue 2212)

        Activated optimization of packed arrays by default.

        Performance and stability improvements on all platforms.


2012-06-29: Version 3.12.6

        Cleaned up hardfp ABI detection for ARM (V8 issue 2140).

        Extended TypedArray support in d8.


2012-06-28: Version 3.12.5

        Fixed lazy parsing heuristics to respect outer scope.
        (Chromium issue 135008)

        Allow using test-wrapper-gypbuild.py on Windows when no python
        interpreter is registered.

        Performance and stability improvements on all platforms.


2012-06-27: Version 3.12.4

        Removed -fomit-frame-pointer flag from Release builds to make
        the stack walkable by TCMalloc (Chromium issue 133723).

        Ported r7868 (constant masking) to x64 (issue 1374).

        Expose more detailed memory statistics (issue 2201).

        Fixed Harmony Maps and WeakMaps for undefined values
        (Chromium issue 132744).

        Correctly throw reference error in strict mode with ICs disabled
        (issue 2119).

        Performance and stability improvements on all platforms.


2012-06-25: Version 3.12.3

        Reverted r11835 'Unify promotion and allocation limit computation' due
        to V8 Splay performance regression on Mac.  (Chromium issue 134183)

        Fixed sharing of literal boilerplates for optimized code.  (issue 2193)

        Performance and stability improvements on all platforms.


2012-06-22: Version 3.12.2

        Made near-jump check more strict in LoadNamedFieldPolymorphic on
        ia32/x64. (Chromium issue 134055)

        Fixed lazy sweeping heuristics to prevent old-space expansion.
        (issue 2194)

        Performance and stability improvements on all platforms.


2012-06-21: Version 3.12.1

        Performance and stability improvements on all platforms.


2012-06-20: Version 3.12.0

        Fixed Chromium issues:
        115100, 129628, 131994, 132727, 132741, 132742, 133211

        Fixed V8 issues:
        915, 1914, 2034, 2087, 2094, 2134, 2156, 2166, 2172, 2177, 2179, 2185

        Added --extra-code flag to mksnapshot to load JS code into the VM
        before creating the snapshot.

        Support 'restart call frame' command in the debugger.

        Performance and stability improvements on all platforms.


2012-06-13: Version 3.11.10

        Implemented heap profiler memory usage reporting.

        Preserved error message during finally block in try..finally.
        (Chromium issue 129171)

        Fixed EnsureCanContainElements to properly handle double values.
        (issue 2170)

        Improved heuristics to keep objects in fast mode with inherited
        constructors.

        Performance and stability improvements on all platforms.


2012-06-06: Version 3.11.9

        Implemented ES5-conformant semantics for inherited setters and read-only
        properties. Currently behind --es5_readonly flag, because it breaks
        WebKit bindings.

        Exposed last seen heap object id via v8 public api.

        Performance and stability improvements on all platforms.


2012-05-31: Version 3.11.8

        Avoid overdeep recursion in regexp where a guarded expression with a
        minimum repetition count is inside another quantifier.
        (Chromium issue 129926)

        Fixed missing write barrier in store field stub.
        (issues 2143, 1465, Chromium issue 129355)

        Proxies: Fixed receiver for setters inherited from proxies.
        Proxies: Fixed ToStringArray function so that it does not reject some
        keys.
        (issue 1543)

        Performance and stability improvements on all platforms.


2012-05-29: Version 3.11.7

        Get better function names in stack traces.

        Performance and stability improvements on all platforms.


2012-05-24: Version 3.11.6

        Fixed RegExp.prototype.toString for incompatible receivers
        (issue 1981).

        Performance and stability improvements on all platforms.


2012-05-23: Version 3.11.5

        Performance and stability improvements on all platforms.


2012-05-22: Version 3.11.4

        Some cleanup to common.gypi. This fixes some host/target combinations
        that weren't working in the Make build on Mac.

        Handle EINTR in socket functions and continue incomplete sends.
        (issue 2098)

        Fixed python deprecations.  (issue 1391)

        Made socket send and receive more robust and return 0 on failure.
        (Chromium issue 15719)

        Fixed GCC 4.7 (C++11) compilation.  (issue 2136)

        Set '-m32' option for host and target platforms

        Performance and stability improvements on all platforms.


2012-05-18: Version 3.11.3

        Disable optimization for functions that have scopes that cannot be
        reconstructed from the context chain. (issue 2071)

        Define V8_EXPORT to nothing for clients of v8. (Chromium issue 90078)

        Correctly check for native error objects.  (Chromium issue 2138)

        Performance and stability improvements on all platforms.


2012-05-16: Version 3.11.2

        Revert r11496. (Chromium issue 128146)

        Implement map collection for incremental marking. (issue 1465)

        Add toString method to CallSite (which describes a frame of the
        stack trace).


2012-05-15: Version 3.11.1

        Added a readbuffer function to d8 that reads a file into an ArrayBuffer.

        Fix freebsd build. (V8 issue 2126)

        Performance and stability improvements on all platforms.


2012-05-11: Version 3.11.0

        Fixed compose-discard crasher from r11524 (issue 2123).

        Activated new global semantics by default. Global variables can
        now shadow properties of the global object (ES5.1 erratum).

        Properly set ElementsKind of empty FAST_DOUBLE_ELEMENTS arrays when
        transitioning (Chromium issue 117409).

        Made Error.prototype.name writable again, as required by the spec and
        the web (Chromium issue 69187).

        Implemented map collection with incremental marking (issue 1465).

        Regexp: Fixed overflow in min-match-length calculation
        (Chromium issue 126412).

        MIPS: Fixed illegal instruction use on Loongson in code for
        Math.random() (issue 2115).

        Fixed crash bug in VisitChoice (Chromium issue 126272).

        Fixed unsigned-Smi check in MappedArgumentsLookup
        (Chromium issue 126414).

        Fixed LiveEdit for function with no locals (issue 825).

        Fixed register clobbering in LoadIC for interceptors
        (Chromium issue 125988).

        Implemented clearing of CompareICs (issue 2102).

        Performance and stability improvements on all platforms.


2012-05-03: Version 3.10.8

        Enabled MIPS cross-compilation.

        Ensured reload of elements pointer in StoreFastDoubleElement stub.
        (Chromium issue 125515)

        Fixed corner cases in truncation behavior when storing to
        TypedArrays. (issue 2110)

        Fixed failure to properly recognize and report out-of-memory
        conditions when allocating code space pages. (Chromium issue
        118625)

        Fixed idle notifications to perform a round of incremental GCs
        after context disposal. (issue 2107)

        Fixed preparser for try statement. (issue 2109)

        Performance and stability improvements on all platforms.


2012-04-30: Version 3.10.7

        Performance and stability improvements on all platforms.


2012-04-26: Version 3.10.6

        Fixed some bugs in accessing details of the last regexp match.

        Fixed source property of empty RegExp objects. (issue 1982)

        Enabled inlining some V8 API functions.

        Performance and stability improvements on all platforms.


2012-04-23: Version 3.10.5

        Put new global var semantics behind a flag until WebKit tests are
        cleaned up.

        Enabled stepping into callback passed to builtins.
        (Chromium issue 109564)

        Performance and stability improvements on all platforms.


2012-04-19: Version 3.10.4

        Fixed issues when stressing compaction with WeakMaps.

        Fixed missing GVN flag for new-space promotion. (Chromium issue 123919)

        Simplify invocation sequence at monomorphic function invocation sites.
        (issue 2079)

        Performance and stability improvements on all platforms.


2012-04-17: Version 3.10.3

        Fixed several bugs in heap profiles (including issue 2078).

        Throw syntax errors on illegal escape sequences.

        Implemented rudimentary module linking (behind --harmony flag)

        Implemented ES5 erratum: Global declarations should shadow
        inherited properties.

        Made handling of const more consistent when combined with 'eval'
        and 'with'.

        Fixed V8 on MinGW-x64 (issue 2026).

        Performance and stability improvements on all platforms.


2012-04-13: Version 3.10.2

        Fixed native ARM build (issues 1744, 539)

        Return LOOKUP variable instead of CONTEXT for non-context allocated
        outer scope parameters (Chromium issue 119609).

        Fixed regular and ElementsKind transitions interfering with each other
        (Chromium issue 122271).

        Improved performance of keyed loads/stores which have a HeapNumber
        index (issues 1388, 1295).

        Fixed WeakMap processing for evacuation candidates (issue 2060).

        Bailout on possible direct eval calls (Chromium issue 122681).

        Do not assume that names of function expressions are context-allocated
        (issue 2051).

        Performance and stability improvements on all platforms.


2012-04-10: Version 3.10.1

        Fixed bug with arguments object in inlined functions (issue 2045).

        Fixed performance bug with lazy initialization (Chromium issue
        118686).

        Added suppport for Mac OS X 64bit builds with GYP.
        (Patch contributed by Filipe David Manana <fdmanana@gmail.com>)

        Fixed bug with hidden properties (issue 2034).

        Fixed a performance bug when reloading pages (Chromium issue 117767,
        V8 issue 1902).

        Fixed bug when optimizing throw in top-level code (issue 2054).

        Fixed two bugs with array literals (issue 2055, Chromium issue 121407).

        Fixed bug with Math.min/Math.max with NaN inputs (issue 2056).

        Fixed a bug with the new runtime profiler (Chromium issue 121147).

        Fixed compilation of V8 using uClibc.

        Optimized boot-up memory use.

        Optimized regular expressions.


2012-03-30: Version 3.10.0

        Fixed store IC writability check in strict mode
        (Chromium issue 120099).

        Resynchronize timers if the Windows system time was changed.
        (Chromium issue 119815)

        Removed "-mfloat-abi=hard" from host compiler cflags when building for
        hardfp ARM
        (https://code.google.com/p/chrome-os-partner/issues/detail?id=8539)

        Fixed edge case for case independent regexp character classes
        (issue 2032).

        Reset function info counters after context disposal.
        (Chromium issue 117767, V8 issue 1902)

        Fixed missing write barrier in CopyObjectToObjectElements.
        (Chromium issue 119926)

        Fixed missing bounds check in HasElementImpl.
        (Chromium issue 119925)

        Performance and stability improvements on all platforms.


2012-03-23: Version 3.9.24

        Activated count-based profiler for ARM.

        Fixed use of proxies as f.prototype properties. (issue 2021)

        Enabled snapshots on MIPS.

        Performance and stability improvements on all platforms.


2012-03-21: Version 3.9.23

        Use correct arguments adaptation environment when inlining function
        containing arguments. (Issue 2014)

        Performance and stability improvements on all platforms.


2012-03-20: Version 3.9.22

        Enabled count-based profiler by default.

        Implemented a hash based look-up to speed up address checks
        in large object space (issue 853).

        Performance and stability improvements on all platforms.


2012-03-19: Version 3.9.21

        Fixed push-to-trunk script (and re-push).

        Added API call that identifies strings that are guaranteed only to
        contain ASCII characters.


2012-03-19: Version 3.9.20

        Fixed declarations escaping global strict eval. (Issue 1624)

        Fixed wrapping of receiver for non-strict callbacks. (Issue 1973)

        Fixed function declarations overwriting read-only global properties.
        (Chromium issue 115452)

        Fixed --use-strict flag in combination with --harmony[-scoping].

        Debugger: naive implementation of "step into Function.prototype.bind".

        Debugger: added ability to set script source from within OnBeforeCompile

        Added flag to always call DebugBreak on abort.

        Re-enabled constructor inlining and inline === comparison with boolean
        constants. (Issue 2009)

        Don't use an explicit s0 in ClampDoubleToUint8. (Issue 2004)

        Performance and stability improvements on all platforms.


2012-03-14: Version 3.9.19

        Ensure there is a smi check of the receiver for global load and call
        ICs (Chromium issue 117794).

        Performance and stability improvements on all platforms.


2012-03-13: Version 3.9.18

        Ensure consistency of Math.sqrt on Intel platforms.

        Remove static initializers in v8. (issue 1859)

        Add explicit dependency on v8_base in the GYP-based build.

        Performance and stability improvements on all platforms.


2012-03-12: Version 3.9.17

        Fixed VFP detection through compiler defines. (issue 1996)

        Add Code-related fields to postmortem metadata.

        Performance and stability improvements on all platforms.


2012-03-09: Version 3.9.16

        Added basic interface inference for modules (behind the --harmony flag).

        Added Object.is, Number.isFinite, Number.isNaN.

        Updated the Unicode tables to Unicode version 6.1.0.

        Performance and stability improvements on all platforms.


2012-03-06: Version 3.9.15

        Fix the heap profiler crash caused by memory layout changes between
        passes.

        Fix Error.prototype.toString to throw TypeError. (issue 1980)

        Fix double-rounding in strtod for MinGW. (issue 1062)

        Fix corrupted snapshot serializaton on ia32. (Chromium issue v8/1985)

        Performance and stability improvements on all platforms.


2012-03-01: Version 3.9.14

        Performance and stability improvements on all platforms.


2012-02-29: Version 3.9.13

        Added code kind check before preparing for OSR. (issue 1900, 115073)

        Fixed issue 1802: Pass zone explicitly to zone-allocation on x64 and
        ARM.

        Ported string construct stub to x64. (issue 849)

        Performance and stability improvements on all platforms.


2012-02-28: Version 3.9.12

        Fixed the negative lookup stub to handle deleted entries in a
        dictionary. (issue 1964)

        Added a new API where the host can supply a callback function. The
        callback function can resolve the location of a return address on stack
        to the location where a return-address rewriting profiler stashed the
        original return address.

        Fixed Chromium issue http://crbug.com/115646: When compiling for-in
        pass correct context value to the increment instruction.

        Fixed issue 1853: Update breakpoints set with partial file name after
        compile.


2012-02-27: Version 3.9.11

        Made 'module' a context-sensitive keyword (V8 issue 1957).


2012-02-24: Version 3.9.10

        Fixed V8 issues 1322, 1772 and 1969.

        Conformance improvements.

        Performance and stability improvements on all platforms.


2012-02-23: Version 3.9.9

        Supported fast case for-in in Crankshaft.

        Sped up heap snapshot serialization and dominators construction.

        Randomized allocation addresses on windows. (Chromium issue 115151)

        Fixed compilation with MinGW-w64. (issue 1943)

        Fixed incorrect value of assignments to non-extensible properties.

        Fixed a crash bug in generated code on ia32.

        Performance and stability improvements on all platforms.


2012-02-21: Version 3.9.8

        Fixed memory leak and missing #include in StartupDataDecompressor
        (issue 1960).

        Renamed static methods to avoid shadowing virtual methods and fix Clang
        C++11 compile error.

        Fixed sequence of element access in array builtins (issue 1790).

        Performance and stability improvements on all platforms.


2012-02-16: Version 3.9.7

        Fixed V8 issues 1322, 1878, 1942, 1945 and Chromium issue 113924.

        Fixed GCC-4.7 warnings.

        Added Navier-Stokes benchmark.

        Performance and stability improvements on all platforms.


2012-02-14: Version 3.9.6

        Fixed template-related linker error. (issue 1936)

        Allowed inlining of functions containing object literals.  (issue 1322)

        Added --call-graph-size option to tickprocessor.  (issue 1937)

        Heap Snapshot maximum size limit is too low for really big apps. At the
        moment the limit is 256MB.  (Chromium issue 113015)

        Performance and stability improvements on all platforms.


2012-02-09: Version 3.9.5

        Removed unused command line flags.

        Performance and stability improvements on all platforms.


2012-02-08: Version 3.9.4

        Properly initialize element-transitioning array literals on ARM.
        (issue 1930)

        Bug fixes on all platforms.


2012-02-07: Version 3.9.3

        When rethrowing an exception, print the stack trace of its original
        site instead of rethrow site (Chromium issue 60240).

        Increased size of small stacks from 32k to 64k to avoid hitting limits
        in Chromium (Chromium issue 112843).


2012-02-06: Version 3.9.2

        Added timestamp to --trace-gc output. (issue 1932)

        Heap profiler reports implicit references.

        Optionally export metadata with libv8 to enable debuggers to inspect V8
        state.


2012-02-02: Version 3.9.1

        Fixed memory leak in NativeObjectsExplorer::FindOrAddGroupInfo
        (Chromium issue 112315).

        Fixed a crash in dev tools (Chromium issue 107996).

        Added 'dependencies_traverse': 1 to v8 GYP target.

        Performance and stability improvements on all platforms.


2012-02-01: Version 3.9.0

        Reduced memory use immediately after starting V8.

        Stability fixes and performance improvements on all platforms.


2012-01-26: Version 3.8.9

        Flush number string cache on GC (issue 1605).

        Provide access to function inferred name with
	v8::Function::GetInferredName in V8 public API.

        Fix building with Clang (issue 1912).

        Reduce the space used by the stack for the profiling thread.

        Fix misleading documentation of v8::Locker (issue 542).

        Introduce readbinary function in d8 to read binary files.

        Performance and stability improvements on all platforms.


2012-01-23: Version 3.8.8

        Limited number of loop iterations in Heap::ReserveSpace
        (Chromium issue 99027).

        Fixed solaris build (VirtualMemory) (issue 1761).

        Fixed strict vs. non-strict handling of function proxies in
        higher-order array and string methods.

        Enabled asynchronous remote debugging with d8 (issue 1691).

        Stability and performance improvements on all platforms.


2012-01-19: Version 3.8.7

        Ensure that LRandom restores rsi after call to the C function on x64.
        (Chromium issue http://crbug.com/110509)

        Fixing include issues on *bsd when building with scons.
        (issue 1897)

        Provide a switch to specify -fno-strict-aliasing
        (issue 1887)

        Move WIN32 define from standalone.gypi to common.gypi
        (issue 1760)

        Fix corner-case in heap size estimation.
        (issue 1893)

        Fix and enable NEW_NON_STRICT_FAST ArgumentsAccess stub on x64.
        (issue 1903)

        Performance improvements and bug fixes.


2012-01-16: Version 3.8.6

        Add primitive WebGL array support to d8.

        Improve heap size estimation (issue 1893).

        Hash collision DOS workaround extended from string keys
        to numeric keys.

        Provide an API for iterating through all external strings referenced
        from the JS heap.

        Adjust position recorded for call expressions. http://crbug.com/109195

        Fix GC crash related to instanceof. http://crbug.com/109448

        Performance improvements and bug fixes.


2012-01-05: Version 3.8.5

        Fix broken test that assumes that no GC can clear the regexp cache (GC
        can happen at any time due to Crankshaft).

        Fix handling of bogus receivers for Harmony collections. (issue 1884)

        Add netbsd support to gyp build.

        Determine page size at runtime on posix platforms.

        Ensure that store buffer filtering hash sets are cleared after
        StoreBuffer::Filter.

        Randomize the seed used for string hashing.  This helps guard against
        CPU-eating DOS attacks against node.js servers.  Based on code from
        Bert Belder.  This version only solves the issue for those that compile
        V8 themselves or those that do not use snapshots.  A snapshot-based
        precompiled V8 will still have predictable string hash codes.

        Implement callback when script finishes running in V8 API.

        Improve performance of Math.min and Math.max for the case of two
        arguments. (issue 1325)


2012-01-02: Version 3.8.4

        Performance improvements for large Smi-only arrays.

        Fixed InternalArrays construction. (issue 1878)


2011-12-27: Version 3.8.3

        Avoid embedding new space objects into code objects in the lithium gap
        resolver. (chromium:108296)

        Bug fixes and performance optimizations on all platforms.


2011-12-21: Version 3.8.2

        Add max optimization flag to v8 gyp build to ensure V8 is always built 
        fully optimized in Chrome.

        MIPS: Bring MIPS to parity with other platforms.

        Optimizations and stability improvements on all platforms.


2011-12-19: Version 3.8.1

        Fixed GCC 4.7 warnings. Patch from Tobias Burnus.

        Stability improvements on all platforms.


2011-12-13: Version 3.8.0

        Fixed handling of arrays in DefineOwnProperty. (issue 1756)

        Sync parser and preparser on do-while and return statements. 
        (issue 1856)

        Fixed another corner case for DefineOwnProperty on arrays (issue 1756).

        Stability and performance improvements on all platforms.


2011-12-01: Version 3.7.12

        Increase tick interval for the android platform.

        Fix a bug in the register allocator. (chromium:105112)

        Fix handling of recompiling code. (chromium:105375, v8:1782)

        Start incremental marking on idle notification. (v8:1458)

        Build fixes for various platforms.

        Various performance improvements.


2011-11-29: Version 3.7.11

        Fixed bug when generating padding to ensure space for lazy
        deoptimization.
        (issue 1846)

        Further reduced pause times due to GC.

        Stability and performance improvements on all platforms.


2011-11-23: Version 3.7.10

        Set maximum length of FixedArray in terms of elements instead an
        absolute number of bytes.
        (Chromium issue 103103)

        Stability and performance improvements on all platforms.


2011-11-21: Version 3.7.9

        Removed exit-time destructors.

        Stability and performance improvements on all platforms.


2011-11-17: Version 3.7.8

        Removed hidden prototype from builtins, i.e., deleting an overridden
        function on builtins will not make the original function reappear.

        Added NetBSD support for scons build.

        Performance improvements on all platforms.


2011-11-14: Version 3.7.7

        Fix missing fast property accessors in heap snapshots.
        (issue 1818)


2011-11-11: Version 3.7.6

        Fixed filtering of store buffer for large object pages.
        (issue 1817)

        Fixed generated hash function on all platforms.
        (issue 1808)

        Fixed Heap::Shrink to ensure that it does not free pages that are
        still in use.
        (Chromium issue 100414)

        Stability and performance improvements on all platforms.


2011-11-10: Version 3.7.5

        Added initial gyp infrastructure for MIPS.

        Implemented performance improvements to the incremental garbage
        collector.

        Added optimizations and stability improvements on all platforms.


2011-11-07: Version 3.7.4

        Proper "libv8.so.3.7.4" SONAME for Linux shared library (issue 1786).

        Fix Harmony sets and maps to allow null and undefined as keys
        (still hidden behind --harmony flag) (issue 1622).

        Implement VirtualMemory on FreeBSD to fix build (issue 1807).

        Enable VFP instructions for Android.

        Fix error handling in Date.prototype.toISOString (issue 1792).

        Bug fixes and performance improvements for all platforms.

        Not officially supported but noteworthy: Crankshaft for MIPS :-)


2011-10-28: Version 3.7.3

        Slight deoptimization as a workaround for issue with jslint: Issue
        1789.


2011-10-27: Version 3.7.2

        Fix bug in deoptimization.  Known issue with jslint: Issue 1789.


2011-10-26: Version 3.7.1

        Achieved 33% speedup in debug-mode tests.

        Removed special casing of calls to RegExp test and exec methods with no
        argument.  Now matches new JSC behaviour.  crbug.com/75740.

        Return the empty string on cyclic references in toString (ES5
        conformance).

        Fixed bug triggered by JSBeautifier.  crbug.com/100409.

        Made Math.random state per-context instead of per-process (issue 864).

        Fixed stack traces to skip native functions.

        Make snapshots (new contexts) smaller and faster.

        Fixed handling of Function.apply for non-array arguments.

        Fixed evaluation order in defineProperties to match FireFox.

        Fixed handling of non-object receivers for array builtins,
        crbug.com/100702.

        Multiple fixes to improve compliance with test262.

        Fixed compatibility with older Android releases.

        Fixed compilation with gcc-4.5.3.

        Improved performance of WriteUtf8, issue 1665.

        Made native syntax an early error in the preparser.

        Fixed issues 793 and 893 relating to Function.prototype.bind.

        Improved let, const, Set and Map support and other Harmony features
        (behind the --harmony flag).

        Changed evaluation order for > and <= to match ES5 instead of ES3.

        Bug fixes and performance improvements on all platforms.


2011-10-13: Version 3.7.0

        Fixed array handling for Object.defineOwnProperty (ES5 conformance).

        Fixed issue 1757 (string slices of external strings).

        Fixed issue 1759 (ARM).

        Added flag --noclever-optimizations to disable some things that
        caused trouble in the past.

        Added flag --stress-compaction for testing.

        Added flag --harmony to activate all experimental Harmony features.


2011-10-10: Version 3.6.6

        Added a GC pause visualization tool.

        Added presubmit=no and werror=no flags to Makefile.

        ES5/Test262 conformance improvements.

        Fixed compilation issues with GCC 4.5.x (issue 1743).

        Bug fixes and performance improvements on all platforms.


2011-10-05: Version 3.6.5

        New incremental garbage collector.

        Removed the hard heap size limit (soft heap size limit is still
        700/1400Mbytes by default).

        Implemented ES5 generic Array.prototype.toString (Issue 1361).

        V8 now allows surrogate pair codes in decodeURIComponent (Issue 1415).

        Fixed x64 RegExp start-of-string bug (Issues 1746, 1748).

        Fixed propertyIsEnumerable for numeric properties (Issue 1692).

        Fixed the MinGW and Windows 2000 builds.

        Fixed "Prototype chain is not searched if named property handler does
        not set a property" (Issue 1636).

        Made the RegExp.prototype object be a RegExp object (Issue 1217).

        Disallowed future reserved words as labels in strict mode.

        Fixed string split to correctly coerce the separator to a string
        (Issue 1711).

        API: Added an optional source length field to the Extension
        constructor.

        API: Added Debug::DisableAgent to match existing Debug::EnableAgent
        (Issue 1573).

        Added "native" target to Makefile for the benefit of Linux distros.

        Fixed: debugger stops stepping outside evaluate (Issue 1639).

        More work on ES-Harmony proxies.  Still hidden behind a flag.

        Bug fixes and performance improvements on all platforms.


2011-09-15: Version 3.6.4

        Fixed d8's broken readline history.

        Removed the need for code delete events in CPU profiler (Issue 1466).

        Fixed debugger stepping next with trycatch recursion (Issue 1639).

        Fixing parallel execution in d8 (with -p) and some memory leaks.

        Support for precise stepping in functions compiled before debugging was
        started (step 1).


2011-09-13: Version 3.6.3

        Implemented better support of typed arrays in the d8 shell.

        Bug fixes and performance improvements on all platforms.


2011-09-08: Version 3.6.2

        Added "dependencies" target to top-level Makefile.

        Added ability to turn profiler on/off in d8.

        Added "soname_version" parameter to common.gypi, v8.gyp, and Makefile.

        Fixed several crash bugs.


2011-09-07: Version 3.6.1

        Fixed a bug in abrupt exit from with or catch inside finally.

        Fixed possible crash in FixedDoubleArray::Initialize() (Chromium
        issue 95113).

        Fixed a bug in Page::GetRegionMaskForSpan (Chromium issue 94425).

        Fixed a few clang warnings (which -Werror treated as errors).

        Performance improvements on all platforms.


2011-09-05: Version 3.6.0

        Fixed a bug when optimizing named function expression (issue 1647).

        Fixed a bug when optimizing f.call.apply (issue 1650).

        Made arguments and caller always be null on native functions
        (issues 1548 and 1643).

        Fixed issue 1648 (cross-compiling x64 targeting ia32).

        Fixed issue 371 (d8 printing of strings containing \0).

        Fixed order of evaluation in arguments to parseInt (issue 1649).

        Fixed a problem with large heap snapshots in Chrome DevTools
        (issue 1658, chromium issue 89268).

        Upped default maximum heap size from 512M to 700M.


2011-08-31: Version 3.5.10

        Added dependency of v8_base on WinSocket2 Windows library in
        the GYP-build.

        Various bugfixes.


2011-08-29: Version 3.5.9

        Made FromPropertyDescriptor not trigger inherited setters.

        Fixed .gyp files to work on the ARM simulator.

        Fixed shared library build warnings for MSVS.


2011-08-24: Version 3.5.8

        Added V8EXPORT attributes for v8::Array::CheckCast and
        v8::Number::CheckCast.

        Made a slight API change enabling opting out from null termination
        in String::Write*().

        Fixed arm build for gcc-4.6.


2011-08-22: Version 3.5.7

        Make scanner handle invalid unicode escapes in identifiers correctly.

        Make regexp flag parsing stricter.

        Fix several memory leaks.


2011-08-17: Version 3.5.6

        Fixed issue that could cause crashes when running with --heap-stats.

        Fixed compilation on Linux 2.6.9 and older.

        Fixed live-object-list to work with isolates.

        Fixed memory leaks in zones and isolates.

        Fixed a performance regression for TypedArrays on x64.

        Stability improvements on all platforms.


2011-08-15: Version 3.5.5

        Fixed bugs involving negative zero and the optimizing compiler.

        Fixed optimized version of Function.apply(x, arguments). (issue 1592)

        Eliminated uses of deprecated ARM instructions.

        Sped up Math.floor by using SSE 4.1 roundsd instruction on ia32.

        Removed restriction on the size of disassembled code that is printed.


2011-08-10: Version 3.5.4

        Added a preliminary implementation of ES Harmony weak maps.  Weak
        maps can be enabled by the flag --harmony-weakmaps.

        Introduced a toplevel Makefile to support GYP-based building.  GYP
        can be obtained from http://gyp.googlecode.com.

        Fixed a bug in the length property of functions created by
        Function.prototype.bind.

        Reduced malloc heap allocation on process startup.

        Several important code generation bug fixes.

        Performance improvements on all platforms.


2011-08-03: Version 3.5.3

        MIPS: Port of fix to ClassOf check from ARM.
        Patch from Paul Lind <plind44@gmail.com>.

        Stopped using mprotect on Cygwin.
        Avoided uninitialized member warning on gcc 4.3.4
        Both patches by Bert Belder.

        Bug fixes and performance improvements on all platforms.


2011-08-01: Version 3.5.2

        Performance improvements on all platforms.


2011-07-28: Version 3.5.1

        Fixed setting the readonly flag on the prototype property using the
        API call FunctionTemplate::SetPrototypeAttributes (issue 1539).

        Changed the tools/test.py script to use d8 instead of shell for
        testing.

        Fixed crash in ToBooleanStub when GC happens during invocation.

        Enabled automatic unboxing of double arrays.

        Performance improvements on all platforms.


2011-07-25: Version 3.5.0

        Implemented Object.prototype.{hasOwnProperty, propertyIsEnumerable} for
        proxies.

        Removed logging to memory support.

        Bugfixes and performance work.


2011-07-20: Version 3.4.14

        Fix the debugger for strict-mode functions. (Chromium issue 89236)

        Add GetPropertyAttribute method for Object in the API. (Patch by
        Peter Varga)

        Fix -Wunused-but-set-variable for gcc-4.6 on x64. (Issue 1291)


2011-07-18: Version 3.4.13

        Improved debugger support to allow inspection of optimized frames (issue
        1140).

        Fixed a bug in prototype transitions cache clearing introduced by r8165.

        Fixed shortcutting bug in HInferRepresentation. Patch by Andy Wingo.

        Fixed a memory leak in sample/shell.cc (dispose semaphores).

        Simplified HClampToUint8. Patch by Andy Wingo.

        Exposed APIs for detecting boxed primitives, native errors. Patch by
        Luke Zarko.

        Added map check for COW elements to crankshaft array handling code
        (issue 1560).

        Sample shell and (a light version of) D8 links against a shared library
        now.

        Fixed bug in array filter and reduce functions (issue 1559).

        Avoid TLS load in AstNode constructor.

        Introduced a random entropy source which can optionally be provided at
        initialization. (Chromium issue 89462).


2011-07-13: Version 3.4.12

        Added --prof profiling option to d8 shell.

        Fixed a bug where reading a directory in d8 shell hangs (issue 1533).

        Fixed a potential assertion failure in const declarations.

        Fixed an assertion failure in descriptor arrays (issue 1526).

        Enabled fast thread-local storage by default on supported platforms.

        Improved reporting of source position for global variable loads
        (issue 1527).


2011-07-11: Version 3.4.11

        Fixed MinGW32 build.

        Fixed a GC bug with RegExp code flushing.

        Implemented Object.defineProperty for proxies.

        Fixed a bug in for/in iteration of arguments objects (issue 1531).

        Added debugger support for inspecting optimized frames (issue 1140).

        Allowed JSObject::PreventExtensions to work for arguments objects.

        Bugfixes and performance work.


2011-07-06: Version 3.4.10

        Fixed debugger not breaking on certain "if" statements (issue 1523).

        Fixed assertion failure in runtime profiler when running on IA32
        without snapshot (issue 1522).

        Fixed ABI for API calls on IA32 (for clang compatibility).

        Introduced code flushing of RegExp code to free memory used by
        RegExps sooner.

        Fixed linux-tick-processor built wrong version of v8 (issue 1532).

        Fixed assertion failure in v8::TryCache::StackTrace (issue 1529).

        Performance improvements on all platforms.


2011-07-04: Version 3.4.9

        Added support for debugger inspection of locals in optimized frames
        (issue 1140).

        Fixed SConstruct to pass correct defines to samples/preparser when
        building with library=shared.

        Made date parser handle ES5 Date Time Strings correctly (issue 1498).

        Fixed a bug in Object.defineProperty on the arguments object.

        Performance improvements on all platforms.


2011-06-29: Version 3.4.8

        Ensure 16-byte stack alignment on Solaris (issue 1505).

        Fix "illegal access" when calling parseInt with a radix
        that is not a smi. (issue 1246).


2011-06-27: Version 3.4.7

        Fixed 64-bit build on FreeBSD.

        Added API to set the property attributes for the prototype
        property on functions created from FunctionTemplates.

        Bugfixes and performance work.


2011-06-22: Version 3.4.6

        Lowered limit on code space for systems with low memory supply.

        Allowed compiling v8_shell with the 'host' toolset (issue 82437).

        Extended setBreakpoint API to accept partial script name (issue 1418).

        Made multi-line comments not count when deciding whether the '-->'
        comment starter is first on a line. This matches Safari.

        Made handling of non-array recievers in Array length setter correct
        (issue 1491).

        Added ability to heap profiler to iterate over snapshot's node
        (issue 1481).


2011-06-20: Version 3.4.5

        Fixed issues 794, 1097, 1215(partial), 1417, 1435, 1472, 1473,
        1476, and 1477.

        Improved code generation for !0 and !1.

        Reduced memory usage for regular expressions with nested qualifiers.
        (issue 1472)

        Fixed V8 to count line terminators in multi-line comments.
        (Chromium issue 86431)

        Fixed disassembler=on option for release-mode builds. (issue 1473)

        Performance improvements on all platforms.


2011-06-15: Version 3.4.4

        Added snapshot compression support and --stress-opt flag to d8.

        Improved performance of try/catch.

        Several GYP-related changes: Added support for building Xcode project
        files. Make the ARM simulator build with GYP again. Generate Makefiles
        for all architectures on Linux.

        Fixed Array.prototype.{reduce,reduceRight} to pass undefined as the
        receiver for strict mode callbacks. (issue 1436)

        Fixed a bug where an array load was incorrectly hoisted by GVN.

        Handle 'undefined' correctly when === has been specialized for doubles.
        (issue 1434)

        Corrected the limit of local variables in an optimized function from 64
        to 63.

        Correctly set ReadOnly flag on indexed properties when using the API Set
        method. (issue 1470)

        Give the correct error message when Object.isExtensible is called on a
        non-object. (issue 1452)

        Added GetOwnPropertyNames method for Object in the API. Patch by Peter
        Varga.

        Do not redefine properties unneccesarily in seal and freeze. (issue
        1447)

        IsExecutionTerminating has an Isolate parameter now.

        Distinguish keyed loads with a symbol key from fast elements loads,
        avoiding some useless deoptimizations. (issue 1471)


2011-06-08: Version 3.4.3

        Clear the global thread table when an isolate is disposed
        (issue 1433).

        Converted time zone name to UTF8 on Windows (issue 1290).

        Limited the number of arguments in a function call to 32766
        (issue 1413).

        Compress sources of JS libraries in addition to the snapshot.

        Fixed a bug in Lithium environment iteration.

        Performance improvements on all platforms.


2011-06-06: Version 3.4.2

        More work on ES-Harmony proxies.  Still hidden behind a flag.

        Fixed some crash bugs and improved performance.

        Fixed building with gdb debugging support.

        Do not install SIGPROF handler until it is needed.

        Added DateTimeFormat to i18n API.

        Fixed compilation on OpenBSD.

        Take the ulimit into account when sizing the heap.  OpenBSD users
        may still have to increase the default ulimit to run heavy pages in
        the browser.


2011-06-01: Version 3.4.1

        Fixed JSON stringify issue with arrays.

        Changed calls to JS builtins to be passed undefined when called with
        implicit receiver.

        Implemented the set trap for Harmony proxies. Proxies still need to
        be enabled with the --harmony-proxies flag.


2011-05-30: Version 3.4.0

        Changed calls to undefined property setters to not throw (issue 1355).

        Made RegExp objects not callable.

        Fixed issues on special case large JSON strings in new json parser
        (issues http://crbug.com/83877 and http://crbug.com/84186).

        Performance improvements on all platforms.


2011-05-25: Version 3.3.10

        Fixed calls of strict mode function with an implicit receiver.

        Fixed fast handling of arrays to properly deal with changes to the
        Object prototype (issue 1403).

        Changed strict mode poison pill to be the same type error function
        (issue 1387).

        Fixed a debug crash in arguments object handling (issue 1227).

        Fixed a bug in deoptimization on x64 (issue 1404).

        Performance improvements and bug fixes on all platforms.


2011-05-23: Version 3.3.9

        Added DateTimeFormat class to experimental i18n API.

        Extended preparser to give early errors for some strict mode
        restrictions.

        Removed legacy execScript function from V8.

        Extended isolate API with the ability to add embedder-specific
        data to an isolate.

        Added basic support for polymorphic loads from JS and external
        arrays.

        Fixed bug in handling of switch statements in the optimizing
        compiler.


2011-05-18: Version 3.3.8

        Added MarkIndependent to the persistent handle API.  Independent
        handles are independent of all other persistent handles and can be
        garbage collected more frequently.

        Implemented the get trap for Harmony proxies.  Proxies are enabled
        with the --harmony-proxies flag.

        Performance improvements and bug fixes on all platforms.


2011-05-16: Version 3.3.7

        Updated MIPS infrastructure files.

        Performance improvements and bug fixes on all platforms.


2011-05-11: Version 3.3.6

        Updated MIPS infrastructure files.

        Added method IsCallable for Object to the API.
        Patch by Peter Varga.


2011-05-09: Version 3.3.5

        Fixed build on FreeBSD. Patch by Akinori MUSHA.

        Added check that receiver is JSObject on API calls.

        Implemented CallAsConstructor method for Object in the API (Issue 1348).
        Patch by Peter Varga.

        Added CallAsFunction method to the Object class in the API (Issue 1336).
        Patch by Peter Varga.

        Added per-isolate locking and unlocking.

        Fixed bug in x64 >>> operator (Issue 1359).


2011-05-04: Version 3.3.4

        Implemented API to disallow code generation from strings for a context
        (issue 1258).

        Fixed bug with whitespaces in parseInt (issue 955).

        Fixed bug with == comparison of Date objects (issue 1356).

        Added GYP variables for ARM code generation:
        v8_can_use_vfp_instructions, v8_can_use_unaligned_accesses
        and v8_use_arm_eabi_hardfloat.


2011-05-02: Version 3.3.3

        Added support for generating Visual Studio solution and project files
        using GYP.

        Implemented support for ARM EABI calling convention variation where
        floating-point arguments are passed in registers (hardfloat).

        Added Object::HasOwnProperty() to the API.

        Added support for compressing startup data to reduce binary size. This
        includes build time support and an API for the embedder to decompress
        the startup data before initializing V8.

        Reduced the profiling hooks overhead from >400% to 25% when using
        ll_prof.

        Performance improvements and bug fixes on all platforms.


2011-04-27: Version 3.3.2

        Fixed crash bug on ARM with no VFP3 hardware.

        Fixed compilation of V8 without debugger support.

        Improved performance on JSLint.

        Added support Float64 WebGL arrays.

        Fixed crash bug in regexp replace.


2011-04-20: Version 3.3.1

        Reduced V8 binary size by removing virtual functions from hydrogen.

        Fixed crash bug on x64.

        Performance improvements on ARM and IA32.


2011-04-18: Version 3.3.0

        Fixed bug in floating point rounding in Crankshaft on ARM
        (issue 958)

        Fixed a number of issues with running without VFPv3 support on ARM
        (issue 1315)

        Introduced v8Locale.Collator, a partial implementation of Collator
        per last ECMAScript meeting + mailing list.

        Minor performance improvements and bug fixes.


2011-04-13: Version 3.2.10

        Fixed bug in external float arrays on ARM (issue 1323).

        Minor performance improvements and bug fixes.


2011-04-11: Version 3.2.9

        Removed support for ABI prior to EABI on ARM.

        Fixed multiple crash bugs.

        Added GCMole to the repository, a simple static analysis tool that
        searches for GC-unsafe evaluation order dependent callsites.

        Made preparser API be exported in shared libraries.

        Fixed multiple issues in EcmaScript 5 strict mode implementation.

        Fixed mutable __proto__ property if object is not extensible
        (Issue 1309).

        Fixed auto suspension of the sampler thread.


2011-04-06: Version 3.2.8

        Exposed WebGL typed array constructors in the shell sample.

        Performance improvements on all platforms.


2011-04-04: Version 3.2.7

        Disabled the original 'classic' V8 code generator.  Crankshaft is
        now the default on all platforms.

        Changed the heap profiler to use more descriptive names.

        Performance and stability improvements to isolates on all platforms.


2011-03-30: Version 3.2.6

        Fixed xcode build warning in shell.cc (out of order initialization).

        Fixed null-pointer dereference in the compiler when running without
        SSE3 support (Chromium issue 77654).

        Fixed x64 compilation error due to some dead code. (Issue 1286)

        Introduced scons target to build the preparser stand-alone example.

        Made FreeBSD build and pass all tests.


2011-03-28: Version 3.2.5

        Fixed build with Irregexp interpreter (issue 1266).

        Added Crankshaft support for external arrays.

        Fixed two potential crash bugs.


2011-03-23: Version 3.2.4

        Added isolates which allows several V8 instances in the same process.
        This is controlled through the new Isolate class in the API.

        Implemented more of EcmaScript 5 strict mode.

        Reduced the time it takes to make detailed heap snapshot.

        Added a number of commands to the ARM simulator and enhanced the ARM
        disassembler.


2011-03-17: Version 3.2.3

        Fixed a number of crash bugs.

        Fixed Array::New(length) to return an array with a length (issue 1256).

        Fixed FreeBSD build.

        Changed __defineGetter__ to not throw (matching the behavior of Safari).

        Implemented more of EcmaScript 5 strict mode.

        Improved Crankshaft performance on all platforms.


2011-03-14: Version 3.2.2

        Fixed a number of crash and correctness bugs.

        Improved Crankshaft performance on all platforms.

        Fixed Crankshaft on Solaris/Illumos.


2011-03-10: Version 3.2.1

        Fixed a number of crash bugs.

        Improved Crankshaft for x64 and ARM.

        Implemented more of EcmaScript 5 strict mode.


2011-03-07: Version 3.2.0

        Fixed a number of crash bugs.

        Turned on Crankshaft by default on x64 and ARM.

        Improved Crankshaft for x64 and ARM.

        Implemented more of EcmaScript 5 strict mode.


2011-03-02: Version 3.1.8

        Fixed a number of crash bugs.

        Improved Crankshaft for x64 and ARM.

        Implemented more of EcmaScript 5 strict mode.

        Fixed issue with unaligned reads and writes on ARM.

        Improved heap profiler support.


2011-02-28: Version 3.1.7

        Fixed a number of crash bugs.

        Improved Crankshaft for x64 and ARM.

        Fixed implementation of indexOf/lastIndexOf for sparse
        arrays (http://crbug.com/73940).

        Fixed bug in map space compaction (http://crbug.com/59688).

        Added support for direct getter accessors calls on ARM.


2011-02-24: Version 3.1.6

        Fixed a number of crash bugs.

        Added support for Cygwin (issue 64).

        Improved Crankshaft for x64 and ARM.

        Added Crankshaft support for stores to pixel arrays.

        Fixed issue in CPU profiler with Crankshaft.


2011-02-16: Version 3.1.5

        Change RegExp parsing to disallow /(*)/.

        Added GDB JIT support for ARM.

        Fixed several crash bugs.

        Performance improvements on the IA32 platform.


2011-02-14: Version 3.1.4

        Fixed incorrect compare of prototypes of the global object (issue
        1082).

        Fixed a bug in optimizing calls to global functions (issue 1106).

        Made optimized Function.prototype.apply safe for non-JSObject first
        arguments (issue 1128).

        Fixed an error related to element accessors on Object.prototype and
        parser errors (issue 1130).

        Fixed a bug in sorting an array with large array indices (issue 1131).

        Properly treat exceptions thrown while compiling (issue 1132).

        Fixed bug in register requirements for function.apply (issue 1133).

        Fixed a representation change bug in the Hydrogen graph construction
        (issue 1134).

        Fixed the semantics of delete on parameters (issue 1136).

        Fixed a optimizer bug related to moving instructions with side effects
        (issue 1138).

        Added support for the global object in Object.keys (issue 1150).

        Fixed incorrect value for Math.LOG10E
        (issue http://code.google.com/p/chromium/issues/detail?id=72555)

        Performance improvements on the IA32 platform.

        Implement assignment to undefined reference in ES5 Strict Mode.


2011-02-09: Version 3.1.3

        Fixed a bug triggered by functions with huge numbers of declared
        arguments.

        Fixed zap value aliasing a real object - debug mode only (issue 866).

        Fixed issue where Array.prototype.__proto__ had been set to null
        (issue 1121).

        Fixed stability bugs in Crankshaft for x86.


2011-02-07: Version 3.1.2

        Added better security checks when accessing properties via
        Object.getOwnPropertyDescriptor.

        Fixed bug in Object.defineProperty and related access bugs (issues
        992, 1083 and 1092).

        Added LICENSE.v8, LICENSE.strongtalk and LICENSE.valgrind to ease
        copyright notice generation for embedders.


2011-02-02: Version 3.1.1

        Perform security checks before fetching the value in
        Object.getOwnPropertyDescriptor.

        Fixed a bug in Array.prototype.splice triggered by passing no
        arguments.

        Fixed bugs in -0 in arithmetic and in Math.pow.

        Fixed bugs in the register allocator and in switching from optimized
        to unoptimized code.


2011-01-31: Version 3.1.0

        Performance improvements on all platforms.


2011-01-28: Version 3.0.12

        Added support for strict mode parameter and object property
        validation.

        Fixed a couple of crash bugs.


2011-01-25: Version 3.0.11

        Fixed a bug in deletion of lookup slots that could cause global
        variables to be accidentally deleted (http://crbug.com/70066).

        Added support for strict mode octal literal verification.

        Fixed a couple of crash bugs (issues 1070 and 1071).


2011-01-24: Version 3.0.10

        Fixed External::Wrap for 64-bit addresses (issue 1037).

        Fixed incorrect .arguments variable proxy handling in the full
        code generator (issue 1060).

        Introduced partial strict mode support.

        Changed formatting of recursive error messages to match Firefox and
        Safari (issue http://crbug.com/70334).

        Fixed incorrect rounding for float-to-integer conversions for external
        array types, which implement the Typed Array spec
        (issue http://crbug.com/50972).

        Performance improvements on the IA32 platform.


2011-01-19: Version 3.0.9

        Added basic GDB JIT Interface integration.

        Make invalid break/continue statements a syntax error instead of a
        runtime error.


2011-01-17: Version 3.0.8

        Exposed heap size limit to the heap statistics gathered by
        the GetHeapStatistics API.

        Wrapped external pointers more carefully (issue 1037).

        Hardened the implementation of error objects to avoid setters
        intercepting the properties set then throwing an error.

        Avoided trashing the FPSCR when calculating Math.floor on ARM.

        Performance improvements on the IA32 platform.


2011-01-10: Version 3.0.7

        Stopped calling inherited setters when creating object literals
        (issue 1015).

        Changed interpretation of malformed \c? escapes in RegExp to match
        JSC.

        Enhanced the command-line debugger interface and fixed some minor
        bugs in the debugger.

        Performance improvements on the IA32 platform.


2011-01-05: Version 3.0.6

        Allowed getters and setters on JSArray elements (issue 900).

        Stopped JSON objects from hitting inherited setters (part of
        issue 1015).

        Allowed numbers and strings as names of getters/setters in object
        initializer (issue 820).

        Added use_system_v8 option to gyp (off by default), to make it easier
        for Linux distributions to ship with system-provided V8 library.

        Exported external array data accessors (issue 1016).

        Added labelled thread names to help with debugging (on Linux).


2011-01-03: Version 3.0.5

        Fixed a couple of cast errors for gcc-3.4.3.

        Performance improvements in GC and IA32 code generator.


2010-12-21: Version 3.0.4

        Added Date::ResetCache() to the API so that the cached values in the
        Date object can be reset to allow live DST / timezone changes.

        Extended existing support for printing (while debugging) the contents
        of objects.  Added support for printing objects from release builds.

        Fixed V8 issues 989, 1006, and 1007.


2010-12-17: Version 3.0.3

        Reapplied all changes for version 3.0.1.

        Improved debugger protocol for remote debugging.

        Added experimental support for using gyp to generate build files
        for V8.

        Fixed implementation of String::Write in the API (issue 975).


2010-12-15: Version 3.0.2

        Revert version 3.0.1 and patch 3.0.1.1.


2010-12-13: Version 3.0.1

        Added support for an experimental internationalization API as an
        extension.  This extension is disabled by default but can be enabled
        when building V8.  The ECMAScript internationalization strawman is
        at http://wiki.ecmascript.org/doku.php?id=strawman:i18n_api.

        Made RegExp character class parsing stricter.  This mirrors a change
        to RegExp parsing in WebKit.

        Fixed a bug in Object.defineProperty when used to change attributes
        of an existing property.  It incorrectly set the property value to
        undefined (issue 965).

        Fixed several different compilation failures on various platforms
        caused by the 3.0.0 release.

        Optimized Math.pow so it can work on unboxed doubles.

        Sped up quoting of JSON strings by removing one traversal of the
        string.


2010-12-07: Version 3.0.0

        Improved performance by (partially) addressing issue 957 on
        IA-32. Still needs more work for the other architectures.


2010-11-29: Version 2.5.9

        Fixed crashes during GC caused by partially initialize heap
        objects.

        Fixed bug in process sample that caused memory leaks.

        Improved performance on ARM by implementing missing stubs and
        inlining.

        Improved heap profiler support.

        Added separate seeding on Windows of the random number generator
        used internally by the compiler (issue 936).

        Exposed API for getting the name of the function used to construct
        an object.

        Fixed date parser to handle one and two digit millisecond
        values (issue 944).

        Fixed number parsing to disallow space between sign and
        digits (issue 946).


2010-11-23: Version 2.5.8

        Removed dependency on Gay's dtoa.

        Improved heap profiler precision and speed.

        Reduced overhead of callback invocations on ARM.


2010-11-18: Version 2.5.7

        Fixed obscure evaluation order bug (issue 931).

        Split the random number state between JavaScript and the private API.

        Fixed performance bug causing GCs when generating stack traces on
        code from very large scripts.

        Fixed bug in parser that allowed (foo):42 as a labelled statement
        (issue 918).

        Provide more accurate results about used heap size via
        GetHeapStatistics.

        Allow build-time customization of the max semispace size.

        Made String.prototype.split honor limit when separator is empty
        (issue 929).

        Added missing failure check after expecting an identifier in
        preparser (Chromium issue 62639).


2010-11-10: Version 2.5.6

        Added support for VFP rounding modes to the ARM simulator.

        Fixed multiplication overflow bug (issue 927).

        Added a limit for the amount of executable memory (issue 925).


2010-11-08: Version 2.5.5

        Added more aggressive GC of external objects in near out-of-memory
        situations.

        Fixed a bug that gave the incorrect result for String.split called
        on the empty string (issue 924).


2010-11-03: Version 2.5.4

        Improved V8 VFPv3 runtime detection to address issue 914.


2010-11-01: Version 2.5.3

        Fixed a bug that prevents constants from overwriting function values
        in object literals (issue 907).

        Fixed a bug with reporting of impossible nested calls of DOM functions
        (issue http://crbug.com/60753).


2010-10-27: Version 2.5.2

        Improved sampler resolution on Linux.

        Allowed forcing the use of a simulator from the build script
        independently of the host architecture.

        Fixed FreeBSD port (issue 912).

        Made windows-tick-processor respect D8_PATH.

        Implemented --noinline-new flag fully on IA32, X64 and ARM platforms.


2010-10-20: Version 2.5.1

        Fixed bug causing spurious out of memory exceptions
        (issue http://crbug.com/54580).

        Fixed compilation error on Solaris platform (issue 901).

        Fixed error in strtod (string to floating point number conversion)
        due to glibc's use of 80-bit floats in the FPU on 32-bit linux.

        Adjusted randomized allocations of executable memory to have 64k
        granularity (issue http://crbug.com/56036).

        Supported profiling using kernel perf_events on linux.  Added ll_prof
        script to tools and --ll-prof flag to V8.


2010-10-18: Version 2.5.0

        Fixed bug in cache handling of lastIndex on global regexps
        (issue http://crbug.com/58740).

        Added USE_SIMULATOR macro that explicitly indicates that we wish to use
        the simulator as the execution engine (by Mark Lam <mark.lam@palm.com>
        from Hewlett-Packard Development Company, LP).

        Fixed compilation error on ARM with gcc 4.4 (issue 894).


2010-10-13: Version 2.4.9

        Fixed a bug in the handling of conditional expressions in test
        contexts in compiler for top-level code.

        Added "//@ sourceURL" information to the StackTrace API.

        Exposed RegExp construction through the API.


2010-10-04: Version 2.4.8

        Fixed a bug in ResumeProfilerEx causing it to not always write out the
        whole snapshot (issue 868).

        Performance improvements on all platforms.


2010-09-30: Version 2.4.7

        Changed the command-line flag --max-new-space-size to be in kB and the
        flag --max-old-space-size to be in MB (previously they were in bytes).

        Added Debug::CancelDebugBreak to the debugger API.

        Fixed a bug in getters for negative numeric property names
        (https://bugs.webkit.org/show_bug.cgi?id=46689).

        Performance improvements on all platforms.


2010-09-27: Version 2.4.6

        Fixed assertion failure related to copy-on-write arrays (issue 876).

        Fixed build failure of 64-bit V8 on Windows.

        Fixed a bug in RegExp (issue http://crbug.com/52801).

        Improved the profiler's coverage to cover more functions (issue 858).

        Fixed error in shift operators on 64-bit V8
        (issue http://crbug.com/54521).


2010-09-22: Version 2.4.5

        Changed the RegExp benchmark to exercise the regexp engine on different
        inputs by scrambling the input strings.

        Fixed a bug in keyed loads on strings.

        Fixed a bug with loading global function prototypes.

        Fixed a bug with profiling RegExp calls (issue http://crbug.com/55999).

        Performance improvements on all platforms.


2010-09-15: Version 2.4.4

        Fixed bug with hangs on very large sparse arrays.

        Now tries harder to free up memory when running out of space.

        Added heap snapshots to JSON format to API.

        Recalibrated benchmarks.


2010-09-13: Version 2.4.3

        Made Date.parse properly handle TZ offsets (issue 857).

        Performance improvements on all platforms.


2010-09-08: Version 2.4.2

        Fixed GC crash bug.

        Fixed stack corruption bug.

        Fixed compilation for newer C++ compilers that found Operand(0)
        ambiguous.


2010-09-06: Version 2.4.1

        Added the ability for an embedding application to receive a callback
        when V8 allocates (V8::AddMemoryAllocationCallback) or deallocates
        (V8::RemoveMemoryAllocationCallback) from the OS.

        Fixed several JSON bugs (including issue 855).

        Fixed memory overrun crash bug triggered during V8's tick-based
        profiling.

        Performance improvements on all platforms.


2010-09-01: Version 2.4.0

        Fixed bug in Object.freeze and Object.seal when Array.prototype or
        Object.prototype are changed (issue 842).

        Updated Array.splice to follow Safari and Firefox when called
        with zero arguments.

        Fixed a missing live register when breaking at keyed loads on ARM.

        Performance improvements on all platforms.


2010-08-25: Version 2.3.11

        Fixed bug in RegExp related to copy-on-write arrays.

        Refactored tools/test.py script, including the introduction of
        VARIANT_FLAGS that allows specification of sets of flags with which
        all tests should be run.

        Fixed a bug in the handling of debug breaks in CallIC.

        Performance improvements on all platforms.


2010-08-23: Version 2.3.10

        Fixed bug in bitops on ARM.

        Build fixes for unusual compilers.

        Track high water mark for RWX memory.

        Performance improvements on all platforms.


2010-08-18: Version 2.3.9

        Fixed compilation for ARMv4 on OpenBSD/FreeBSD.

        Removed specialized handling of GCC 4.4 (issue 830).

        Fixed DST cache to take into account the suspension of DST in
        Egypt during the 2010 Ramadan (issue http://crbug.com/51855).

        Performance improvements on all platforms.


2010-08-16: Version 2.3.8

        Fixed build with strict aliasing on GCC 4.4 (issue 463).

        Fixed issue with incorrect handling of custom valueOf methods on
        string wrappers (issue 760).

        Fixed compilation for ARMv4 (issue 590).

        Improved performance.


2010-08-11: Version 2.3.7

        Reduced size of heap snapshots produced by heap profiler (issue 783).

        Introduced v8::Value::IsRegExp method.

        Fixed CPU profiler crash in start / stop sequence when non-existent
        name is passed (issue http://crbug.com/51594).

        Introduced new indexed property query callbacks API (issue 816). This
        API is guarded by USE_NEW_QUERY_CALLBACK define and is disabled
        by default.

        Removed support for object literal get/set with number/string
        property name.

        Fixed handling of JSObject::elements in CalculateNetworkSize
        (issue 822).

        Allowed compiling with strict aliasing enabled on GCC 4.4 (issue 463).


2010-08-09: Version 2.3.6

        RegExp literals create a new object every time they are evaluated
        (issue 704).

        Object.seal and Object.freeze return the modified object (issue 809).

        Fixed building using GCC 4.4.4.


2010-08-04: Version 2.3.5

        Added support for ES5 property names. Object initialisers and
        dot-notation property access now allows keywords. Also allowed
        non-identifiers after "get" or "set" in an object initialiser.

        Randomized the addresses of allocated executable memory on Windows.


2010-08-02: Version 2.3.4

        Fixed problems in implementation of ES5 function.prototype.bind.

        Fixed error when using apply with arguments object on ARM (issue 784).

        Added setting of global flags to debugger protocol.

        Fixed an error affecting cached results of sin and cos (issue 792).

        Removed memory leak from a boundary case where V8 is not initialized.

        Fixed issue where debugger could set breakpoints outside the body
        of a function.

        Fixed issue in debugger when using both live edit and step in features.

        Added Number-letter (Nl) category to Unicode tables.  These characters
        can now be used in identifiers.

        Fixed an assert failure on X64 (issue 806).

        Performance improvements on all platforms.


2010-07-26: Version 2.3.3

        Fixed error when building the d8 shell in a fresh checkout.

        Implemented Function.prototype.bind (ES5 15.3.4.5).

        Fixed an error in inlined stores on ia32.

        Fixed an error when setting a breakpoint at the end of a function
        that does not end with a newline character.

        Performance improvements on all platforms.


2010-07-21: Version 2.3.2

        Fixed compiler warnings when building with LLVM.

        Fixed a bug with for-in applied to strings (issue 785).

        Performance improvements on all platforms.


2010-07-19: Version 2.3.1

        Fixed compilation and linking with V8_INTERPRETED_REGEXP flag.

        Fixed bug related to code flushing while compiling a lazy
        compilable function (issue http://crbug.com/49099).

        Performance improvements on all platforms.


2010-07-15: Version 2.3.0

        Added ES5 Object.seal and Object.isSealed.

        Added debugger API for scheduling debugger commands from a
        separate thread.


2010-07-14: Version 2.2.24

        Added API for capturing stack traces for uncaught exceptions.

        Fixed crash bug when preparsing from a non-external V8 string
        (issue 775).

        Fixed JSON.parse bug causing input not to be converted to string
        (issue 764).

        Added ES5 Object.freeze and Object.isFrozen.

        Performance improvements on all platforms.


2010-07-07: Version 2.2.23

        API change: Convert Unicode code points outside the basic multilingual
        plane to the replacement character.  Previous behavior was to silently
        truncate the value to 16 bits.

        Fixed crash: handle all flat string types in regexp replace.

        Prevent invalid pre-parsing data passed in through the API from
        crashing V8.

        Performance improvements on all platforms.


2010-07-05: Version 2.2.22

        Added ES5 Object.isExtensible and Object.preventExtensions.

        Enabled building V8 as a DLL.

        Fixed a bug in date code where -0 was not interpreted as 0
        (issue 736).

        Performance improvements on all platforms.


2010-06-30: Version 2.2.21

        Fixed bug in externalizing some ASCII strings (Chromium issue 47824).

        Updated JSON.stringify to floor the space parameter (issue 753).

        Updated the Mozilla test expectations to the newest version.

        Updated the ES5 Conformance Test expectations to the latest version.

        Updated the V8 benchmark suite.

        Provide actual breakpoints locations in response to setBreakpoint
        and listBreakpoints requests.


2010-06-28: Version 2.2.20

        Fixed bug with for-in on x64 platform (issue 748).

        Fixed crash bug on x64 platform (issue 756).

        Fixed bug in Object.getOwnPropertyNames. (chromium issue 41243).

        Fixed a bug on ARM that caused the result of 1 << x to be
        miscalculated for some inputs.

        Performance improvements on all platforms.


2010-06-23: Version 2.2.19

        Fixed bug that causes the build to break when profillingsupport=off
        (issue 738).

        Added expose-externalize-string flag for testing extensions.

        Resolve linker issues with using V8 as a DLL causing a number of
        problems with unresolved symbols.

        Fixed build failure for cctests when ENABLE_DEBUGGER_SUPPORT is not
        defined.

        Performance improvements on all platforms.


2010-06-16: Version 2.2.18

        Added API functions to retrieve information on indexed properties
        managed by the embedding layer.  Fixes bug 737.

        Made ES5 Object.defineProperty support array elements.  Fixes bug 619.

        Added heap profiling to the API.

        Removed old named property query from the API.

        Incremental performance improvements.


2010-06-14: Version 2.2.17

        Improved debugger support for stepping out of functions.

        Incremental performance improvements.


2010-06-09: Version 2.2.16

        Removed the SetExternalStringDiposeCallback API. Changed the
        disposal of external string resources to call a virtual Dispose
        method on the resource.

        Added support for more precise break points when debugging and
        stepping.

        Memory usage improvements on all platforms.


2010-06-07: Version 2.2.15

        Added an API to control the disposal of external string resources.

        Added missing initialization of a couple of variables which makes
        some compilers complaint when compiling with -Werror.

        Improved performance on all platforms.


2010-06-02: Version 2.2.14

        Fixed a crash in code generated for String.charCodeAt.

        Fixed a compilation issue with some GCC versions (issue 727).

        Performance optimizations on x64 and ARM platforms.


2010-05-31: Version 2.2.13

        Implemented Object.getOwnPropertyDescriptor for element indices and
        strings (issue 599).

        Fixed bug for windows 64 bit C calls from generated code.

        Added new scons flag unalignedaccesses for arm builds.

        Performance improvements on all platforms.


2010-05-26: Version 2.2.12

        Allowed accessors to be defined on objects rather than just object
        templates.

        Changed the ScriptData API.


2010-05-21: Version 2.2.11

        Fixed crash bug in liveedit on 64 bit.

        Use 'full compiler' when debugging is active.  This should increase
        the density of possible break points, making single step more fine
        grained.  This will only take effect for functions compiled after
        debugging has been started, so recompilation of all functions is
        required to get the full effect.  IA32 and x64 only for now.

        Misc. fixes to the Solaris build.

        Added new flags --print-cumulative-gc-stat and --trace-gc-nvp.

        Added filtering of CPU profiles by security context.

        Fixed crash bug on ARM when running without VFP2 or VFP3.

        Incremental performance improvements in all backends.


2010-05-17: Version 2.2.10

        Performance improvements in the x64 and ARM backends.


2010-05-10: Version 2.2.9

        Allowed Object.create to be called with a function (issue 697).

        Fixed bug with Date.parse returning a non-NaN value when called on a
        non date string (issue 696).

        Allowed unaligned memory accesses on ARM targets that support it (by
        Subrato K De of CodeAurora <subratokde@codeaurora.org>).

        C++ API for retrieving JavaScript stack trace information.


2010-05-05: Version 2.2.8

        Performance improvements in the x64 and ARM backends.


2010-05-03: Version 2.2.7

        Added support for ES5 date time string format to Date.parse.

        Performance improvements in the x64 backend.


2010-04-28: Version 2.2.6

        Added "amd64" as recognized architecture in scons build script
        (by Ryan Dahl <coldredlemur@gmail.com>).

        Fixed bug in String search and replace with very simple RegExps.

        Fixed bug in RegExp containing "\b^".

        Performance improvements on all platforms.


2010-04-26: Version 2.2.5

        Various performance improvements (especially for ARM and x64)

        Fixed bug in CPU profiling (http://crbug.com/42137)

        Fixed a bug with the natives cache.

        Fixed two bugs in the ARM code generator that can cause
        wrong calculations.

        Fixed a bug that may cause a wrong result for shift operations.


2010-04-21: Version 2.2.4

        Fixed warnings on arm on newer GCC versions.

        Fixed a number of minor bugs.

        Performance improvements on all platforms.


2010-04-14: Version 2.2.3

        Added stack command and mem command to ARM simulator debugger.

        Fixed scons snapshot and ARM build, and Windows X64 build issues.

        Performance improvements on all platforms.


2010-04-12: Version 2.2.2

        Introduced new profiler API.

        Fixed random number generator to produce full 32 random bits.


2010-04-06: Version 2.2.1

        Debugger improvements.

        Fixed minor bugs.


2010-03-29: Version 2.2.0

        Fixed a few minor bugs.

        Performance improvements for string operations.


2010-03-26: Version 2.1.10

        Fixed scons build issues.

        Fixed a couple of minor bugs.


2010-03-25: Version 2.1.9

        Added API support for reattaching a global object to a context.

        Extended debugger API with access to the internal debugger context.

        Fixed Chromium crashes (issues http://crbug.com/39128 and
        http://crbug.com/39160)


2010-03-24: Version 2.1.8

        Added fine-grained garbage collection callbacks to the API.

        Performance improvements on all platforms.


2010-03-22: Version 2.1.7

        Fixed issue 650.

        Fixed a bug where __proto__ was sometimes enumerated (issue 646).

        Performance improvements for arithmetic operations.

        Performance improvements for string operations.

        Print script name and line number information in stack trace.


2010-03-17: Version 2.1.6

        Performance improvements for arithmetic operations.

        Performance improvements for string operations.


2010-03-10: Version 2.1.4

        Fixed code cache lookup for keyed IC's (issue http://crbug.com/37853).

        Performance improvements on all platforms.


2010-03-10: Version 2.1.3

        Added API method for context-disposal notifications.

        Added API method for accessing elements by integer index.

        Added missing implementation of Uint32::Value and Value::IsUint32
        API methods.

        Added IsExecutionTerminating API method.

        Disabled strict aliasing for GCC 4.4.

        Fixed string-concatenation bug (issue 636).

        Performance improvements on all platforms.


2010-02-23: Version 2.1.2

        Fixed a crash bug caused by wrong assert.

        Fixed a bug with register names on 64-bit V8 (issue 615).

        Performance improvements on all platforms.


2010-02-19: Version 2.1.1

        [ES5] Implemented Object.defineProperty.

        Improved profiler support.

        Added SetPrototype method in the public V8 API.

        Added GetScriptOrigin and GetScriptLineNumber methods to Function
        objects in the API.

        Performance improvements on all platforms.


2010-02-03: Version 2.1.0

        Values are now always wrapped in objects when used as a receiver.
        (issue 223).

        [ES5] Implemented Object.getOwnPropertyNames.

        [ES5] Restrict JSON.parse to only accept strings that conforms to the
        JSON grammar.

        Improvement of debugger agent (issue 549 and 554).

        Fixed problem with skipped stack frame in profiles (issue 553).

        Solaris support by Erich Ocean <erich.ocean@me.com> and Ryan Dahl
        <ry@tinyclouds.org>.

        Fixed a bug that Math.round() returns incorrect results for huge
        integers.

        Fixed enumeration order for objects created from some constructor
        functions (isue http://crbug.com/3867).

        Fixed arithmetic on some integer constants (issue 580).

        Numerous performance improvements including porting of previous IA-32
        optimizations to x64 and ARM architectures.


2010-01-14: Version 2.0.6

        Added ES5 Object.getPrototypeOf, GetOwnPropertyDescriptor,
        GetOwnProperty, FromPropertyDescriptor.

        Fixed Mac x64 build errors.

        Improved performance of some math and string operations.

        Improved performance of some regexp operations.

        Improved performance of context creation.

        Improved performance of hash tables.


2009-12-18: Version 2.0.5

        Extended to upper limit of map space to allow for 7 times as many map
        to be allocated (issue 524).

        Improved performance of code using closures.

        Improved performance of some binary operations involving doubles.


2009-12-16: Version 2.0.4

        Added ECMAScript 5 Object.create.

        Improved performance of Math.max and Math.min.

        Optimized adding of strings on 64-bit platforms.

        Improved handling of external strings by using a separate table
        instead of weak handles.  This improves garbage collection
        performance and uses less memory.

        Changed code generation for object and array literals in toplevel
        code to be more compact by doing more work in the runtime.

        Fixed a crash bug triggered when garbage collection happened during
        generation of a callback load inline cache stub.

        Fixed crash bug sometimes triggered when local variables shadowed
        parameters in functions that used the arguments object.


2009-12-03: Version 2.0.3

        Optimized handling and adding of strings, for-in and Array.join.

        Heap serialization is now non-destructive.

        Improved profiler support with information on time spend in C++
        callbacks registered through the API.

        Added commands to the debugger protocol for starting/stopping
        profiling.

        Enabled the non-optimizing compiler for top-level code.

        Changed the API to only allow strings to be set as data objects on
        Contexts and scripts to avoid potentially keeping global objects
        around for too long (issue 528).

        OpenBSD support patch by Peter Valchev <pvalchev@gmail.com>.

        Fixed bugs.


2009-11-24: Version 2.0.2

        Improved profiler support.

        Fixed bug that broke compilation of d8 with readline support.


2009-11-20: Version 2.0.1

        Fixed crash bug in String.prototype.replace.

        Reverted a change which caused Chromium interactive ui test
        failures.


2009-11-18: Version 2.0.0

        Added support for VFP on ARM.

        Added TryCatch::ReThrow method to the API.

        Reduced the size of snapshots and improved the snapshot load time.

        Improved heap profiler support.

        64-bit version now supported on Windows.

        Fixed a number of debugger issues.

        Fixed bugs.


2009-10-29: Version 1.3.18

        Reverted a change which caused crashes in RegExp replace.

        Reverted a change which caused Chromium ui_tests failure.


2009-10-28: Version 1.3.17

        Added API method to get simple heap statistics.

        Improved heap profiler support.

        Fixed the implementation of the resource constraint API so it
        works when using snapshots.

        Fixed a number of issues in the Windows 64-bit version.

        Optimized calls to API getters.

        Added valgrind notification on code modification to the 64-bit version.

        Fixed issue where we logged shared library addresses on Windows at
        startup and never used them.


2009-10-16: Version 1.3.16

        X64: Convert smis to holding 32 bits of payload.

        Introduced v8::Integer::NewFromUnsigned method.

        Added missing null check in Context::GetCurrent.

        Added trim, trimLeft and trimRight methods to String
        Patch by Jan de Mooij <jandemooij@gmail.com>

        Implement ES5 Array.isArray
        Patch by Jan de Mooij <jandemooij@gmail.com>

        Skip access checks for hidden properties.

        Added String::Concat(Handle<String> left, Handle<String> right) to the
        V8 API.

        Fixed GYP-based builds of V8.


2009-10-07: Version 1.3.15

        Expanded the maximum size of the code space to 512MB for 64-bit mode.

        Fixed a crash bug happening when starting profiling (issue
        http://crbug.com/23768).


2009-10-07: Version 1.3.14

        Added GetRealNamedProperty to the API to lookup real properties
        located on the object or in the prototype chain skipping any
        interceptors.

        Fixed the stack limits setting API to work correctly with threads. The
        stack limit now needs to be set to each thread thich is used with V8.

        Removed the high-priority flag from IdleNotification()

        Ensure V8 is initialized before locking and unlocking threads.

        Implemented a new JavaScript minifier for compressing the source of
        the built-in JavaScript. This removes non-Open Source code from Douglas
        Crockford from the project.

        Added a missing optimization in StringCharAt.

        Fixed some flaky socket tests.

        Change by Alexander Botero-Lowry to fix profiler sampling on FreeBSD
        in 64-bit mode.

        Fixed memory leaks in the thread management code.

        Fixed the result of assignment to a pixel array. The assigned value
        is now the result.

        Error reporting for invalid left-hand sides in for-in statements, pre-
        and postfix count expressions, and assignments now matches the JSC
        behavior in Safari 4.

        Follow the spec in disallowing function declarations without a name.

        Always allocate code objects within a 2 GB range. On x64 architecture
        this is used to use near calls (32-bit displacement) in Code objects.

        Optimized array construction ported to x64 and ARM architectures.

        [ES5] Changed Object.keys to return strings for element indices.


2009-09-23: Version 1.3.13

        Fixed uninitialized memory problem.

        Improved heap profiler support.


2009-09-22: Version 1.3.12

        Changed behavior of |function|.toString() on built-in functions to
        be compatible with other implementations.  Patch by Jan de Mooij.

        Added Object::IsDirty in the API.

        Optimized array construction; it is now handled purely in native
        code.

        [ES5] Made properties of the arguments array enumerable.

        [ES5] Added test suite adapter for the es5conform test suite.

        [ES5] Added Object.keys function.


2009-09-15: Version 1.3.11

        Fixed crash in error reporting during bootstrapping.

        Optimized generated IA32 math code by using SSE2 instructions when
        available.

        Implemented missing pieces of debugger infrastructure on ARM.  The
        debugger is now fully functional on ARM.

        Made 'hidden' the default visibility for gcc.


2009-09-09: Version 1.3.10

        Fixed profiler on Mac in 64-bit mode.

        Optimized creation of objects from simple constructor functions on
        ARM.

        Fixed a number of debugger issues.

        Reduced the amount of memory consumed by V8.


2009-09-02: Version 1.3.9

        Optimized stack guard checks on ARM.

        Optimized API operations by inlining more in the API.

        Optimized creation of objects from simple constructor functions.

        Enabled a number of missing optimizations in the 64-bit port.

        Implemented native-code support for regular expressions on ARM.

        Stopped using the 'sahf' instruction on 64-bit machines that do
        not support it.

        Fixed a bug in the support for forceful termination of JavaScript
        execution.


2009-08-26: Version 1.3.8

        Changed the handling of idle notifications to allow idle
        notifications when V8 has not yet been initialized.

        Fixed ARM simulator compilation problem on Windows.


2009-08-25: Version 1.3.7

        Reduced the size of generated code on ARM platforms by reducing
        the size of constant pools.

        Changed build files to not include the 'ENV' user environment
        variable in the build environment.

        Changed the handling of idle notifications.


2009-08-21: Version 1.3.6

        Added support for forceful termination of JavaScript execution.

        Added low memory notification to the API. The embedding host can signal
        a low memory situation to V8.

        Changed the handling of global handles (persistent handles in the API
        sense) to avoid issues regarding allocation of new global handles
        during weak handle callbacks.

        Changed the growth policy of the young space.

        Fixed a GC issue introduced in version 1.3.5.


2009-08-19: Version 1.3.5

        Optimized initialization of some arrays in the builtins.

        Fixed mac-nm script to support filenames with spaces.

        Support for using the V8 profiler when V8 is embedded in a Windows DLL.

        Changed typeof RegExp from 'object' to 'function' for compatibility.
        Fixed bug where regexps were not callable across contexts.

        Added context independent script compilation to the API.

        Added API call to get the stack trace for an exception.

        Added API for getting object mirrors.

        Made sure that SSE3 instructions are used whenever possible even when
        running off a snapshot generated without using SSE3 instructions.

        Tweaked the handling of the initial size and growth policy of the heap.

        Added native code generation for RegExp to 64-bit version.

        Added JavaScript debugger support to 64-bit version.


2009-08-13: Version 1.3.4

        Added a readline() command to the d8 shell.

        Fixed bug in json parsing.

        Added idle notification to the API and reduced memory on idle
        notifications.


2009-08-12: Version 1.3.3

        Fixed issue 417: incorrect %t placeholder expansion.

        Added .gitignore file similar to Chromium's one.

        Fixed SConstruct file to build with new logging code for Android.

        API: added function to find instance of template in prototype
        chain.  Inlined Object::IsInstanceOf.

        Land change to notify valgrind when we modify code on x86.

        Added api call to determine whether a string can be externalized.

        Added a write() command to d8.


2009-08-05: Version 1.3.2

        Started new compiler infrastructure for two-pass compilation using a
        control flow graph constructed from the AST.

        Profiler stack sampling for X64.

        Safe handling of NaN to Posix platform-dependent time functions.

        Added a new profiler control API to unify controlling various aspects
        of profiling.

        Fixed issue 392.


2009-07-30: Version 1.3.1

        Speed improvements to accessors and interceptors.

        Added support for capturing stack information on custom errors.

        Added support for morphing an object into a pixel array where its
        indexed properties are stored in an external byte array. Values written
        are always clamped to the 0..255 interval.

        Profiler on x64 now handles C/C++ functions from shared libraries.

        Changed the debugger to avoid stepping into function.call/apply if the
        function is a built-in.

        Initial implementation of constructor heap profile for JS objects.

        More fine grained control of profiling aspects through the API.

        Optimized the called as constructor check for API calls.


2009-07-27: Version 1.3.0

        Allowed RegExp objects to be called as functions (issue 132).

        Fixed issue where global property cells would escape after
        detaching the global object; see http://crbug.com/16276.

        Added support for stepping into setters and getters in the
        debugger.

        Changed the debugger to avoid stopping in its own JavaScript code
        and in the code of built-in functions.

        Fixed issue 345 by avoiding duplicate escaping labels.

        Fixed ARM code generator crash in short-circuited boolean
        expressions and added regression tests.

        Added an external allocation limit to avoid issues where small V8
        objects would hold on to large amounts of external memory without
        causing garbage collections.

        Finished more of the inline caching stubs for x64 targets.


2009-07-13: Version 1.2.14

        Added separate paged heap space for global property cells and
        avoid updating the write barrier when storing into them.

        Improved peep-hole optimization on ARM platforms by not emitting
        unnecessary debug information.

        Re-enabled ICs for loads and calls that skip a global object
        during lookup through the prototype chain.

        Allowed access through global proxies to use ICs.

        Fixed issue 401.


2009-07-09: Version 1.2.13

        Fixed issue 397, issue 398, and issue 399.

        Added support for breakpoint groups.

        Fixed bugs introduced with the new global object representation.

        Fixed a few bugs in the ARM code generator.


2009-07-06: Version 1.2.12

        Added stack traces collection to Error objects accessible through
        the e.stack property.

        Changed RegExp parser to use a recursive data structure instead of
        stack-based recursion.

        Optimized Date object construction and string concatenation.

        Improved performance of div, mod, and mul on ARM platforms.


2009-07-02: Version 1.2.11

        Improved performance on IA-32 and ARM.

        Fixed profiler sampler implementation on Mac OS X.

        Changed the representation of global objects to improve
        performance of adding a lot of new properties.


2009-06-29: Version 1.2.10

        Improved debugger support.

        Fixed bug in exception message reporting (issue 390).

        Improved overall performance.


2009-06-23: Version 1.2.9

        Improved math performance on ARM.

        Fixed profiler name-inference bug.

        Fixed handling of shared libraries in the profiler tick processor
        scripts.

        Fixed handling of tests that time out in the test scripts.

        Fixed compilation on MacOS X version 10.4.

        Fixed two bugs in the regular expression engine.

        Fixed a bug in the string type inference.

        Fixed a bug in the handling of 'constant function' properties.

        Improved overall performance.


2009-06-16: Version 1.2.8

        Optimized math on ARM platforms.

        Fixed two crash bugs in the handling of getters and setters.

        Improved the debugger support by adding scope chain information.

        Improved the profiler support by compressing log data transmitted
        to clients.

        Improved overall performance.


2009-06-08: Version 1.2.7

        Improved debugger and profiler support.

        Reduced compilation time by improving the handling of deferred
        code.

        Optimized interceptor accesses where the property is on the object
        on which the interceptors is attached.

        Fixed compilation problem on GCC 4.4 by changing the stack
        alignment to 16 bytes.

        Fixed handle creation to follow stric aliasing rules.

        Fixed compilation on FreeBSD.

        Introduced API for forcing the deletion of a property ignoring
        interceptors and attributes.


2009-05-29: Version 1.2.6

        Added a histogram recording hit rates at different levels of the
        compilation cache.

        Added stack overflow check for the RegExp analysis phase. Previously a
        very long regexp graph could overflow the stack with recursive calls.

        Use a dynamic buffer when collecting log events in memory.

        Added start/stop events to the profiler log.

        Fixed infinite loop which could happen when setting a debug break while
        executing a RegExp compiled to native code.

        Fixed handling of lastIndexOf called with negative index (issue 351).

        Fixed irregular crash in profiler test (issue 358).

        Fixed compilation issues with some versions of gcc.


2009-05-26: Version 1.2.5

        Fixed bug in initial boundary check for Boyer-Moore text
        search (issue 349).

        Fixed compilation issues with MinGW and gcc 4.3+ and added support
        for armv7 and cortex-a8 architectures.  Patches by Lei Zhang and
        Craig Schlenter.

        Added a script cache to the debugger.

        Optimized compilation performance by improving internal data
        structures and avoiding expensive property load optimizations for
        code that's infrequently executed.

        Exposed the calling JavaScript context through the static API
        function Context::GetCalling().


2009-05-18: Version 1.2.4

        Improved performance of floating point number allocation for ARM
        platforms.

        Fixed crash when using the instanceof operator on functions with
        number values in their prototype chain (issue 341).

        Optimized virtual frame operations in the code generator to speed
        up compilation time and allocated the frames in the zone.

        Made the representation of virtual frames and jump targets in the
        code generator much more compact.

        Avoided linear search for non-locals in scope code when resolving
        variables inside with and eval scopes.

        Optimized lexical scanner by dealing with whitespace as part of
        the token scanning instead of as a separate step before it.

        Changed the scavenging collector so that promoted objects do not
        reside in the old generation while their remembered set is being
        swept for pointers into the young generation.

        Fixed numeric overflow handling when compiling count operations.


2009-05-11: Version 1.2.3

        Fixed bug in reporting of out-of-memory situations.

        Introduced hidden prototypes on certain builtin prototype objects
        such as String.prototype to emulate JSC's behavior of restoring
        the original function when deleting functions from those prototype
        objects.

        Fixed crash bug in the register allocator.


2009-05-04: Version 1.2.2

        Fixed bug in array sorting for sparse arrays (issue 326).

        Added support for adding a soname when building a shared library
        on Linux (issue 151).

        Fixed bug caused by morphing internal ASCII strings to external
        two-byte strings.  Slices over ASCII strings have to forward ASCII
        checks to the underlying buffer string.

        Allowed API call-as-function handlers to be called as
        constructors.

        Fixed a crash bug where an external string was disposed but a
        slice of the external string survived as a symbol.


2009-04-27: Version 1.2.1

        Added EcmaScript 5 JSON object.

        Fixed bug in preemption support on ARM.


2009-04-23: Version 1.2.0

        Optimized floating-point operations on ARM.

        Added a number of extensions to the debugger API.

        Changed the enumeration order for unsigned integer keys to always
        be numerical order.

        Added a "read" extension to the shell sample.

        Added support for Array.prototype.reduce and
        Array.prototype.reduceRight.

        Added an option to the SCons build to control Microsoft Visual C++
        link-time code generation.

        Fixed a number of bugs (in particular issue 315, issue 316,
        issue 317 and issue 318).


2009-04-15: Version 1.1.10

        Fixed crash bug that occurred when loading a const variable in the
        presence of eval.

        Allowed using with and eval in registered extensions in debug mode
        by fixing bogus assert.

        Fixed the source position for function returns to enable the
        debugger to break there.


2009-04-14: Version 1.1.9

        Made the stack traversal code in the profiler robust by avoiding
        to look into the heap.

        Added name inferencing for anonymous functions to facilitate
        debugging and profiling.

        Re-enabled stats timers in the developer shell (d8).

        Fixed issue 303 by avoiding to shortcut cons-symbols.


2009-04-11: Version 1.1.8

        Changed test-debug/ThreadedDebugging to be non-flaky (issue 96).

        Fixed step-in handling for Function.prototype.apply and call in
        the debugger (issue 269).

        Fixed v8::Object::DeleteHiddenValue to not bail out when there
        are no hidden properties.

        Added workaround for crash bug, where external symbol table
        entries with deleted resources would lead to NPEs when looking
        up in the symbol table.


2009-04-07: Version 1.1.7

        Added support for easily importing additional environment
        variables into the SCons build.

        Optimized strict equality checks.

        Fixed crash in indexed setters on objects without a corresponding
        getter (issue 298).

        Re-enabled script compilation cache.


2009-04-01: Version 1.1.6

        Reverted an unsafe code generator change.


2009-04-01: Version 1.1.5

        Fixed bug that caused function literals to not be optimized as
        much as other functions.

        Improved profiler support.

        Fixed a crash bug in connection with debugger unloading.

        Fixed a crash bug in the code generator caused by losing the
        information that a frame element was copied.

        Fixed an exception propagation bug that could cause non-null
        return values when exceptions were thrown.


2009-03-30: Version 1.1.4

        Optimized String.prototype.match.

        Improved the stack information in profiles.

        Fixed bug in ARM port making it possible to compile the runtime
        system for thumb mode again.

        Implemented a number of optimizations in the code generator.

        Fixed a number of memory leaks in tests.

        Fixed crash bug in connection with script source code and external
        strings.


2009-03-24: Version 1.1.3

        Fixed assertion failures in compilation of loop conditions.

        Removed STL dependency from developer shell (d8).

        Added infrastructure for protecting the V8 heap from corruption
        caused by memory modifications from the outside.


2009-03-24: Version 1.1.2

        Improved frame merge code generated by the code generator.

        Optimized String.prototype.replace.

        Implemented __defineGetter__ and __defineSetter__ for properties
        with integer keys on non-array objects.

        Improved debugger and profiler support.

        Fixed a number of portability issues to allow compilation for
        smaller ARM devices.

        Exposed object cloning through the API.

        Implemented hidden properties.  This is used to expose an identity
        hash for objects through the API.

        Implemented restarting of regular expressions if their input
        string changes representation during preemption.

        Fixed a code generator bug that could cause assignments in loops
        to be ignored if using continue to break out of the loop (issue
        284).


2009-03-12: Version 1.1.1

        Fixed an assertion in the new compiler to take stack overflow
        exceptions into account.

        Removed exception propagation code that could cause crashes.

        Fixed minor bug in debugger line number computations.

        8-byte align the C stack on Linux and Windows to speed up floating
        point computations.


2009-03-12: Version 1.1.0

        Improved code generation infrastructure by doing simple register
        allocation and constant folding and propagation.

        Optimized regular expression matching by avoiding to create
        intermediate string arrays and by flattening nested array
        representations of RegExp data.

        Traverse a few stack frames when recording profiler samples to
        include partial call graphs in the profiling output.

        Added support for using OProfile to profile generated code.

        Added remote debugging support to the D8 developer shell.

        Optimized creation of nested literals like JSON objects.

        Fixed a bug in garbage collecting unused maps and turned it on by
        default (--collect-maps).

        Added support for running tests under Valgrind.


2009-02-27: Version 1.0.3

        Optimized double-to-integer conversions in bit operations by using
        SSE3 instructions if available.

        Optimized initialization sequences that store to multiple
        properties of the same object.

        Changed the D8 debugger frontend to use JSON messages.

        Force garbage collections when disposing contexts.

        Align code objects at 32-byte boundaries.


2009-02-25: Version 1.0.2

        Improved profiling support by performing simple call stack
        sampling for ticks and by fixing a bug in the logging of code
        addresses.

        Fixed a number of debugger issues.

        Optimized code that uses eval.

        Fixed a couple of bugs in the regular expression engine.

        Reduced the size of generated code for certain regular expressions.

        Removed JSCRE completely.

        Fixed issue where test could not be run if there was a dot in the
        checkout path.


2009-02-13: Version 1.0.1

        Fixed two crash-bugs in irregexp (issue 231 and 233).

        Fixed a number of minor bugs (issue 87, 227 and 228).

        Added support for morphing strings to external strings on demand
        to avoid having to create copies in the embedding code.

        Removed experimental support for external symbol callbacks.


2009-02-09: Version 1.0.0

        Fixed crash-bug in the code generation for case independent 16 bit
        backreferences.

        Made shells more robust in the presence of string conversion
        failures (issue 224).

        Fixed a potential infinite loop when attempting to resolve
        eval (issue 221).

        Miscellaneous fixes to the new regular expression engine.

        Reduced binary by stripping unneeded text from JavaScript library and
        minifying some JavaScript files.


2009-01-27: Version 0.4.9

        Enabled new regular expression engine.

        Made a number of changes to the debugger protocol.

        Fixed a number of bugs in the preemption support.

        Added -p option to the developer shell to run files in parallel
        using preemption.

        Fixed a number of minor bugs (including issues 176, 187, 189, 192,
        193, 198 and 201).

        Fixed a number of bugs in the serialization/deserialization
        support for the ARM platform.


2009-01-19: Version 0.4.8.1

        Minor patch to debugger support.


2009-01-16: Version 0.4.8

        Fixed string length bug on ARM (issue 171).

        Made most methods in the API const.

        Optimized object literals by improving data locality.

        Fixed bug that caused incomplete functions to be cached in case of
        stack overflow exceptions.

        Fixed bugs that caused catch variables and variables introduced by
        eval to behave incorrectly when using accessors (issues 186, 190
        and 191).


2009-01-06: Version 0.4.7

        Minor bugfixes and optimizations.

        Added command line debugger to D8 shell.

        Fixed subtle bug that caused the wrong 'this' to be used when
        calling a caught function in a catch clause.

        Inline array loads within loops directly in the code instead of
        always calling a stub.


2008-12-11: Version 0.4.6

        Fixed exception reporting bug where certain exceptions were
        incorrectly reported as uncaught.

        Improved the memory allocation strategy used during compilation to
        make running out of memory when compiling huge scripts less
        likely.

        Optimized String.replace by avoiding the construction of certain
        sub strings.

        Fixed bug in code generation for large switch statements on ARM.

        Fixed bug that caused V8 to change the global object template
        passed in by the user.

        Changed the API for creating object groups used during garbage
        collection.  Entire object groups are now passed to V8 instead of
        individual members of the groups.


2008-12-03: Version 0.4.5

        Added experimental API support for allocating V8 symbols as
        external strings.

        Fixed bugs in debugging support on ARM.

        Changed eval implementation to correctly detect whether or not a
        call to eval is aliased.

        Fixed bug caused by a combination of the compilation cache and
        dictionary probing in native code.  The bug caused us to sometimes
        call functions that had not yet been compiled.

        Added platform support for FreeBSD.

        Added support for building V8 on Windows with either the shared or
        static version of MSVCRT

        Added the v8::jscre namespace around the jscre functions to avoid
        link errors (duplicate symbols) when building Google Chrome.

        Added support for calling a JavaScript function with the current
        debugger execution context as its argument to the debugger
        interface.

        Changed the type of names of counters from wchar_t to char.

        Changed the Windows system call used to compute daylight savings
        time.  The system call that we used to use became four times
        slower on WinXP SP3.

        Added support in the d8 developer shell for memory-mapped counters
        and added a stats-viewer tool.

        Fixed bug in upper/lower case mappings (issue 149).


2008-11-17: Version 0.4.4

        Reduced code size by using shorter instruction encoding when
        possible.

        Added a --help option to the shell sample and to the d8 shell.

        Added visual studio project files for building the ARM simulator.

        Fixed a number of ARM simulator issues.

        Fixed bug in out-of-memory handling on ARM.

        Implemented shell support for passing arguments to a script from
        the command line.

        Fixed bug in date code that made certain date functions return -0
        instead of 0 for dates before the epoch.

        Restricted applications of eval so it can only be used in the
        context of the associated global object.

        Treat byte-order marks as whitespace characters.


2008-11-04: Version 0.4.3

        Added support for API accessors that prohibit overwriting by
        accessors defined in JavaScript code by using __defineGetter__ and
        __defineSetter__.

        Improved handling of conditionals in test status files.

        Introduced access control in propertyIsEnumerable.

        Improved performance of some string operations by caching
        information about the type of the string between operations.

        Fixed bug in fast-case code for switch statements that only have
        integer labels.


2008-10-30: Version 0.4.2

        Improved performance of Array.prototype.concat by moving the
        implementation to C++ (issue 123).

        Fixed heap growth policy to avoid growing old space to its maximum
        capacity before doing a garbage collection and fixed issue that
        would lead to artificial out of memory situations (issue 129).

        Fixed Date.prototype.toLocaleDateString to return the date in the
        same format as WebKit.

        Added missing initialization checks to debugger API.

        Added removing of unused maps during GC.


2008-10-28: Version 0.4.1

        Added caching of RegExp data in compilation cache.

        Added Visual Studio project file for d8 shell.

        Fixed function call performance regression introduced in version
        0.4.0 when splitting the global object in two parts (issue 120).

        Fixed issue 131 by checking for empty handles before throwing and
        reporting exceptions.


2008-10-23: Version 0.4.0

        Split the global object into two parts: The state holding global
        object and the global object proxy.

        Fixed bug that affected the value of an assignment to an element
        in certain cases (issue 116).

        Added GetPropertyNames functionality (issue 33) and extra Date
        functions (issue 77) to the API.

        Changed WeakReferenceCallback to take a Persistent<Value> instead
        of a Persistent<Object> (issue 101).

        Fixed issues with message reporting for exceptions in try-finally
        blocks (issues 73 and 75).

        Optimized flattening of strings and string equality checking.

        Improved Boyer-Moore implementation for faster indexOf operations.

        Added development shell (d8) which includes counters and
        completion support.

        Fixed problem with the receiver passed to functions called from
        eval (issue 124).


2008-10-16: Version 0.3.5

        Improved string hash-code distribution by excluding bit-field bits
        from the hash-code.

        Changed string search algorithm used in indexOf from KMP to
        Boyer-Moore.

        Improved the generated code for the instanceof operator.

        Improved performance of slow-case string equality checks by
        specializing the code based on the string representation.

        Improve the handling of out-of-memory situations (issue 70).

        Improved performance of strict equality checks.

        Improved profiler output to make it easier to see anonymous
        functions.

        Improved performance of slow-case keyed loads.

        Improved property access performance by allocating a number of
        properties in the front object.

        Changed the toString behavior on the built-in object constructors
        to print [native code] instead of the actual source.  Some web
        applications do not like constructors with complex toString
        results.


2008-10-06: Version 0.3.4

        Changed Array.prototype.sort to use quick sort.

        Fixed code generation issue where leaving a finally block with
        break or continue would accumulate elements on the expression
        stack (issue 86).

        Made sure that the name accessor on functions returns the expected
        names for builtin JavaScript functions and C++ callback functions.

        Added fast case code for extending the property storage array of
        JavaScript objects.

        Ported switch statement optimizations introduced in version 0.3.3
        to the ARM code generator.

        Allowed GCC to use strict-aliasing rules when compiling.

        Improved performance of arguments object allocation by taking care
        of arguments adaptor frames in the generated code.

        Updated the V8 benchmark suite to version 2.


2008-09-25: Version 0.3.3

        Improved handling of relocation information to enable more
        peep-hole optimizations.

        Optimized switch statements where all labels are constant small
        integers.

        Optimized String.prototype.indexOf for common cases.

        Fixed more build issues (issue 80).

        Fixed a couple of profiler issues.

        Fixed bug where the body of a function created using the Function
        constructor was not allowed to end with a single-line comment
        (issue 85).

        Improved handling of object literals by canonicalizing object
        literal maps.  This will allow JSON objects with the same set of
        properties to share the same map making inline caching work better
        for JSON objects.


2008-09-17: Version 0.3.2

        Generalized the EvalCache into a CompilationCache and enabled it
        for scripts too.  The current strategy is to retire all entries
        whenever a mark-sweep collection is started.

        Fixed bug where switch statements containing only a default case
        would lead to an unbalanced stack (issue 69).

        Fixed bug that made access to the function in a named function
        expression impossible in certain situations (issue 24).

        Fixed even more build issues.

        Optimized calling conventions on ARM.  The conventions on ARM and
        IA-32 now match.

        Removed static initializers for flags and counters.

        Improved inline caching behavior for uncommon cases where lazily
        loading Date and RegExp code could force certain code paths go
        megamorphic.

        Removed arguments adaption for builtins written in C++.  This
        makes Array.prototype.push and Array.prototype.pop slightly
        faster.


2008-09-11: Version 0.3.1

        Fixed a number of build issues.

        Fixed problem with missing I-cache flusing on ARM.

        Changed space layout in memory management by splitting up
        code space into old data space and code space.

        Added utf-8 conversion support to the API (issue 57).

        Optimized repeated calls to eval with the same strings.  These
        repeated calls are common in web applications.

        Added Xcode project file.

        Optimized a couple of Array operation.

        Fixed parser bug by checking for end-of-string when parsing break
        and continue (issue 35).

        Fixed problem where asian characters were not categorized as
        letters.

        Fixed bug that disallowed calling functions fetched from an array
        using a string as an array index (issue 32).

        Fixed bug where the internal field count on object templates were
        sometimes ignored (issue 54).

        Added -f option to the shell sample for compatibility with other
        engines (issue 18).

        Added source info to TryCatches in the API.

        Fixed problem where the seed for the random number generator was
        clipped in a double to unsigned int conversion.

        Fixed bug where cons string symbols were sometimes converted to
        non-symbol flat strings during GC.

        Fixed bug in error reporting when attempting to convert null to an
        object.


2008-09-04: Version 0.3.0

        Added support for running tests on the ARM simulator.

        Fixed bug in the 'in' operator where negative indices were not
        treated correctly.

        Fixed build issues on gcc-4.3.1.

        Changed Date.prototype.toLocaleTimeString to not print the
        timezone part of the time.

        Renamed debug.h to v8-debug.h to reduce the risk of name conflicts
        with user code.


2008-09-02: Version 0.2.5

        Renamed the top level directory 'public' to 'include'.

        Added 'env' option to the SCons build scripts to support
        overriding the ENV part of the build environment.  This is mostly
        to support Windows builds in cases where SCons cannot find the
        correct paths to the Windows SDK, as these paths cannot be passed
        through shell environment variables.

        Enabled "Buffer Security Check" on for the Windows SCons build and
        added the linker option /OPT:ICF as an optimization.

        Added the V8 benchmark suite to the repository.


2008-09-01: Version 0.2.4

        Included mjsunit JavaScript test suite and C++ unit tests.

        Changed the shell sample to not print the result of executing a
        script provided on the command line.

        Fixed issue when building samples on Windows using a shared V8
        library.  Added visibility option on Linux build which makes the
        generated library 18% smaller.

        Changed build system to accept multiple build modes in one build
        and generate separate objects, libraries and executables for each
        mode.

        Removed deferred negation optimization (a * -b => -(a * b)) since
        this visibly changes operand conversion order.

        Improved parsing performance by introducing stack guard in
        preparsing.  Without a stack guard preparsing always bails out
        with stack overflow.

        Changed shell sample to take flags directly from the command-line.
        Added API call that implements this.

        Added load, quit and version functions to the shell sample so it's
        easier to run benchmarks and tests.

        Fixed issue with building samples and cctests on 64-bit machines.

        Fixed bug in the runtime system where the prototype chain was not
        always searched for a setter when setting a property that does not
        exist locally.


2008-08-14: Version 0.2.3

        Improved performance of garbage collection by moving the
        function that updates pointers during compacting collection
        into the updating visitor.  This gives the compiler a better
        chance to inline and avoid a function call per (potential)
        pointer.

        Extended the shell sample with a --runtime-flags option.

        Added Visual Studio project files for the shell.cc and
        process.cc samples.


2008-08-13: Version 0.2.2

        Improved performance of garbage collection by changing the way
        we use the marking stack in the event of stack overflow during
        full garbage collection and by changing the way we mark roots.

        Cleaned up ARM version by removing top of stack caching and by
        introducing push/pop elimination.

        Cleaned up the way runtime functions are called to allow
        runtime calls with no arguments.

        Changed Windows build options to make sure that exceptions are
        disabled and that optimization flags are enabled.

        Added first version of Visual Studio project files.


2008-08-06: Version 0.2.1

        Improved performance of unary addition by avoiding runtime calls.

        Fixed the handling of '>' and '<=' to use right-to-left conversion
        and left-to-right evaluation as specified by ECMA-262.

        Fixed a branch elimination bug on the ARM platform where incorrect
        code was generated because of overly aggressive branch
        elimination.

        Improved performance of code that repeatedly assigns the same
        function to the same property of different objects with the same
        map.

        Untangled DEBUG and ENABLE_DISASSEMBLER defines.  The disassembler
        no longer expects DEBUG to be defined.

        Added platform-nullos.cc to serve as the basis for new platform
        implementations.


2008-07-30: Version 0.2.0

        Changed all text files to have native svn:eol-style.

        Added a few samples and support for building them. The samples
        include a simple shell that can be used to benchmark and test V8.

        Changed V8::GetVersion to return the version as a string.

        Added source for lazily loaded scripts to snapshots and made
        serialization non-destructive.

        Improved ARM support by fixing the write barrier code to use
        aligned loads and stores and by removing premature locals
        optimization that relied on broken support for callee-saved
        registers (removed).

        Refactored the code for marking live objects during garbage
        collection and the code for allocating objects in paged
        spaces. Introduced an abstraction for the map word of a heap-
        allocated object and changed the memory allocator to allocate
        executable memory only for spaces that may contain code objects.

        Moved StringBuilder to utils.h and ScopedLock to platform.h, where
        they can be used by debugging and logging modules. Added
        thread-safe message queues for dealing with debugger events.

        Fixed the source code reported by toString for certain builtin
        empty functions and made sure that the prototype property of a
        function is enumerable.

        Improved performance of converting values to condition flags in
        generated code.

        Merged disassembler-{arch} files.


2008-07-28: Version 0.1.4

        Added support for storing JavaScript stack traces in a stack
        allocated buffer to make it visible in shallow core dumps.
        Controlled by the --preallocate-message-memory flag which is
        disabled by default.


2008-07-25: Version 0.1.3

        Fixed bug in JSObject::GetPropertyAttributePostInterceptor where
        map transitions would count as properties.

        Allowed aliased eval invocations by treating them as evals in the
        global context. This may change in the future.

        Added support for accessing the last entered context through the
        API and renamed Context::Current to Context::GetCurrent and
        Context::GetSecurityContext to Context::GetCurrentSecurityContext.

        Fixed bug in the debugger that would cause the debugger scripts to
        be recursively loaded and changed all disabling of interrupts to
        be block-structured.

        Made snapshot data read-only to allow it to be more easily shared
        across multiple users of V8 when linked as a shared library.


2008-07-16: Version 0.1.2

        Fixed building on Mac OS X by recognizing i386 and friends as
        IA-32 platforms.

        Added propagation of stack overflow exceptions that occur while
        compiling nested functions.

        Improved debugger with support for recursive break points and
        handling of exceptions that occur in the debugger JavaScript code.

        Renamed GetInternal to GetInternalField and SetInternal to
        SetInternalField in the API and moved InternalFieldCount and
        SetInternalFieldCount from FunctionTemplate to ObjectTemplate.


2008-07-09: Version 0.1.1

        Fixed bug in stack overflow check code for IA-32 targets where a
        non-tagged value in register eax was pushed to the stack.

        Fixed potential quadratic behavior when converting strings to
        numbers.

        Fixed bug where the return value from Object::SetProperty could
        end up being the property holder instead of the written value.

        Improved debugger support by allowing nested break points and by
        dealing with stack-overflows when compiling functions before
        setting break points in them.


2008-07-03: Version 0.1.0

        Initial export.

# Local Variables:
# mode:text
# End:
