Goose  Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

163 check-ins using file bs/ir/decompose.inl version 35633b8b6f

2019-08-08
23:24
Implemented the assignation operator. check-in: 3a2f2c23ab user: achavasse tags: trunk
16:53
  • Implemented the local variable unification rule, which allows to read them.
  • Fixed comparison operators not returning bools.
check-in: c9a44e2fb9 user: achavasse tags: trunk
14:29
Implemented the assignment operator of an expression to a decl of the same type, which declares and initialize a local variable. check-in: 90ab7b489f user: achavasse tags: trunk
09:59
Implemented the localvar builtin type. check-in: 3e177bc8cf user: achavasse tags: trunk
2019-08-07
19:31
Cleanup: removed an unused file. check-in: 45f56c570b user: achavasse tags: trunk
19:10
llr, execute, codegen: implemented the SetVar instruction. check-in: a7d4b38ca5 user: achavasse tags: trunk
17:29
llr, execute, codegen: implemented the AllocVar and GetVar instructions. check-in: b0b8db5e09 user: achavasse tags: trunk
16:07
execute: removed the old local var functions in frame, and reimplemented them using the new temporary system. Function args are now also handled through this. check-in: 391fc3dedd user: achavasse tags: trunk
14:50
codegen: function arguments are now stored in allocas. check-in: e15e6a6e20 user: achavasse tags: trunk
01:56
  • Implemented some missing compile time instruction execution for unsigned ints.
  • C++ integer types are now mapped to fixed size integer types, rather than BigInt, now that the former are available at compile time.
  • The binary shift operators for ct_int now take an uint32 as their right hand side operand, rather than a ct_int.
check-in: a67a742689 user: achavasse tags: trunk
2019-08-06
23:07
Fixed size integers are now supported by compile time execution. check-in: 8714554a92 user: achavasse tags: trunk
22:51
Fixed size integers can now be represented as compile time values. check-in: f469cad435 user: achavasse tags: trunk
22:22
Renamed runtime types, because most of them (except pointers) will have to be available during compile time as well, so their names may as well be generic. check-in: fbc9052f6a user: achavasse tags: trunk
21:31
Updated .ll codegen test files that have changed after updating llvm. check-in: 97f68b01c9 user: achavasse tags: trunk
16:17
Cleanup: use the equality operator in tests now that it is available. check-in: 036f80c021 user: achavasse tags: trunk
16:04
Implemented comparison operators. check-in: 56107a5d5e user: achavasse tags: trunk
15:28
llr, execute, codegen: implemented comparison instructions. check-in: 08d543eea8 user: achavasse tags: trunk
12:15
Implemented arithmetic operators. check-in: d2db15fbbc user: achavasse tags: trunk
11:40
llr, execute, codegen: implemented arithmetic instructions. check-in: 270fa5b77b user: achavasse tags: trunk
00:33
  • Improved the operator parsing rules construction helpers to support both an unary and an infix operators sharing the same identifier.
  • Updated the comma operator implementation to use the same helpers as other operators, which makes it possible to overload it.
check-in: 035cf4826c user: achavasse tags: trunk
2019-08-05
21:14
Fixed shift operators precedence. check-in: 4fe0527143 user: achavasse tags: trunk
21:04
Implemented the shift operators. check-in: 2fdf1d1929 user: achavasse tags: trunk
20:07
Implemented the bitwise not, bitwise and and bitwise or operators. check-in: c7acd1eba0 user: achavasse tags: trunk
19:02
llr, execute, codegen: Implemented the And, Or, Shl, LShr and AShr instructions. check-in: c44aed7937 user: achavasse tags: trunk
17:47
Fixed a typo. check-in: b65e87c8ce user: achavasse tags: trunk
17:46
Implemented a wrapper around llvm::APSInt for compile time integers to manage mixing operations on integers of different bitsizes, and to automatically extend them as needed. check-in: 2bee844d3c user: achavasse tags: trunk
02:45
  • Unification now works in two passes. The second pass gives unification rules a chance to match again after all the holes have been resolved and substituted.
  • Fixed many horrible bugs in various unification rules that managed to go by unnoticed until the above change, after which they made everything catch on fire.
  • Simplified the ct_int and ct_string unification rules to take advantage of the new unification behavior. Everything finally works as intended wrt to ct_int versus RT integers.
  • Removed unification callbacks. It was a system to provide a way to perform unification work post hole substitution, so it is now obsolete.
