Ns-3.42 errata
On May 29, 2024, ns-3.42 was published. This page lists some issues that have been fixed in the mainline since that time. If considered impactful enough, the maintainers may make an update to this release to cover some or all of these issues.
Python bindings for M1/M2/M3-based Macs are unnecessarily disabled
Until recently, there was a limitation on the use of cppyy on macOS silicon. This limitation was lifted when we moved to cppyy version 3.1.2 (the version compatible with ns-3.42), but a constraint in the CMake scripts still prevents Python from working.
The below patch can be used on the file build-support/macros-and-definitions.cmake to remove this restriction:
diff --git a/build-support/macros-and-definitions.cmake b/build-support/macros-and-definitions.cmake index c893d5b02..0afd9b8cf 100644 --- a/build-support/macros-and-definitions.cmake +++ b/build-support/macros-and-definitions.cmake @@ -684,14 +684,6 @@ macro(process_options) "Bindings: python bindings require Python, but it could not be found" ) set(ENABLE_PYTHON_BINDINGS_REASON "missing dependency: python") - elseif(APPLE AND "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64") - # Warn users that Cppyy on ARM Macs isn't supported yet - message(${HIGHLIGHTED_STATUS} - "Bindings: macOS silicon detected -- see issue 930" - ) - set(ENABLE_PYTHON_BINDINGS_REASON - "macOS silicon detected -- see issue 930" - ) else() check_deps(missing_packages PYTHON_PACKAGES cppyy) if(missing_packages)
examples/routing/manet-routing-compare.cc produces no output
The example program 'manet-routing-compare.cc' runs but produces no output. This is due to a bug preventing use of DSSS rates 5.5 and 11 Mbps. The workaround is to avoid these rates:
diff --git a/examples/routing/manet-routing-compare.cc b/examples/routing/manet-routing-compare.cc index a105ab0d2..e1dee99e0 100644 --- a/examples/routing/manet-routing-compare.cc +++ b/examples/routing/manet-routing-compare.cc @@ -247,7 +247,7 @@ RoutingExperiment::Run() double TotalTime = 200.0; std::string rate("2048bps"); - std::string phyMode("DsssRate11Mbps"); + std::string phyMode("DsssRate2Mbps"); std::string tr_name("manet-routing-compare"); int nodeSpeed = 20; // in m/s int nodePause = 0; // in s
Another solution is to avoid use of 802.11b entirely and use another standard. There is an open issue to fix this in the mainline.
Minimum supported Apple Clang compiler should be 13.1.6 instead of 11
In 3.42 we replaced some code with the std::bind_front function. This causes the ns-3 build to fail under Apple Clang 11, as reported in issue.
According to the Cppreference support page, Apple Clang 13.1.6 (shipped with Xcode 13.3) is supported. We recommend updating Xcode.