The blob and nullable types are not customizable. Also is_blob and
is_nullable traits are not part of container concept.
Closes https://github.com/Microsoft/bond/pull/805
Every change (well, most every) to the master branch produces a new
Docker image (for our Linux CI builds). However, we don't use each new
image. Instead, occasionally someone updates .travis.yml to point to a
new image. Thus, there's a build up of Docker images in the repository
that aren't being used.
These images are garbage: garbage in the sense that they're not
reachable from any of the .travis.yml roots.
This commit adds a script that can be used to find and remove these
garbage images.
Given a set of filters to find root commits (e.g., we can specify all
tags and all commits in the past two weeks), the script finds all the
referenced Docker images in the various revisions to .travis.yml. It
then compares the referenced images to those present in the repository,
skips images that are too new to be collected, and--for now--prints the
`az` CLI command to remove that image.
The `az` CLI is implemented in Python, so Python is going to be
available wherever `az` is. Since this script was a bit too complicated
for a shell script, Python 3 was chosen as its implementation language.
This script is intended to be run inside a VSTS build using the Azure
CLI task [1]. However, it will work anywhere that `az login` has been
run and given credentials with read/write access to the
bondciimages.azurecr.io repository.
[1]: https://github.com/Microsoft/vsts-tasks/blob/master/Tasks/AzureCLI/Readme.md
Linux scripts need to always have LF. If not, things like building a
Docker image from Windows will result in un-runable scripts. Update
.gitattributes so these files are always checked out LF.
Use the "headless" JDK in the Travis CI image to avoid installing a
bunch of X11 (and related) packages that we don't need. This also
reduces the size of the image.
After getting this commit into master, the next step is to wait for a
new image to be built and then consume that image in .travis.yml.
[skip ci]
* Remove duplicate "Service" section.
* Remove incorrect "Service method" that talked about passing messages
and services, which was never implemented in gbc.
When using CMake to build, the zlib submodule inside of the grpc
submodule ends up with a generated file that makes Git consider the
submodule dirty. This state can be ignored for day-to-day development.
This is the first step in enabling Boost 1.66 CI build on Travis. After
an image is produced that contains Boost 1.66, we still need to consume
that image in .travis.yml and add 1.66 to the configuration matrix.
I've locally tested that Bond builds and the basic tests pass with Boost
1.66 using Clang.
Fixes a race condition when `bond::ext::gRPC::io_manager::shutdown` and
`bond::ext::gRPC::io_manager::wait` are called concurrently. The functions
are not mutually exclusive and the latter destroys the
`grpc::CompletionQueue` which is not necessary.
Fixes https://github.com/Microsoft/bond/issues/744
The bond::ext::gRPC::io_manager expects pointers to bond::ext::gRPC::io_manager_tag base when it receives void* tags. However, we are are directly passing a pointer to derived type instead of explicitly casting to base (which does not cause issues due to current layout of those objects).
Simplifies the StaticParser<Input>::ReadFields function when used with protocols that do not implement field omitting by excluding some run-time code paths.
Simplifies the `bonded<void, Reader>::_Apply` function when used with
protocols that specify `uses_marshaled_bonded<Reader>` to be `false_type`
(currently all except `Simple`) by excluding some run-time code paths.
With this change deserialization will now fail by throwing `bond::CoreException` when `BT_STOP` is encountered while deserializing a base struct.
Fixes https://github.com/Microsoft/bond/issues/742
* This fixes broken C# codegen when a service method has attributes.
* Add both C++ and C# unit test to make sure that service and method
attributes are properly generated and accessible.
Fixes https://github.com/Microsoft/bond/issues/617
* Use `docker pull` to download a pre-built image from
bondciimages.azurecr.io instead of `wget` then `docker load`.
* This speeds up image downloading by about 25%.
* Update tools/ci-scripts/linux/image-builder/README.md to indicate that
images are built automatically in a Microsoft VSTS build queue.
* Delete helper build_image.zsh and upload_image.zsh scripts.
When a service contains events or parameter-less methods, the generated
code uses `bond::Void` as the request/result type. To serialize
`bond::Void`, bond_reflection.h needs to be included.
The generated service code now includes bond_reflection.h if any service
contains an event or a parameter-less method.
Fixes https://github.com/Microsoft/bond/issues/735
- gbc can only be built with GHC >= 8.0.1
- stack resolver has been updated
- improve error messages
- add a comment about parser ordering to avoid regression
- added python script to compare gbc outputs
The change adds overloads of `Serializer::Field` function that avoids generating calls to `detail::omit_field` in the cases where the result is known at compilation. This makes the compilation a bit faster (it depends on actual types being used, but the expected estimate would be 3-5%) and also likely to generate faster, smaller and more efficient runtime code when compiler fails to optimize away the above calls.
* Use `#pragma once` everywhere.
* Every header now include `<bond/core/config.h>` before anything else.
* Includes are done in sections, from least general to most general.
* Includes within each section are sorted in lexicographical order.
* CODING_GUIDELINES_CPP.md added to capture these guidelines.