Skip to content
  1. Jun 10, 2013
  2. Mar 03, 2013
    • Scott McKay's avatar
      In the spirit of making CL-Protobufs represent exemplary modern Common Lisp code: · 7ed71234
      Scott McKay authored
       - Use 'defparameter' instead of 'defvar' where appropriate.
       - Fix 'defvar' doc strings to distinguish between globals and "thread locals".
       - Avoid using 'nconc'. introduce a new 'appendf' macro instead.
       - Add a comment lamenting the fact that exporting something like 'proto-options'
         also exports the writer '(setf proto-options)'. Fixed in Dylan.
      7ed71234
  3. Mar 01, 2013
  4. Feb 26, 2013
  5. Feb 21, 2013
  6. Feb 20, 2013
    • Alejandro R Sedeño's avatar
      parser.lisp: tweak method parsing · 6ac9510c
      Alejandro R Sedeño authored
      Don't assume that returning no options meant there was no body in the
      method declaration. An empty body may have been there
      instead. Distinguish that scenario with a second return value from
      PARSE-PROTO-METHOD-OPTIONS and use that value in PARSE-PROTO-METHOD
      determine whether or not to look for a semicolon.
      6ac9510c
  7. Jan 07, 2013
    • Alejandro R Sedeño's avatar
      parser.lisp: set up fall-back package names · 7655cda6
      Alejandro R Sedeño authored
      Robert Brown's protobuf package falls back on the java_package option
      as the lisp package name when there isn't a package declaration in the
      schema. Emulate that behavior for better compatibility between code
      generated by the packages.
      7655cda6
  8. Jan 03, 2013
  9. Dec 17, 2012
  10. Dec 09, 2012
  11. Dec 04, 2012
  12. Nov 27, 2012
    • Ben Wagner's avatar
      fix cross-package and forward references in cl-protobufs · 8520d6ef
      Ben Wagner authored
      * Previously, if a field in a .proto file referenced a message in
        another proto file using a different lisp package, the cl-protobufs
        library would silently fail to serialize the field.  A similar
        problem would occur if a message defined later in the file used the
        lisp_name option to override the name generated by cl-protobufs.
        This change fixes these issues and others.
      * Add conditions that are signaled when encountering an undefined
        type.
      * Delay assigning lisp classes/types to fields and methods until all
        possible forward references have been parsed.
         * This allows the class slot to be unbound, so check for that case
           in print-object methods.
         * Add a test for forward references to messages that override the
           lisp name.
         * Add a test for references to messages and enums defined in
           another proto file with a different lisp package.
         * Change color-wheel-stability test, because it used "string" as
           the input type for an rpc, which seems to be disallowed (although
           I haven't found this documented anywhere).
      * Signal errors during parsing for undefined types.
         * Add a test for these errors.  Add assert-error macro to qtest.
      * Signal a condition if we are unable to find the definition for a
        field's type during serialization, deserialization, determining an
        object's serialized size, printing text format, parsing text format,
        or generating code for one of the above.
      * Remove logic in find-qualified-name that indirects through lisp
        packages.  Proto packages and lisp packages do not necessarily map
        1-to-1.
      * Always use the schema's lisp package for any symbols generated when
        parsing proto files.
      * When generating lisp code using write-schema-as, set the package to
        the package used in the generated file, so that ~s will print the
        package prefix in the correct circumstances.
      * Remove broken proto1 "streams" parsing ("returns" comes before
        "streams" in every example I've found); replace with proto2 syntax.
      * In process-imports, the call to find-schema using a pathname was not
        giving the expected result.  Sidestep this issue by using the same
        logic to find the schema as is used earlier in the function.
      8520d6ef
  13. Sep 12, 2012
    • Scott McKay's avatar
      Fix some user-reported bugs · 5dc5d8d1
      Scott McKay authored
      Testing : precheckin --full --strict-errors
      Reviewer: Sergey V, Shaun M
      
      JTB impact: No
      Ops impact: No
      
      Change to config                        : No
      Change to XML schema                    : No
      Change to DB schema                     : No
      Change to transport (timeouts, headers) : No
      Any change (or new use) of OAQs         : No
      Change to inter-component transactions  : No
      Depends on any other checkin / bug      : No
      
      Tests that will verify:
      
      The CL-Protobufs tests
      
      Description:
      
      I had made a "policy decision" that the package created
      by importing a .proto file would (:use :common-lisp). In
      practice, this turned out to be a mistake. Sergey suggested
      a fix that I think is correct, so in it goes.
      
      Shaun noticed that the optimized 'serialize-object' and
      'object-size' methods didn't quite implement what they were
      supposed to for optional boolean fields whose value was never
      supplied. Fix the optimized methods to implement the same
      (correct) semantics as the unoptimized ones.
      
      
      
      git-svn-id: http://svn.internal.itasoftware.com/svn/ita/trunk/qres/lisp/libs/cl-protobufs@561714 f8382938-511b-0410-9cdd-bb47b084005c
      5dc5d8d1
  14. Sep 07, 2012
    • Scott McKay's avatar
      Add a few missing features that aren't in any documentation. · 5d4236e6
      Scott McKay authored
      Testing : precheckin --full --strict-errors
      Reviewer: Fare (please)
      
      JTB impact: No
      Ops impact: No
      
      Change to config                        : No
      Change to XML schema                    : No
      Change to DB schema                     : No
      Change to transport (timeouts, headers) : No
      Any change (or new use) of OAQs         : No
      Change to inter-component transactions  : No
      Depends on any other checkin / bug      : No
      
      Tests that will verify:
      
      I extended the CL-Protobufs examples
      
      Description:
      
      Add a few missing features that aren't in any documentation.
      
      String literals can look like "foo"<whitespace>"bar".
       - Fix 'parse-string' to handle this.
      
      Option values can be complex structures, not just atoms.
       - If 'parse-proto-option' sees a '{' character after the '=',
         it should use 'parse-text-format' to read the option value.
       - Fix the 'protobuf-option' printer to call 'print-text-format'
         for complex option values.
       - Minor refactoring to the text format parser and printer in
         order to support the above.
      
      
      
      git-svn-id: http://svn.internal.itasoftware.com/svn/ita/trunk/qres/lisp/libs/cl-protobufs@560639 f8382938-511b-0410-9cdd-bb47b084005c
      5d4236e6
  15. Sep 04, 2012
    • Scott McKay's avatar
      Add stub support for streaming RPC APIs. · 5293ada2
      Scott McKay authored
      Testing : precheckin --full --strict-errors
      Reviewer: Fare (please)
      
      JTB impact: No
      Ops impact: No
      
      Change to config                        : No
      Change to XML schema                    : No
      Change to DB schema                     : No
      Change to transport (timeouts, headers) : No
      Any change (or new use) of OAQs         : No
      Change to inter-component transactions  : No
      Depends on any other checkin / bug      : No
      
      Tests that will verify:
      
      I extended the CL-Protobufs tests
      
      Description:
      
      Add support for a 'streams' type in Protobufs RPC methods.
       - Add a few slots to 'protobufs-method'
       - Add '&key streams' to the method arglists in 'define-service'
       - Extend the parser to handle "streams" in addition to the
         'streams_type' option
       - Extend the printer
       - Change a test to use a 'streams' type
       - While we're in the neighborhood, allow an optional '=>'
         between the input and output methods in 'define-service';
         it makes it a bit more readable
       - Update the documen...
      5293ada2
  16. Aug 28, 2012
  17. Aug 27, 2012
  18. Aug 24, 2012
  19. Jun 28, 2012
  20. Jun 27, 2012
  21. Jun 26, 2012
  22. Jun 18, 2012
  23. Jun 14, 2012
  24. Jun 13, 2012
  25. Jun 11, 2012
  26. Jun 05, 2012
  27. Jun 01, 2012
  28. May 30, 2012
  29. May 25, 2012
  30. May 23, 2012
  31. May 22, 2012
    • Scott McKay's avatar
      Add more stuff to the test suite, and fix what it uncovered. · b6317f29
      Scott McKay authored
       - Behavior of ':default xxx'/[default=xxx] was not stable,
         so add an "empty default" marker and respect it during
         parsing and printing.
       - 'find-option' now returns a third "found-p" value, useful
         for the better handling of defaults.
       - Don't print slot readers/writers if they have the same name
         as what would be (silently) generated by the macrology.
       - Don't print 'import descriptor.proto' lines if there are
         no 'lisp_xxx' options in the generated code.
       - Add 'clear-field' to the API; add the functions it needs.
       - Be more careful about how :conc-name interacts with the
         generation of readers/writers.
       - When parsing from a .proto file, force the conc-name to
         be "" unless requested explicitly not to. This has the
         effect of generating readers/writers for all the fields
         of imported Protobufs messages, which I think is probably
         the desired behavior.
       - Add 'make-byte-vector' for convenience.
      
      Passes 'precheckin'. Even with the new unit tests in place.
      
      
      git-svn-id: http://svn.internal.itasoftware.com/svn/ita/trunk/qres/lisp/quux/protobufs@545177 f8382938-511b-0410-9cdd-bb47b084005c
      b6317f29
  32. May 18, 2012
    • Scott McKay's avatar
      Now that Protobufs has a test suite, it found a few things to fix. · 0d1611ab
      Scott McKay authored
       - Don't generate warnings for anonymous enums, they're harmless
         and ubiquitous.
       - 'member' types where are all the members are keywords, is a symbol,
         which got converted to a Protobufs 'string'. Wrong.
       - If a field has an enum type, the (Lisp) default value should be
         treated as a keyword.
       - When parsing a .proto file or using the 'define-xxx' macros, any
         options that are handled specially should be trimmed from the
         options list so that they don't get printed twice.
       - Add 'remove-options' for the above.
       - Make the options printer be more type-aware.
       - Clean up examples.lisp
       - 'schemas-equal' can ignore the schema name/class if they're null.
      
      Passes 'precheckin'. Even with the new unit tests in place.
      
      
      git-svn-id: http://svn.internal.itasoftware.com/svn/ita/trunk/qres/lisp/quux/protobufs@544737 f8382938-511b-0410-9cdd-bb47b084005c
      0d1611ab
  33. May 16, 2012
    • Scott McKay's avatar
      At Sergey's request, make some of the names better: · a31c828e
      Scott McKay authored
       - 'define-proto' -> 'define-schema'
       - 'protobuf' (class name) -> 'protobuf-schema'
       - 'find-protobuf' -> 'find-schema'
       - 'parse-protobuf-from-file' -> 'parse-schema-from-file'
       - 'parse-protobuf-from-stream' -> 'parse-schema-from-file'
       - 'write-protobuf' -> 'write-schema'
       - 'write-protobuf-as' -> 'write-schema-as'
       - 'ensure-all-protobufs' -> 'ensure-all-protobufs'
       - 'ensure-protobuf' -> 'ensure-protobuf'
       - 'protobuf-upgradable' -> 'schema-upgradable'
       - 'protobufs-equal' -> 'schemas-equal'
       - 'generate-protobuf-schema-for-classes' -> 'generate-schema-for-classes'
       - 'write-protobuf-schema-for-classes' -> 'write-schema-for-classes'
      
      Update the Quake Protobufs schema generator to use the new names.
      
      The Protobufs documentation doesn't say so, but enums can be packed.
       - Update the wire-level protocol to (de)serialize packed enums.
       - Update the serialization code to use the new wire functions.
      
      Passes 'precheckin'.
      
      
      git-svn-id: http://svn.internal.itasoftware.com/svn/ita/trunk/qres/lisp/quux/protobufs@544299 f8382938-511b-0410-9cdd-bb47b084005c
      a31c828e
  34. May 14, 2012
    • Scott McKay's avatar
      A few more model fixes to fully support google/protobuf/unittest.proto · 4157162a
      Scott McKay authored
      (I love this file, it's got one of everything.)
      
       - The printer should not print extended fields in any message
         that further extends an extended message.
       - If parsing or importing a .proto file needs a Lisp package that
         does not exist, go ahead and create it.
       - Importing now tracks all the schemas imported by the "parent",
         this so that we can search namespaces thoroughly.
       - It looks like 'define-extend' can accept groups. For a deprecated
         feature, it sure is a pain in the neck.
       - Make 'find-message' and 'find-enum' search all namespaces.
       - Print escaped strings, just for completeness.
       - Annotate a couple of common options with their types.
      
      Passes 'precheckin'. Passes my by-hand tests and is epsilon away from
      handling the worst .proto file around.
      
      
      git-svn-id: http://svn.internal.itasoftware.com/svn/ita/trunk/qres/lisp/quux/protobufs@543912 f8382938-511b-0410-9cdd-bb47b084005c
      4157162a
  35. May 13, 2012
    • Scott McKay's avatar
      Get google/protobuf/unittest.proto working, insofar as it parses · 3d3775ce
      Scott McKay authored
      completely and produces what appears to be a correct model. Next
      up, ensure (de)serialization works with this complex beast, which
      sets the stage for running the (very complete) Google tests.
      
       - Be much more careful to preserve type information in option
         values and field defaults, both in the macros and the parser.
         Make the slots in their model objects be untyped.
       - This makes it easier for the Proto and Lisp printers to produce
         exactly the right output, so fix them, too. Be extra careful
         with booleans.
       - Fix the printer to recognize more of the standard options so
         that their values get printed with the correct type.
       - Learn to parse more complicated numeric and integer constants.
       - Learn to parse escaped strings.
       - Learn to parse comma-separated options.
       - Learn to parse extensions with no 'to' specifier.
       - Fix the places that used (deprecated) :single instead of :float.
       - Proto enum values always map to Lisp keywords, so don't futz
         with packages for them.
       - Add some more doc strings.
       - Add some more examples-that-will-become-tests.
      
      Passes 'precheckin'. Passes my by-hand tests.
      
      
      git-svn-id: http://svn.internal.itasoftware.com/svn/ita/trunk/qres/lisp/quux/protobufs@543727 f8382938-511b-0410-9cdd-bb47b084005c
      3d3775ce
  36. May 10, 2012
  37. May 09, 2012
  38. May 08, 2012