2016-06-27: Version 5.3.332

        Performance and stability improvements on all platforms.


2016-06-27: Version 5.3.331

        Performance and stability improvements on all platforms.


2016-06-27: Version 5.3.330

        [stubs] Implementing CodeStubAssembler::GetOwnProperty() (issue 4911).

        Performance and stability improvements on all platforms.


2016-06-27: Version 5.3.329

        Performance and stability improvements on all platforms.


2016-06-27: Version 5.3.328

        Performance and stability improvements on all platforms.


2016-06-27: Version 5.3.327

        Performance and stability improvements on all platforms.


2016-06-27: Version 5.3.326

        Performance and stability improvements on all platforms.


2016-06-27: Version 5.3.325

        Performance and stability improvements on all platforms.


2016-06-26: Version 5.3.324

        Performance and stability improvements on all platforms.


2016-06-26: Version 5.3.323

        Performance and stability improvements on all platforms.


2016-06-26: Version 5.3.322

        Performance and stability improvements on all platforms.


2016-06-26: Version 5.3.321

        Performance and stability improvements on all platforms.


2016-06-24: Version 5.3.320

        Performance and stability improvements on all platforms.


2016-06-24: Version 5.3.319

        Performance and stability improvements on all platforms.


2016-06-24: Version 5.3.318

        Performance and stability improvements on all platforms.


2016-06-24: Version 5.3.317

        Performance and stability improvements on all platforms.


2016-06-24: Version 5.3.316

        Performance and stability improvements on all platforms.


2016-06-23: Version 5.3.315

        Performance and stability improvements on all platforms.


2016-06-23: Version 5.3.314

        Performance and stability improvements on all platforms.


2016-06-23: Version 5.3.313

        Performance and stability improvements on all platforms.


2016-06-23: Version 5.3.312

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.311

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.310

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.309

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.308

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.307

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.306

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.305

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.304

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.303

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.302

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.301

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.300

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.299

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.298

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.297

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.296

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.295

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.294

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.293

        Performance and stability improvements on all platforms.


2016-06-22: Version 5.3.292

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.291

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.290

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.289

        Reland: change most cases of variable redeclaration from TypeError to
        SyntaxError (issue 4955).

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.288

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.287

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.286

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.285

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.284

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.283

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.282

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.281

        Performance and stability improvements on all platforms.


2016-06-21: Version 5.3.280

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.279

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.278

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.277

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.276

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.275

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.274

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.273

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.272

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.271

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.270

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.269

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.268

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.267

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.266

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.265

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.264

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.263

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.262

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.261

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.260

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.259

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.258

        Performance and stability improvements on all platforms.


2016-06-20: Version 5.3.257

        Performance and stability improvements on all platforms.


2016-06-17: Version 5.3.256

        Performance and stability improvements on all platforms.


2016-06-17: Version 5.3.255

        Performance and stability improvements on all platforms.


2016-06-17: Version 5.3.254

        Performance and stability improvements on all platforms.


2016-06-17: Version 5.3.253

        Performance and stability improvements on all platforms.


2016-06-17: Version 5.3.252

        Performance and stability improvements on all platforms.


2016-06-17: Version 5.3.251

        Performance and stability improvements on all platforms.


2016-06-17: Version 5.3.250

        Performance and stability improvements on all platforms.


2016-06-16: Version 5.3.249

        Performance and stability improvements on all platforms.


2016-06-16: Version 5.3.248

        Performance and stability improvements on all platforms.


2016-06-16: Version 5.3.247

        Performance and stability improvements on all platforms.


2016-06-16: Version 5.3.246

        [es8] Unstage syntactic tail calls (issue 4915).

        [ic] LoadICState cleanup (Chromium issue 576312).

        Performance and stability improvements on all platforms.


2016-06-16: Version 5.3.245

        Performance and stability improvements on all platforms.


2016-06-16: Version 5.3.244

        [ic] Remove --new-load-global-ic switch (Chromium issue 576312).

        Performance and stability improvements on all platforms.


2016-06-16: Version 5.3.243

        Performance and stability improvements on all platforms.


2016-06-16: Version 5.3.242

        Performance and stability improvements on all platforms.