check-in: 43e22af793 user: achavasse tags: trunk
2019-08-04
12:53
logic ops: forbid xor between runtime integers of different signedness. check-in: 011df3c4d3 user: achavasse tags: trunk
00:38
Improved the vscode syntax highlighting. check-in: e535403270 user: achavasse tags: trunk
00:04
Apply the ct_int unification fix to ct_string unification. check-in: 5a80915ee6 user: achavasse tags: trunk
2019-08-03
23:38
Fixed the ct_int unification rule, which didn't work correctly against generic function parameters. check-in: 18e3bfa195 user: achavasse tags: trunk
19:29
Implemented the runtime bitwise xor operator. check-in: 1886f5f367 user: achavasse tags: trunk
17:16
  • lexer: handle hex and binary integer literals.
  • builtins: implemented the logic and the compile-time bitwise xor operator.
check-in: bd7954bf0c user: achavasse tags: trunk
14:10
Added support for signed runtime integers and fixed multiple issues with ct_integer to runtime integer conversion. check-in: c7b1aea0a6 user: achavasse tags: trunk
12:08
builtins: added a mechanism to customize the patterns used to match parameter types in builtin function, to be able to create builtin generic functions. check-in: 2f3c7d306a user: achavasse tags: trunk
2019-08-02
23:26
Cleanup: removed an unused method. check-in: 69d5b9d0cc user: achavasse tags: trunk
22:35
Implemented the logic and operator. check-in: 7395ea3ffc user: achavasse tags: trunk
22:28
  • Implemented an "inline cfg" llr instruction that transfer execution control to another CFG.
  • Used the above in the logic or operator, which now works.
check-in: 9a6ae2acd0 user: achavasse tags: trunk
14:32
  • Removed ComplexVariable and related support code in llr. This will be replaced with a much better system.
  • Temporaries are now identified both by a cfg identifier, and an index within that cfg.
