c++chromiumv8embedded-v8

Does Google's V8 require C++14 standard?


I am currently trying to build Google's V8 engine, following its official documents.

And I get some errors here:

  1. Need a newer glibc
    python ../../tools/run.py ./bytecode_builtins_list_generator gen/builtins-generated/bytecodes-builtins-list.h
    ./bytecode_builtins_list_generator: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./bytecode_builtins_list_generator)
    Return code is 1
    [115/1639] CXX obj/torque_base/torque-parser.o
    
  2. Some C++14 grammar Such as in include/v8-internal.h, there is a std::remove_cv_t
    template <class T>
    V8_INLINE void PerformCastCheck(T* data) {
      CastCheck<std::is_base_of<Data, T>::value &&
                !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
    }
    

When looking into its building procedure, I find it actually uses third_party/llvm-build/Release+Asserts/bin/clang++ with a -std=c++14 flag.

So I am wondering if I can build a V8 engine with some old gcc, like gcc 4.4.6/4.8.5?


Solution

  • Yes, V8 currently requires C++14.

    Expect future changes to be in the direction of requiring C++17 (though there's no timeline for that yet), rather than going back to older C++ standards.