2016-06-16: Version 5.3.241

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.240

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.239

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.238

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.237

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.236

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.235

        [ic] Enable new LoadGlobalIC machinery (Chromium issue 576312).

        [ic] LoadGlobalIC is now able to cache PropertyCells in the feedback
        vector (Chromium issue 576312).

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.234

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.233

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.232

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.231

        Performance and stability improvements on all platforms.


2016-06-15: Version 5.3.230

        Performance and stability improvements on all platforms.


2016-06-14: Version 5.3.229

        [stubs] Ensure that StoreTransitionStub does not bailout after the
        properties backing store is enlarged (Chromium issue 601420).

        Performance and stability improvements on all platforms.


2016-06-14: Version 5.3.228

        [ic] Split LoadIC into LoadGlobalIC and LoadIC (Chromium issue 576312).

        Performance and stability improvements on all platforms.


2016-06-14: Version 5.3.227

        Performance and stability improvements on all platforms.


2016-06-14: Version 5.3.226

        Performance and stability improvements on all platforms.


2016-06-13: Version 5.3.225

        Performance and stability improvements on all platforms.


2016-06-13: Version 5.3.224

        Performance and stability improvements on all platforms.


2016-06-13: Version 5.3.223

        Performance and stability improvements on all platforms.


2016-06-13: Version 5.3.222

        change most cases of variable redeclaration from TypeError to
        SyntaxError (issue 4955).

        Performance and stability improvements on all platforms.


2016-06-13: Version 5.3.221

        Performance and stability improvements on all platforms.


2016-06-13: Version 5.3.220

        Performance and stability improvements on all platforms.


2016-06-13: Version 5.3.219

        Performance and stability improvements on all platforms.


2016-06-13: Version 5.3.218

        Performance and stability improvements on all platforms.


2016-06-13: Version 5.3.217

        Performance and stability improvements on all platforms.


2016-06-13: Version 5.3.216

        Performance and stability improvements on all platforms.


2016-06-12: Version 5.3.215

        Performance and stability improvements on all platforms.


2016-06-12: Version 5.3.214

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.213

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.212

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.211

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.210

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.209

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.208

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.207

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.206

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.205

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.204

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.203

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.202

        Performance and stability improvements on all platforms.


2016-06-10: Version 5.3.201

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.200

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.199

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.198

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.197

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.196

        [ic] [stubs] Remove InlineCacheState field from the code flags (Chromium
        issue 618701).

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.195

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.194

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.193

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.192

        [build] Use icu data file by default (Chromium issue 616033).

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.191

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.190

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.189

        Performance and stability improvements on all platforms.


2016-06-09: Version 5.3.188

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.187

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.186

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.185

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.184

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.183

        [build] Use sysroot for linux compilation with clang (Chromium issues
        474921, 616032).

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.182

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.181

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.180

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.179

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.178

        [icu] Support loading data file from default location (Chromium issue
        616033).

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.177

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.176

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.175

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.174

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.173

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.172

        Performance and stability improvements on all platforms.


2016-06-08: Version 5.3.171

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.170

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.169

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.168

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.167

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.166

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.165

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.164

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.163

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.162

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.161

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.160

        [runtime] Don't use ElementsTransitionAndStoreStub for transitions that
        involve instance rewriting (issue 5009, Chromium issue 617524).

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.159

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.158

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.157

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.156

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.155

        Performance and stability improvements on all platforms.


2016-06-07: Version 5.3.154

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.153

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.152

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.151

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.150

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.149

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.148

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.147

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.146

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.145

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.144

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.143

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.142

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.141

        Performance and stability improvements on all platforms.


2016-06-06: Version 5.3.140

        [build] Use sysroot for linux compilation with clang (Chromium issues
        474921, 616032).

        Performance and stability improvements on all platforms.


2016-06-05: Version 5.3.139

        Performance and stability improvements on all platforms.


2016-06-04: Version 5.3.138

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.137

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.136

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.135

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.134

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.133

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.132

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.131

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.130

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.129

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.128

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.127

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.126

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.125

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.124

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.123

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.122

        Performance and stability improvements on all platforms.


2016-06-03: Version 5.3.121

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.120

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.119

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.118

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.117

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.116

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.115

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.114

        [stubs] Extend HasProperty stub with dictionary-mode, string wrapper and
        double-elements objects support (issue 2743).

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.113

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.112

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.111

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.110

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.109

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.108

        Performance and stability improvements on all platforms.