check-in: de2ecb573c user: achavasse tags: trunk
2019-08-01
22:49
Implemented the logic or operator. Not functional yet due to an architectural flaw. check-in: d939807dfa user: achavasse tags: trunk
21:11
parser: implemented ComplexValue, which is a value bundled with a CFG whose execution or insertion is a prerequisite to use the value. check-in: 79a134aa8e user: achavasse tags: trunk
20:25
  • CFGs keep track of the number of temporaries that they use
  • Temporaries indices are updated when appending a CFG to another, to avoid collisions
  • Phi now stores its result into a new temporary, instead of returning it directly (Phi has to be at the beginning of a basic block so we can't attach it directly to a value)
check-in: 59b1c58c70 user: achavasse tags: trunk
19:35
llr:
  • Added a function to append a CFG at the end of a specific basick block of another CFG.
  • CFGs can now be eagerly evaluated.
check-in: c1a795a64f user: achavasse tags: trunk
16:35
Cleanup: got rid of a bunch of header files that each contained only one function prototype. check-in: cc50e8025d user: achavasse tags: trunk
15:53
  • Rewrote the operator helpers: they now generate and invoke an overloadable intrinsic.
  • Implemented the logical not operator.
check-in: ed31e6303b user: achavasse tags: trunk
13:53
builtins: implemented intrinsic functions. check-in: b15874568f user: achavasse tags: trunk
2019-07-31
23:27
llr, execute, codegen: implemented the Xor instruction. check-in: 5ec364bc88 user: achavasse tags: trunk
22:40
builtins: implemented some helpers to easily create builtin operators with overloadable extension points. check-in: 39f2220e39 user: achavasse tags: trunk
19:06
llr, execute, codegen: added the Phi instruction. check-in: 52f162f30a user: achavasse tags: trunk
17:20
llr, execute, codegen: added the CreateTemporary instruction. check-in: 498281afd4 user: achavasse tags: trunk
16:06
Function's llr representations lifetimes are now handled by Env, and function values only contain raw pointers to their LLR. This is to avoid leaks with recursive functions. check-in: 1effb3a67a user: achavasse tags: trunk
14:05
Fixed some cyclic reference issues with cyclic CFGs:
  • Moved and renamed sema::CFGBuilder to llr::CFG.
  • llr::Func now owns a CFG pointer, rather than a pointer to its entry BB.
  • Branch and CondBranch now store weak pointers to their target BB.
check-in: d19a6bf065 user: achavasse tags: trunk
10:10
Small cleanup. check-in: 4464b9355c user: achavasse tags: trunk
09:35
Created a syntax highlighting vscode extension for .em files. check-in: a311d6a33e user: achavasse tags: trunk
07:50
Minor fixes. check-in: b288174776 user: achavasse tags: trunk
00:07
Compile time integers are now represented with infinite precision by using llvm::APSInt. check-in: 9988bc3dc8 user: achavasse tags: trunk
2019-07-30
22:44
Implemented the #if statement. check-in: 1767c5b87e user: achavasse tags: trunk
22:09
Cleanup. check-in: 527297d900 user: achavasse tags: trunk
22:05
  • Builtin functions are now explicitely marked if they need to be evaluated eagerly.
  • Using errors out if the expression doesn't evaluate to a constant.
check-in: 3c074f1b7d user: achavasse tags: trunk
20:20
Implemented the if statement. check-in: 866b8caaca user: achavasse tags: trunk
14:25
parser: setup proper visibility rules for nested brace blocks. check-in: 09150fdc1c user: achavasse tags: trunk
13:20
sema: extended cfgbuilder to handle multiple basic blocks. check-in: d3d40f668d user: achavasse tags: trunk
12:46
llr, execute, codegen: implemented Branch and CondBranch. check-in: 3c78ba6139 user: achavasse tags: trunk
2019-07-29
20:01
Implemented the builtin bool type, cleaned up things here and there by making use of it. check-in: e6ed8750c4 user: achavasse tags: trunk
16:40
frontend: use the source filename as the module name. check-in: 71dce5b655 user: achavasse tags: trunk
16:11
First rudimentary version of the front-end. Added a more civilized hello world sample. check-in: c73275098a user: achavasse tags: trunk
15:50
In preparation to implement the first version of the front end, made the current direct file execution behavior available through a special command line options, to keep the current tests working. check-in: c34657ae47 user: achavasse tags: trunk
15:35
Builtins: added a couple of builtin utility string functions needed to bring up the frontend. check-in: de781b5a85 user: achavasse tags: trunk
14:44
Embedded lld and added builtin functions to invoke it. The shitty hello world sample now performs all the steps to produce a functional binary. check-in: 16a9039350 user: achavasse tags: trunk
01:15
  • Fixed a stupid, recent bug in using that was preventing it from registering the import rule to make things from its parent scope visible.
  • Fixed some issues with functions and domains.
  • Added a sample program that (almost) constructs a working hello world binary, manually for now in the absence of a proper front end.
check-in: c1b9248768 user: achavasse tags: trunk
2019-07-28
17:22
codegen: added functions to set the target for a module, and to output a module either as an asm or as an object file. check-in: 0d6a77f7ab user: achavasse tags: trunk
2019-07-27
15:20
codegen: added a function to run the LLVM optimization passes on a module (with default optimization settings for the time being). check-in: db120ccb3a user: achavasse tags: trunk
13:08
Updated a test reference file. check-in: f93a7e7cb4 user: achavasse tags: trunk
13:04
Implemented external runtime functions. check-in: 6a99df8278 user: achavasse tags: trunk
2019-07-26
23:52
  • builtins: added an unification rule of ct_string against runtime byte pointer, that emits a "load constant string" instruction.
  • codegen: load string constant: generate global llvm constant byte arrays and deduplicate them.
check-in: 7bddd62bf9 user: achavasse tags: trunk
22:30
  • Implemented an unification rule of ct_integer versus rt_integer.
  • Fixed multiple bugs related to compile time eager evaluation.
  • Fixed incorrect usage of CompileFunc which resulted in not actually calling the domain specific version of the function.
check-in: f31afce8ce user: achavasse tags: trunk
18:33
llr, codegen: implemented "load constant" instructions for integers and strings. check-in: 443351dafe user: achavasse tags: trunk
16:57
codegen: generate basic blocks. check-in: 8574428775 user: achavasse tags: trunk
13:41
llr:
  • removed GetVar/SetVar for now, to be reintroduced later when implementing local vars.
  • added GetArg, a specific instruction to access function arguments (because codegen will need to treat this differently than accessing a local var).
check-in: efcc646794 user: achavasse tags: trunk
09:28
Added license file. check-in: 7ae7a08ed3 user: achavasse tags: trunk
02:14
codegen: generate correct function types. check-in: 5c095a9872 user: achavasse tags: trunk
01:50
Fix the Env never being deleted due to captured shared_ptr in some builtin functions which created reference cycles. check-in: 1eb3c4a890 user: achavasse tags: trunk
2019-07-25
22:30
Enable ThinLTO. check-in: cd65a705fd user: achavasse tags: trunk
22:17
codegen: handle function types in LowerType(). check-in: 8816e0b6e9 user: achavasse tags: trunk
15:50
builtins: extend GetLLVMType() to handle function types. check-in: eb91eeb361 user: achavasse tags: trunk
15:37
builtins: llvm types are now built and stored at a standard location in the ir expressions of runtime types. check-in: 3f9a7b5082 user: achavasse tags: trunk
14:09
Have the llvm context be a static instance instead of being owned by the Env object, so that we can access it anywhere. check-in: c5a38bbeae user: achavasse tags: trunk
2019-07-24
20:15
func type: change the term encoding to include a void pointer that will be used to link to the function's llvm type, if any. check-in: 403761ee88 user: achavasse tags: trunk
11:41
codegen: revised mangling, allow opaque pointers to be mangled since they are going to appear in native type identities, even though we don't care about what they point to for that purpose. check-in: 86893043c5 user: achavasse tags: trunk
11:03
ir:
  • get rid of the ability for a term to contain a pointer to another term (not used anymore)
  • terms can contain void pointers (to be used to link the term representation of runtime types to their corresponding llvm types)
check-in: 8e5fcb6557 user: achavasse tags: trunk
2019-03-22
21:42
Func: finally abandon the Term type which adds too much overhead and can be lived without, but instead store the signature directly as the param types, inside of the function type. check-in: 0618ab859e user: achavasse tags: trunk
21:03
Func: param unification. check-in: d62116e3e8 user: achavasse tags: trunk
20:28
Func: added Param type. check-in: dc1e1c4c16 user: achavasse tags: trunk
20:13
Use the entire callee value to look up invocation rules rather than just their type, and restricted template invocation to constant tfunc values. check-in: 0ecc71a91f user: achavasse tags: trunk
2019-03-19
20:17
Higher-order functions: implemented BuildArgPatternFromFuncType() and BuildArgPatternFromTFuncType(). check-in: 65cbac9aa3 user: achavasse tags: trunk
2019-03-18
21:00
Invocation rule: added "prepareFunc" method. check-in: 48e869cb9a user: achavasse tags: trunk
20:41
Split out the retrieval/construction of a template instance into a separate function. check-in: 2847fd86e7 user: achavasse tags: trunk
2019-03-17
20:56
Sema: terms can now be wrapped along with a post processing function. This is similar to the substitute call back, but it is invoked after the best unification solution has been chosen. check-in: 396ab349c6 user: achavasse tags: trunk
15:54
Sema: terms can now be wrapped along with a callback to be invoked by Substitute(). check-in: dd70f4c696 user: achavasse tags: trunk
11:49
Added a way to quote an expression so that its content is ignored during unification, and used it for function signatures. check-in: 68eda7b3fe user: achavasse tags: trunk
00:13
Functions: store the signature alongside the body rather than in the type, to be consistent with template functions. check-in: cce96c5a25 user: achavasse tags: trunk
2019-03-16
23:19
Overloading: parse function overloading, and multiple fixes. Overloading now works. check-in: 9089b014a2 user: achavasse tags: trunk
21:27
Overloading: the first time a function or function template declaration is encountered, it is stored in a new overloadset. check-in: 224370818a user: achavasse tags: trunk
20:46
Overloading: some preliminary function parsing refactoring. check-in: eba916730b user: achavasse tags: trunk
17:39
Overloading: implemented OverloadSet's invocation rule. check-in: 44403d3ab8 user: achavasse tags: trunk
15:19
Overloading: implemented OverloadSet::add() check-in: 5f82b82cc8 user: achavasse tags: trunk
2019-03-15
20:34
Overloading: added OverloadSet type. check-in: aebe047a28 user: achavasse tags: trunk
19:18
Overloading: added tests for, and fixed utrie unification. check-in: 88099a9cee user: achavasse tags: trunk
2019-03-13
22:55
Overloading: added tests for, and fixed utrie merging and half-unification. check-in: 8e1924aea5 user: achavasse tags: trunk
2019-03-10
19:20
Overloading: first untested draft of utrie unification. check-in: 403ca496c8 user: achavasse tags: trunk
2019-03-07
21:08
Overloading: implemented merging of a vector into an UTrie. check-in: 3519ef74a6 user: achavasse tags: trunk
2019-03-03
16:05
Overloading: added UniTrie class. check-in: 16cb791757 user: achavasse tags: trunk
15:39
Overloading: split out the unification from resolveInvocation(). check-in: 6d6a036678 user: achavasse tags: trunk
15:00
Added return types to function signatures, so that any TExpr constraint they may contain are taken into account during unification. check-in: e87aad0ef1 user: achavasse tags: trunk
2019-03-02
21:01
Function calls are now eagerly evaluated during parsing. check-in: 8a8e76084e user: achavasse tags: trunk
12:33
llr: added predicates to quickly test if an llr element is suitable for compilation time execution, or for eager evaluation. check-in: d2c4e27b15 user: achavasse tags: trunk
2019-02-27
23:04
  • Sema: added a way to define a "three way unification" sub expression.
  • Templates: used the above to generate a proper signature for TDecls, and fixed an issue with TVars.
check-in: 931f31882e user: achavasse tags: trunk
22:05
Templates:
  • Fixed the incorrect context passed to the template rule setup function, which caused TVars to create their bindings in the wrong place.
  • Added missing setup functions for decl template rules.
check-in: 0cdc45df01 user: achavasse tags: trunk
2019-02-26
22:59
Templates: Some fixes. Template functions can be successfully called. check-in: ffc50d08f4 user: achavasse tags: trunk
2019-02-25
23:14
Template: completed the implementation of the various decl template rules. check-in: e969a61da0 user: achavasse tags: trunk
21:25
Func: signatures can now include constant values, which need to match for the call to succeed. This is needed for template instantiation and will be needed for specializations once overloading is implemented. check-in: af7df64748 user: achavasse tags: trunk
2019-02-24
23:23
Templates: add missing storage of newly built instances in the invocation rule. check-in: 37f430afe6 user: achavasse tags: trunk
23:18
Templates: implemented the template function invocation rule. Some pieces are still missing before it can work. check-in: 12c9e92618 user: achavasse tags: trunk
15:37
Templates: implemented the template rules for Decl, TDecl, TNamedDecl and TVar. check-in: 1c4c7dde4c user: achavasse tags: trunk
2019-02-23
17:04
Templates: parse template function types, expressions and declarations. check-in: bc7b56fb86 user: achavasse tags: trunk
2019-02-22
21:43
Templates: implemented BuildTFuncType() and BuildTFunc(). check-in: 114cdaf51b user: achavasse tags: trunk
2019-02-21
21:38
Handle template decls in CheckParamListKind(), plus some minor cleanup. check-in: c4ea2e2754 user: achavasse tags: trunk
2019-02-20
22:34
Implemented the colon infix operator to explicitely build a Decl, TDecl or TNamedDecl. It will be useful in the future to build TDecls with a more complex TExpr than just a TVar on the rhs, it can be omitted otherwise. check-in: c22f37bc75 user: achavasse tags: trunk
21:22
Templates: implemented the infix variant of the dollar operator as a shortcut to construct TDecls where the rhs is a TVar. check-in: 1b651c004f user: achavasse tags: trunk
20:42
Templates: parse template named decls (like regular decls, but with a TExpr instead of a type). check-in: 6a9c80643f user: achavasse tags: trunk
2019-02-18
21:54
Parser:
  • Make the resolver skip newlines by default, and provide an additional "raw" api to retrieve unresolved tokens without skipping newlines.
  • Parsing rules now only return a bool to indicate whether they were successful, and can push any number of values themselves as needed.
  • Stop trying to shoehorn implicit separators in the pratt parser. Instead, use the pratt parser only for expressions, and use a different parsing loop for sequences of expressions (ie for brace blocks and top level).
check-in: 23e0cd5dc7 user: achavasse tags: trunk
2019-02-16
18:58
Templates: implemented the $ operator. check-in: 2d3dd4c2b2 user: achavasse tags: trunk
16:48
Some reorganization of template types. check-in: 054862b9f5 user: achavasse tags: trunk
13:19
Templates: added TNamedDecl type. check-in: 06665441a7 user: achavasse tags: trunk
2019-02-15
17:52
Moved function and function type construction into builtin/types/func, it doesn't really belong in sema. check-in: 8fb71ebfa3 user: achavasse tags: trunk
2019-02-14
23:11
Templates: added TFunc type. check-in: aec44da323 user: achavasse tags: trunk
22:46
Templates: added TFuncType type. check-in: 3de7b67281 user: achavasse tags: trunk
22:36
Templates: added TVar type. check-in: 2d763f32b8 user: achavasse tags: trunk
22:12
Templates: added TDecl type. check-in: 46417155c1 user: achavasse tags: trunk
20:35
Fix using statement not skipping newline markers before the expression. check-in: 0b6a7a10ee user: achavasse tags: trunk
2019-02-13
21:51
Templates: added template rules base classes. check-in: 12db48f235 user: achavasse tags: trunk
21:03
Split the builtin types directory into sub directories. check-in: eab1b7ec57 user: achavasse tags: trunk
2019-02-12
21:53
Implemented function declarations. check-in: 1cdacffc17 user: achavasse tags: trunk
21:18
Func: implement lazy body parsing. check-in: ca43fee365 user: achavasse tags: trunk
2019-02-11
22:44
  • Resolver: implemented an utility function to gather blocks as lists of tokens without parsing them, for when we want to perform lazy parsing.
  • Parser: fixed some bugs with the current delimiter getting lost in nested parsers, which caused spurious misplaced end delimiter error messages.
check-in: 91eda406ef user: achavasse tags: trunk
2019-02-10
16:32
Implemented function parameters. check-in: 64a8240bdc user: achavasse tags: trunk
15:29
llr, execute: implemented SetVar and GetVar. check-in: 5d287cd878 user: achavasse tags: trunk
2019-02-07
21:38
Change the llr representation of functions. check-in: 90002fe240 user: achavasse tags: trunk
2019-02-06
22:16
Add a relevant comment for future reference regarding the visibility of the oustide context from within functions. check-in: 0c510ab2bc user: achavasse tags: trunk
22:08
Parser: properly handle empty brace blocks. check-in: f85d5d289e user: achavasse tags: trunk
22:02
First working version of non-builtin functions. Parameters aren't handled yet. check-in: e46bf5d7e5 user: achavasse tags: trunk
20:39
Parser: parse function expressions. check-in: f35a2c529c user: achavasse tags: trunk
2019-02-05
23:45
  • ir: fixed matching variable length vectors stored in tries.
  • sema: fixed importing namespaces.
  • builtins: fixed using statement not using the correct context identity when lazily parsing the contained expression.
  • parser: now parse brace blocks.
  • parser: more work on function expressions parsing.
check-in: bf6da54506 user: achavasse tags: trunk
2019-02-04
21:41
Parser: parse function type expressions. check-in: 63faac8273 user: achavasse tags: trunk
20:54
Builtins: implemented some helpers to construct function types from parameter lists. check-in: c4c2aa50c1 user: achavasse tags: trunk
2019-02-03
21:44
Builtins: split builtin function related code into separate files. check-in: 0b110c6235 user: achavasse tags: trunk
21:35
  • Moved decl and function invocation rules out of sema and into builtins, as it makes more sense.
  • Implemented a helper to determine if a tuple is a valid parameter list.
check-in: 2e672cd033 user: achavasse tags: trunk
12:01
Parser: parse decls. check-in: bbef786dbb user: achavasse tags: trunk
11:43
Sema: implemented Decl and its conversion from/to ir. check-in: 883bfdaa35 user: achavasse tags: trunk
10:53
Fix a future potential issue when parsing using statements. check-in: 85624bef14 user: achavasse tags: trunk
2019-02-02
18:01
Implemented the builtin using statement. check-in: 79b3438adc user: achavasse tags: trunk
17:11
Sema: Env: implemented functions to import all of the content of a namespace into another. check-in: bd0cdbeca7 user: achavasse tags: trunk
16:13
ir: added helpers to make a new vector by dropping elements at the beginning or at the end of a source vector. check-in: 26221286db user: achavasse tags: trunk