2016-06-02: Version 5.3.107

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.106

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.105

        Extend HasProperty stub with dictionary-mode, string wrapper and double-
        elements objects support (issue 2743).

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.104

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.103

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.102

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.101

        [runtime] Ensure that all elements kind transitions are chained to the
        root map (issue 5009).

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.100

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.99

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.98

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.97

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.96

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.95

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.94

        Performance and stability improvements on all platforms.


2016-06-01: Version 5.3.93

        Performance and stability improvements on all platforms.


2016-05-31: Version 5.3.92

        Performance and stability improvements on all platforms.


2016-05-31: Version 5.3.91

        Performance and stability improvements on all platforms.


2016-05-31: Version 5.3.90

        Performance and stability improvements on all platforms.


2016-05-31: Version 5.3.89

        Performance and stability improvements on all platforms.


2016-05-31: Version 5.3.88

        Performance and stability improvements on all platforms.


2016-05-31: Version 5.3.87

        Performance and stability improvements on all platforms.


2016-05-31: Version 5.3.86

        Performance and stability improvements on all platforms.


2016-05-31: Version 5.3.85

        Performance and stability improvements on all platforms.


2016-05-31: Version 5.3.84

        Performance and stability improvements on all platforms.


2016-05-31: Version 5.3.83

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.82

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.81

        [api] Remove deprectated memory allocation callback API (issue 4813).

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.80

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.79

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.78

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.77

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.76

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.75

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.74

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.73

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.72

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.71

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.70

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.69

        Performance and stability improvements on all platforms.


2016-05-30: Version 5.3.68

        Performance and stability improvements on all platforms.


2016-05-29: Version 5.3.67

        Performance and stability improvements on all platforms.


2016-05-28: Version 5.3.66

        Performance and stability improvements on all platforms.


2016-05-28: Version 5.3.65

        Performance and stability improvements on all platforms.


2016-05-27: Version 5.3.64

        Performance and stability improvements on all platforms.


2016-05-27: Version 5.3.63

        Performance and stability improvements on all platforms.


2016-05-27: Version 5.3.62

        Performance and stability improvements on all platforms.


2016-05-27: Version 5.3.61

        Performance and stability improvements on all platforms.


2016-05-27: Version 5.3.60

        Performance and stability improvements on all platforms.


2016-05-27: Version 5.3.59

        Performance and stability improvements on all platforms.


2016-05-27: Version 5.3.58

        Performance and stability improvements on all platforms.


2016-05-27: Version 5.3.57

        Performance and stability improvements on all platforms.


2016-05-26: Version 5.3.56

        Performance and stability improvements on all platforms.


2016-05-26: Version 5.3.55

        Performance and stability improvements on all platforms.


2016-05-26: Version 5.3.54

        Performance and stability improvements on all platforms.


2016-05-26: Version 5.3.53

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.52

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.51

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.50

        TypedArray: Make byteOffset, byteLength, and length configurable (issue
        4902).

        Make %ThrowTypeError% function(s) strict (issue 4925).

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.49

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.48

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.47

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.46

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.45

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.44

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.43

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.42

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.41

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.40

        Performance and stability improvements on all platforms.


2016-05-25: Version 5.3.39

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.38

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.37

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.36

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.35

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.34

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.33

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.32

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.31

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.30

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.29

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.28

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.27

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.26

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.25

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.24

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.23

        Performance and stability improvements on all platforms.


2016-05-24: Version 5.3.22

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.21

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.20

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.19

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.18

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.17

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.16

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.15

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.14

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.13

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.12

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.11

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.10

        Performance and stability improvements on all platforms.


2016-05-23: Version 5.3.9

        Performance and stability improvements on all platforms.


2016-05-21: Version 5.3.8

        Performance and stability improvements on all platforms.


2016-05-21: Version 5.3.7

        Performance and stability improvements on all platforms.


2016-05-21: Version 5.3.6

        Performance and stability improvements on all platforms.


2016-05-20: Version 5.3.5

        Performance and stability improvements on all platforms.


2016-05-20: Version 5.3.4

        Performance and stability improvements on all platforms.


2016-05-20: Version 5.3.3

        Move case conversion with ICU to 'staged' (issues 4476, 4477).

        Performance and stability improvements on all platforms.


2016-05-20: Version 5.3.2

        Performance and stability improvements on all platforms.


2016-05-20: Version 5.3.1

        Move case conversion with ICU to 'staged' (issues 4476, 4477).

        Performance and stability improvements on all platforms.


2016-05-19: Version 5.2.371

        Performance and stability improvements on all platforms.


2016-05-19: Version 5.2.370

        Performance and stability improvements on all platforms.


2016-05-19: Version 5.2.369

        Performance and stability improvements on all platforms.


2016-05-19: Version 5.2.368

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.367

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.366

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.365

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.364

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.363

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.362

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.361

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.360

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.359

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.358

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.357

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.356

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.355

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.354

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.353

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.352

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.351

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.350

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.349

        Performance and stability improvements on all platforms.


2016-05-18: Version 5.2.348

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.347

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.346

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.345

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.344

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.343

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.342

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.341

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.340

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.339

        [wasm] remove extra nops in asm-wasm (issue 4203).

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.338

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.337

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.336

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.335

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.334

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.333

        Performance and stability improvements on all platforms.


2016-05-17: Version 5.2.332

        Performance and stability improvements on all platforms.


2016-05-16: Version 5.2.331

        Performance and stability improvements on all platforms.


2016-05-16: Version 5.2.330

        Performance and stability improvements on all platforms.


2016-05-16: Version 5.2.329

        Performance and stability improvements on all platforms.


2016-05-16: Version 5.2.328

        Add UseCounter for decimal with leading zero (issue 4973).

        [esnext] implement frontend changes for async/await proposal (issue
        4483).

        Performance and stability improvements on all platforms.


2016-05-16: Version 5.2.327

        Performance and stability improvements on all platforms.


2016-05-15: Version 5.2.326

        Performance and stability improvements on all platforms.


2016-05-14: Version 5.2.325

        Performance and stability improvements on all platforms.


2016-05-14: Version 5.2.324

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.323

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.322

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.321

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.320

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.319

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.318

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.317

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.316

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.315

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.314

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.313

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.312

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.311

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.310

        [api] Clarify expectations of ArrayBuffer::Allocator in API (Chromium
        issue 611688).

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.309

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.308

        Performance and stability improvements on all platforms.


2016-05-13: Version 5.2.307

        In parallel to the strict octal check that would reject `012` in strict
        mode, this patch collects UseCounters for `089` in strict mode. The spec
        says this should be an error, but this patch does not report it as such
        (issue 4973).

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.306

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.305

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.304

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.303

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.302

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.301

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.300

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.299

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.298

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.297

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.296

        Performance and stability improvements on all platforms.


2016-05-12: Version 5.2.295

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.294

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.293

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.292

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.291

        Use ICU case conversion/transliterator for case conversion (issues 4476,
        4477).

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.290

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.289

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.288

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.287

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.286

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.285

        Performance and stability improvements on all platforms.


2016-05-11: Version 5.2.284

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.283

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.282

        Fix Map::AsArray to properly iterate over the backing store (issue
        4946).

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.281

        Remove LOG line checking from presubmit.

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.280

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.279

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.278

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.277

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.276

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.275

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.274

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.273

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.272

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.271

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.270

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.269

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.268

        Performance and stability improvements on all platforms.


2016-05-10: Version 5.2.267

        Various species micro-optimizations (Chromium issue 609739).

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.266

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.265

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.264

        Fix TypedArray Property optimizations (Chromium issue 593634).

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.263

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.262

        [V8] Add v8::Value::TypeOf to API (Chromium issue 595206).

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.261

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.260

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.259

        Expose IsConstructor to the C++ API (issue 4993).

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.258

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.257

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.256

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.255

        Performance and stability improvements on all platforms.


2016-05-09: Version 5.2.254

        Performance and stability improvements on all platforms.


2016-05-08: Version 5.2.253

        Performance and stability improvements on all platforms.


2016-05-07: Version 5.2.252

        fix Set::AsArray to not leave undefined holes in output array (issue
        4946).

        Performance and stability improvements on all platforms.


2016-05-06: Version 5.2.251

        Performance and stability improvements on all platforms.


2016-05-06: Version 5.2.250

        Performance and stability improvements on all platforms.


2016-05-06: Version 5.2.249

        Performance and stability improvements on all platforms.


2016-05-06: Version 5.2.248

        Performance and stability improvements on all platforms.


2016-05-06: Version 5.2.247

        Performance and stability improvements on all platforms.


2016-05-06: Version 5.2.246

        Performance and stability improvements on all platforms.


2016-05-06: Version 5.2.245

        Performance and stability improvements on all platforms.


2016-05-06: Version 5.2.244

        Performance and stability improvements on all platforms.


2016-05-06: Version 5.2.243

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.242

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.241

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.240

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.239

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.238

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.237

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.236

        S390: Add HasProperty code stub that tries simple lookups or jumps to
        runtime otherwise (issue 2743).

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.235

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.234

        Make array __proto__ manipulations not disturb the species protector
        (Chromium issue 606207).

        Add v8::Object::GetOwnPropertyNames(context, filter) method (issue 3861,
        Chromium issue 581495).

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.233

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.232

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.231

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.230

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.229

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.228

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.227

        MIPS64: Fix [turbofan] Length and index2 are unsigned in
        CheckedLoad/CheckedStore (Chromium issue 599717).

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.226

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.225

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.224

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.223

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.222

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.221

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.220

        [wasm] Fix for 608630: allow proxies as FFI (Chromium issue 608630).

        Performance and stability improvements on all platforms.


2016-05-04: Version 5.2.219

        Performance and stability improvements on all platforms.


2016-05-03: Version 5.2.218

        Performance and stability improvements on all platforms.


2016-05-03: Version 5.2.217

        Performance and stability improvements on all platforms.


2016-05-03: Version 5.2.216

        [wasm] Disallow runtime calls in asm.js modules (Chromium issue 592352).

        [API] remove (deprecated) hidden properties.

        [wasm] Fix bug with empty input to Wasm.instantiateModuleFromAsm()
        (Chromium issue 605488).

        Add HasProperty code stub that tries simple lookups or jumps to runtime
        otherwise (issue 2743).

        Fix ExternalTwobyteStringUtf16CharacterStream::PushBack(kEndOfInput)
        (Chromium issue 607903).

        Performance and stability improvements on all platforms.


2016-05-03: Version 5.2.215

        Performance and stability improvements on all platforms.


2016-05-03: Version 5.2.214

        Performance and stability improvements on all platforms.


2016-05-03: Version 5.2.213

        Performance and stability improvements on all platforms.


2016-05-03: Version 5.2.212

        Performance and stability improvements on all platforms.


2016-05-03: Version 5.2.211

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.210

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.209

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.208

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.207

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.206

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.205

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.204

        [debugger] Add JSProxy support in Runtime::GetInternalProperties
        (Chromium issue 588705).

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.203

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.202

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.201

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.200

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.199

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.198

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.197

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.196

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.195

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.194

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.193

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.192

        Performance and stability improvements on all platforms.


2016-05-02: Version 5.2.191

        Performance and stability improvements on all platforms.


2016-05-01: Version 5.2.190

        Performance and stability improvements on all platforms.


2016-05-01: Version 5.2.189

        Performance and stability improvements on all platforms.


2016-04-30: Version 5.2.188

        Performance and stability improvements on all platforms.


2016-04-30: Version 5.2.187

        Performance and stability improvements on all platforms.


2016-04-30: Version 5.2.186

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.185

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.184

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.183

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.182

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.181

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.180

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.179

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.178

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.177

        Fix overflow issue in Zone::New (Chromium issue 606115).

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.176

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.175

        [wasm] Binary 11: Bump module version to 0xB. [wasm] Binary 11: Swap the
        order of section name / section length. [wasm] Binary 11: Shorter
        section names. [wasm] Binary 11: Add a prefix for function type
        declarations. [wasm] Binary 11: Function types encoded as pcount, p*,
        rcount, r* [wasm] Fix numeric names for functions (Chromium issue
        575167).

        [wasm] Binary 11: WASM AST is now postorder. [wasm] Binary 11: br_table
        takes a value. [wasm] Binary 11: Add implicit blocks to if arms. [wasm]
        Binary 11: Add arities to call, return, and breaks [wasm] Binary 11: Add
        experimental version (Chromium issue 575167).

        Performance and stability improvements on all platforms.


2016-04-29: Version 5.2.174

        Add checks for detached ArrayBuffers to ArrayBuffer.prototype.slice
        (issue 4964).

        Performance and stability improvements on all platforms.


2016-04-28: Version 5.2.173

        Performance and stability improvements on all platforms.


2016-04-28: Version 5.2.172

        Performance and stability improvements on all platforms.


2016-04-28: Version 5.2.171

        Ship for-in initializer deprecation (issue 4942).

        Performance and stability improvements on all platforms.


2016-04-28: Version 5.2.170

        Add GC request to libFuzzers in attempt to avoid parasitic coverage
        (Chromium issue 584819).

        Performance and stability improvements on all platforms.


2016-04-28: Version 5.2.169

        Performance and stability improvements on all platforms.


2016-04-28: Version 5.2.168

        Prevent unnecessary memory (de-)allocations in LiteralBuffer::CopyFrom
        (issue 4947).

        Performance and stability improvements on all platforms.


2016-04-28: Version 5.2.167

        Performance and stability improvements on all platforms.


2016-04-28: Version 5.2.166

        Performance and stability improvements on all platforms.


2016-04-28: Version 5.2.165

        Performance and stability improvements on all platforms.


2016-04-28: Version 5.2.164

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.163

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.162

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.161

        [esnext] stage --harmony-string-padding (issue 4954).

        Disallow generator declarations in certain locations (issue 4824).

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.160

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.159

        [api] Expose FunctionCallbackInfo::NewTarget (issue 4261).

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.158

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.157

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.156

        [es8] Report proper syntax error for tail call expressions in for-in and
        for-of bodies (issue 4915).

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.155

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.154

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.153

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.152

        Performance and stability improvements on all platforms.


2016-04-27: Version 5.2.151

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.150

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.149

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.148

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.147

        Do not penalize performance when --harmony-species is off (Chromium
        issue 606207).

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.146

        [es8] Initial set of changes to support syntactic tail calls (issue
        4915).

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.145

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.144

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.143

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.142

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.141

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.140

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.139

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.138

        [es6] Fix tail call elimination in single-expression arrow functions
        (issue 4698).

        Performance and stability improvements on all platforms.


2016-04-26: Version 5.2.137

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.136

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.135

        Widen --harmony-for-in flag to throw errors in PreParser (issue 4942).

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.134

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.133

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.132

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.131

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.130

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.129

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.128

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.127

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.126

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.125

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.124

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.123

        Performance and stability improvements on all platforms.


2016-04-25: Version 5.2.122

        Performance and stability improvements on all platforms.


2016-04-22: Version 5.2.121

        Performance and stability improvements on all platforms.


2016-04-22: Version 5.2.120

        Performance and stability improvements on all platforms.


2016-04-22: Version 5.2.119

        Performance and stability improvements on all platforms.


2016-04-22: Version 5.2.118

        Performance and stability improvements on all platforms.


2016-04-22: Version 5.2.117

        [debugger] Hide scopes that originate from desugaring (Chromium issue
        604458).

        Performance and stability improvements on all platforms.


2016-04-22: Version 5.2.116

        Performance and stability improvements on all platforms.


2016-04-22: Version 5.2.115

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.114

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.113

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.112

        [ic] Restore PROPERTY key tracking in keyed ICs (Chromium issue 594183).

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.111

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.110

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.109

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.108

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.107

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.106

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.105

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.104

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.103

        Performance and stability improvements on all platforms.


2016-04-21: Version 5.2.102

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.101

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.100

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.99

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.98

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.97

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.96

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.95

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.94

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.93

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.92

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.91

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.90

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.89

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.88

        [turbofan] Length and index2 are unsigned in CheckedLoad/CheckedStore
        (Chromium issue 599717).

        Prevent un-parsed LiteralFunction reaching the compiler (Chromium issue
        604044).

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.87

        Performance and stability improvements on all platforms.


2016-04-20: Version 5.2.86

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.85

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.84

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.83

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.82

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.81

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.80

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.79

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.78

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.77

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.76

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.75

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.74

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.73

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.72

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.71

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.70

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.69

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.68

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.67

        Performance and stability improvements on all platforms.


2016-04-19: Version 5.2.66

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.65

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.64

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.63

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.62

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.61

        [Atomics] Remove Atomics code stubs; use TF ops (issue 4614).

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.60

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.59

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.58

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.57

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.56

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.55

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.54

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.53

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.52

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.51

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.50

        [Atomics] Remove Atomics code stubs; use TF ops (issue 4614).

        Performance and stability improvements on all platforms.


2016-04-18: Version 5.2.49

        [api] Bring back finalizers on global handles.

        Performance and stability improvements on all platforms.


2016-02-17: Sentinel

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

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: 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:
